diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 00000000..e5b6d8d6 --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 00000000..7602f50d --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@1.7.0/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": false, + "fixed": [], + "linked": [], + "ignore": [], + "baseBranch": "v3", + "access": "restricted", + "updateInternalDependencies": "patch" +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..6e87a003 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..eaf85faf --- /dev/null +++ b/.env.example @@ -0,0 +1,32 @@ +# Reactive Resume +TZ=UTC +NODE_ENV=development +SECRET_KEY=change-me + +# Public URLs +APP_URL=http://localhost:3000 +SERVER_URL=http://localhost:3100 + +# Database +POSTGRES_HOST=localhost +POSTGRES_PORT=5432 +POSTGRES_USERNAME=postgres +POSTGRES_PASSWORD=postgres +POSTGRES_DATABASE=reactive_resume + +# Auth +JWT_SECRET=change-me +JWT_EXPIRY_TIME=604800 + +# Mail +MAIL_HOST= +MAIL_PORT= +MAIL_USERNAME= +MAIL_PASSWORD= + +# Google OAuth +GOOGLE_CLIENT_ID=change-me +GOOGLE_CLIENT_SECRET=change-me + +# Google Web Fonts +GOOGLE_API_KEY=change-me diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..02770a14 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,58 @@ +{ + "root": true, + "ignorePatterns": ["**/*"], + "plugins": ["@nrwl/nx"], + "extends": ["prettier"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": { + "@nrwl/nx/enforce-module-boundaries": [ + "error", + { + "enforceBuildableLibDependency": true, + "allow": [], + "depConstraints": [ + { + "sourceTag": "*", + "onlyDependOnLibsWithTags": ["*"] + } + ] + } + ] + } + }, + { + "files": ["*.ts", "*.tsx"], + "extends": ["plugin:@nrwl/nx/typescript"], + "plugins": ["simple-import-sort", "unused-imports"], + "rules": { + // TypeScript ESLint + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + + // Simple Import Sort + "simple-import-sort/imports": "error", + "simple-import-sort/exports": "error", + + // Unused Imports + "no-unused-vars": "off", + "unused-imports/no-unused-imports": "error", + "unused-imports/no-unused-vars": [ + "warn", + { + "vars": "all", + "varsIgnorePattern": "^_", + "args": "none", + "argsIgnorePattern": "^_" + } + ] + } + }, + { + "files": ["*.js", "*.jsx"], + "extends": ["plugin:@nrwl/nx/javascript"], + "rules": {} + } + ] +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..091025d0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,44 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db + +# Environment Variables +.env +.env.* +!.env.example diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 00000000..8758dc2e --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,5 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx changeset version +npm run lint && npm run format diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..b6f27f13 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..1a2f5bd2 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +lts/* \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..d0b804da --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +# Add files here to ignore them from prettier formatting + +/dist +/coverage diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..3f584f60 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "printWidth": 120, + "singleQuote": true +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..b34605b8 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + "recommendations": [ + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "firsttris.vscode-jest-runner", + "lokalise.i18n-ally", + "nrwl.angular-console" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..35eadacc --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,13 @@ +{ + "css.validate": false, + "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true, + "editor.wordWrap": "on", + "i18n-ally.keystyle": "nested", + "i18n-ally.localesPaths": ["apps/client/public/locales"], + "i18n-ally.namespace": true, + "i18n-ally.pathMatcher": "{locale}/{namespaces}.{ext}", + "i18n-ally.sortKeys": true, + "scss.validate": false +} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..e4e074cf --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog | Reactive Resume + +## 3.0.0 + +### Major Changes + +- Initial Release of Reactive Resume v3 diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000..2126190c --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,20 @@ +Copyright (c) 2020-2022 Amruth Pillai + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 00000000..6ba28ad3 --- /dev/null +++ b/README.md @@ -0,0 +1,84 @@ +Reactive Resume + +# Reactive Resume + +### [Go to App](https://rxresu.me/) | [Sample Resume](https://google.com/) + +Reactive Resume is a free and open source resume builder that’s built to make the mundane tasks of creating, updating and sharing your resume as easy as 1, 2, 3. With this app, you can create multiple resumes, share them with recruiters through a unique link and print as PDF, all for free, no advertisements, without losing the integrity and privacy of your data. + +You have complete control over what goes into your resume, how it looks, what colors, what templates, even the layout in which sections placed. Want a dark mode resume? It’s as easy as editing 3 values and you’re done. You don’t need to wait to see your changes either. Everything you type, everything you change, appears immediately on your resume and gets updated in real time. + +## Features + +- Free, forever +- No Advertising +- No Tracking (no 🍪s too) +- Sync your data across devices +- Accessible in multiple languages +- Import data from [LinkedIn](https://www.linkedin.com/), [JSON Resume](https://jsonresume.org/) +- Manage multiple resumes with one account +- Open Source (with large community support) +- Send your resume to others with a unique sharable link +- Pick any font from [Google Fonts](https://fonts.google.com/) to use on your resume +- Choose from 6 vibrant templates and more coming soon +- Export your resume to JSON or PDF format with just one click +- Create an account using your email, or just Sign in with Google +- Mix and match colors to any degree, even a dark mode resume? +- Add sections, add pages and change layouts the way you want to +- Tailor-made Backend and Database, isolated from Google, Amazon etc. +- **Oh, and did I mention that it's free?** + +## Build from Source + +1. Clone the repository locally, or use GitHub Codespaces or CodeSandbox + +``` +git clone https://github.com/AmruthPillai/Reactive-Resume.git +cd Reactive-Resume +``` + +2. I prefer to use `pnpm`, but you can use anything to install dependencies (`npm`/`yarn`) + +``` +pnpm install +``` + +3. Copy the .env.example files to .env in multiple locations and fill it with values according to your setup + +``` +cp .env.example .env +cp apps/client/.env.example apps/client/.env +cp apps/server/.env.example apps/server/.env +``` + +4. Use Docker Compose to create a PostgreSQL instance and a `reactive_resume` database, or feel free to use your own and modify the variables used in `.env` + +``` +docker-compose up -d +``` + +5. Run the project and start building! + +``` +pnpm start +``` + +## Contributing + +Please refer to the project's style and contribution guidelines for submitting pull requests. +In general, this project follows the "fork-and-pull" Git workflow. + +1. **Fork** the repo on GitHub +2. **Clone** the project to your own machine +3. **Commit** changes to your own branch +4. **Push** your work back up to your fork +5. Submit a **Pull Request** so that we can review your changes + +NOTE: Be sure to merge the latest from `main` before making a pull request! + +## License + +Reactive Resume is packaged and distributed using the [MIT License](https://choosealicense.com/licenses/mit/) which allows for commercial use, distribution, modification and private use provided that all copies of the software contain the same license and copyright. + +_By the community, for the community._ +A passion project by [Amruth Pillai](https://amruthpillai.com/) diff --git a/apps/.gitkeep b/apps/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/apps/client/.env.example b/apps/client/.env.example new file mode 100644 index 00000000..f8a0923a --- /dev/null +++ b/apps/client/.env.example @@ -0,0 +1,2 @@ +NEXT_PUBLIC_APP_VERSION=$npm_package_version +NEXT_PUBLIC_GOOGLE_CLIENT_ID=$GOOGLE_CLIENT_ID \ No newline at end of file diff --git a/apps/client/.eslintrc.json b/apps/client/.eslintrc.json new file mode 100644 index 00000000..518bfc81 --- /dev/null +++ b/apps/client/.eslintrc.json @@ -0,0 +1,23 @@ +{ + "extends": ["plugin:@nrwl/nx/react-typescript", "../../.eslintrc.json", "next", "next/core-web-vitals"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": { + "@next/next/no-html-link-for-pages": ["error", "apps/client/pages"] + } + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ], + "env": { + "jest": true + } +} diff --git a/apps/client/components/build/Center/ArtboardController.module.scss b/apps/client/components/build/Center/ArtboardController.module.scss new file mode 100644 index 00000000..c8a0367d --- /dev/null +++ b/apps/client/components/build/Center/ArtboardController.module.scss @@ -0,0 +1,28 @@ +.container { + @apply flex w-auto items-center justify-center; + @apply fixed inset-x-0 bottom-6; + @apply transition-[margin-left,margin-right] duration-200; +} + +.pushLeft { + @apply xl:ml-[30vw] 2xl:ml-[28vw]; +} + +.pushRight { + @apply xl:mr-[30vw] 2xl:mr-[28vw]; +} + +.controller { + @apply z-20 flex items-center justify-center shadow-lg; + @apply flex rounded-l-full rounded-r-full px-4; + @apply bg-neutral-50 dark:bg-neutral-800; + @apply opacity-70 transition-opacity duration-200 hover:opacity-100; + + > button { + @apply px-2.5 py-2.5; + } + + > hr { + @apply mx-3 h-5 w-0.5 bg-neutral-900/40 dark:bg-neutral-50/20; + } +} diff --git a/apps/client/components/build/Center/ArtboardController.tsx b/apps/client/components/build/Center/ArtboardController.tsx new file mode 100644 index 00000000..d6f53589 --- /dev/null +++ b/apps/client/components/build/Center/ArtboardController.tsx @@ -0,0 +1,135 @@ +import { + AlignHorizontalCenter, + AlignVerticalCenter, + Download, + FilterCenterFocus, + InsertPageBreak, + Link, + ViewSidebar, + ZoomIn, + ZoomOut, +} from '@mui/icons-material'; +import { ButtonBase, Divider, Tooltip } from '@mui/material'; +import clsx from 'clsx'; +import { get } from 'lodash'; +import { useTranslation } from 'next-i18next'; +import toast from 'react-hot-toast'; +import { useMutation } from 'react-query'; +import { ReactZoomPanPinchRef } from 'react-zoom-pan-pinch'; + +import { ServerError } from '@/services/axios'; +import { printResumeAsPdf, PrintResumeAsPdfParams } from '@/services/printer'; +import { togglePageBreakLine, togglePageOrientation, toggleSidebar } from '@/store/build/buildSlice'; +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import getResumeUrl from '@/utils/getResumeUrl'; + +import styles from './ArtboardController.module.scss'; + +const ArtboardController: React.FC = ({ zoomIn, zoomOut, centerView }) => { + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const resume = useAppSelector((state) => state.resume); + const { left, right } = useAppSelector((state) => state.build.sidebar); + const orientation = useAppSelector((state) => state.build.page.orientation); + + const { mutateAsync, isLoading } = useMutation(printResumeAsPdf); + + const handleTogglePageBreakLine = () => dispatch(togglePageBreakLine()); + + const handleTogglePageOrientation = () => dispatch(togglePageOrientation()); + + const handleToggleSidebar = () => { + dispatch(toggleSidebar({ sidebar: 'left' })); + dispatch(toggleSidebar({ sidebar: 'right' })); + }; + + const handleCopyLink = async () => { + const url = getResumeUrl(resume, { withHost: true }); + await navigator.clipboard.writeText(url); + + toast.success(t('common.toast.success.resume-link-copied')); + }; + + const handleExportPDF = async () => { + const download = (await import('downloadjs')).default; + + const slug = get(resume, 'slug'); + const username = get(resume, 'user.username'); + + const url = await mutateAsync({ username, slug }); + + download(url); + }; + + return ( +
+
+ + zoomIn(0.25)}> + + + + + + zoomOut(0.25)}> + + + + + + centerView(0.95)}> + + + + + + + + + {orientation === 'vertical' ? ( + + ) : ( + + )} + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ ); +}; + +export default ArtboardController; diff --git a/apps/client/components/build/Center/Center.module.scss b/apps/client/components/build/Center/Center.module.scss new file mode 100644 index 00000000..fb89d56c --- /dev/null +++ b/apps/client/components/build/Center/Center.module.scss @@ -0,0 +1,13 @@ +.center { + @apply mx-0 flex flex-grow pt-12 lg:pt-16; + @apply transition-[margin-left,margin-right] duration-200; + @apply bg-neutral-200 dark:bg-neutral-900; +} + +.wrapper { + @apply h-full w-full #{!important}; +} + +.artboard { + @apply flex gap-8; +} diff --git a/apps/client/components/build/Center/Center.tsx b/apps/client/components/build/Center/Center.tsx new file mode 100644 index 00000000..eb5a0b60 --- /dev/null +++ b/apps/client/components/build/Center/Center.tsx @@ -0,0 +1,57 @@ +import clsx from 'clsx'; +import get from 'lodash/get'; +import isEmpty from 'lodash/isEmpty'; +import { TransformComponent, TransformWrapper } from 'react-zoom-pan-pinch'; + +import { useAppSelector } from '@/store/hooks'; + +import ArtboardController from './ArtboardController'; +import styles from './Center.module.scss'; +import Header from './Header'; +import Page from './Page'; + +const Center = () => { + const orientation = useAppSelector((state) => state.build.page.orientation); + + const resume = useAppSelector((state) => state.resume); + const layout: string[][][] = get(resume, 'metadata.layout'); + + if (isEmpty(resume)) return null; + + return ( +
+
+ + + {(controllerProps) => ( + <> + +
+ {layout.map((_, pageIndex) => ( + + ))} +
+
+ + + + )} +
+
+ ); +}; + +export default Center; diff --git a/apps/client/components/build/Center/Header.module.scss b/apps/client/components/build/Center/Header.module.scss new file mode 100644 index 00000000..3c0e399e --- /dev/null +++ b/apps/client/components/build/Center/Header.module.scss @@ -0,0 +1,25 @@ +.header { + @apply mx-0 flex justify-between shadow; + @apply bg-neutral-800 text-neutral-100; + @apply transition-[margin-left,margin-right] duration-200; + + button > svg { + @apply text-base text-neutral-100; + } +} + +.pushLeft { + @apply xl:ml-[30vw] 2xl:ml-[28vw]; +} + +.pushRight { + @apply xl:mr-[30vw] 2xl:mr-[28vw]; +} + +.title { + @apply flex items-center justify-center; + + h1 { + @apply ml-2; + } +} diff --git a/apps/client/components/build/Center/Header.tsx b/apps/client/components/build/Center/Header.tsx new file mode 100644 index 00000000..a8d85769 --- /dev/null +++ b/apps/client/components/build/Center/Header.tsx @@ -0,0 +1,216 @@ +import { + ChevronLeft as ChevronLeftIcon, + ChevronRight as ChevronRightIcon, + CopyAll, + Delete, + DriveFileRenameOutline, + Home as HomeIcon, + KeyboardArrowDown as KeyboardArrowDownIcon, + Link as LinkIcon, +} from '@mui/icons-material'; +import { + AppBar, + IconButton, + ListItemIcon, + ListItemText, + Menu, + MenuItem, + Toolbar, + Tooltip, + useMediaQuery, + useTheme, +} from '@mui/material'; +import { Resume } from '@reactive-resume/schema'; +import clsx from 'clsx'; +import get from 'lodash/get'; +import { useRouter } from 'next/router'; +import { useTranslation } from 'next-i18next'; +import { useEffect, useMemo, useState } from 'react'; +import toast from 'react-hot-toast'; +import { useMutation } from 'react-query'; + +import { RESUMES_QUERY } from '@/constants/index'; +import { ServerError } from '@/services/axios'; +import queryClient from '@/services/react-query'; +import { deleteResume, DeleteResumeParams, duplicateResume, DuplicateResumeParams } from '@/services/resume'; +import { setSidebarState, toggleSidebar } from '@/store/build/buildSlice'; +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import { setModalState } from '@/store/modal/modalSlice'; +import getResumeUrl from '@/utils/getResumeUrl'; + +import styles from './Header.module.scss'; + +const Header = () => { + const theme = useTheme(); + + const router = useRouter(); + + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const isDesktop = useMediaQuery(theme.breakpoints.up('lg')); + + const [anchorEl, setAnchorEl] = useState(null); + + const { mutateAsync: duplicateMutation } = useMutation(duplicateResume); + + const { mutateAsync: deleteMutation } = useMutation(deleteResume); + + const resume = useAppSelector((state) => state.resume); + const { left, right } = useAppSelector((state) => state.build.sidebar); + + const name = useMemo(() => get(resume, 'name'), [resume]); + + useEffect(() => { + if (isDesktop) { + dispatch(setSidebarState({ sidebar: 'left', state: { open: true } })); + dispatch(setSidebarState({ sidebar: 'right', state: { open: true } })); + } else { + dispatch(setSidebarState({ sidebar: 'left', state: { open: false } })); + dispatch(setSidebarState({ sidebar: 'right', state: { open: false } })); + } + }, [isDesktop, dispatch]); + + const toggleLeftSidebar = () => dispatch(toggleSidebar({ sidebar: 'left' })); + + const toggleRightSidebar = () => dispatch(toggleSidebar({ sidebar: 'right' })); + + const goBack = () => router.push('/dashboard'); + + const handleClick = (event: React.MouseEvent) => { + setAnchorEl(event.currentTarget); + }; + + const handleClose = () => { + setAnchorEl(null); + }; + + const handleRename = () => { + handleClose(); + + dispatch( + setModalState({ + modal: 'dashboard.rename-resume', + state: { + open: true, + payload: { + item: resume, + onComplete: (newResume: Resume) => { + queryClient.invalidateQueries(RESUMES_QUERY); + + router.push(`/${resume.user.username}/${newResume.slug}/build`); + }, + }, + }, + }) + ); + }; + + const handleDuplicate = async () => { + handleClose(); + + const newResume = await duplicateMutation({ id: resume.id }); + + queryClient.invalidateQueries(RESUMES_QUERY); + + router.push(`/${resume.user.username}/${newResume.slug}/build`); + }; + + const handleDelete = async () => { + handleClose(); + + await deleteMutation({ id: resume.id }); + + queryClient.invalidateQueries(RESUMES_QUERY); + + goBack(); + }; + + const handleShareLink = async () => { + handleClose(); + + const url = getResumeUrl(resume, { withHost: true }); + await navigator.clipboard.writeText(url); + + toast.success(t('common.toast.success.resume-link-copied')); + }; + + return ( + + + {left.open ? : } + +
+ + + + + {'/'} + +

{name}

+ + + + + + + + + + + {t('builder.header.menu.rename')} + + + + + + + {t('builder.header.menu.duplicate')} + + + {resume.public ? ( + + + + + {t('builder.header.menu.share-link')} + + ) : ( + +
+ + + + + {t('builder.header.menu.share-link')} + +
+
+ )} + + + + + + + {t('builder.header.menu.delete')} + + +
+
+ + {right.open ? : } +
+
+ ); +}; + +export default Header; diff --git a/apps/client/components/build/Center/Page.module.scss b/apps/client/components/build/Center/Page.module.scss new file mode 100644 index 00000000..63bf1357 --- /dev/null +++ b/apps/client/components/build/Center/Page.module.scss @@ -0,0 +1,34 @@ +.container { + @apply flex flex-col items-center gap-2; + @apply rounded-sm; +} + +.page { + width: 210mm; + min-height: 297mm; + + @apply relative z-50 grid shadow; + @apply print:shadow-none; + + :global(.printer-mode) & { + @apply shadow-none; + } + + &.break::after { + content: 'A4 Page Break'; + top: calc(297mm - 19px); + + @apply absolute w-full border-b border-dashed border-neutral-800/75; + @apply flex items-end justify-end pr-2 pb-0.5 text-xs font-bold text-neutral-800/75; + @apply print:hidden; + + :global(.preview-mode) &, + :global(.printer-mode) & { + @apply hidden; + } + } +} + +.pageNumber { + @apply text-center font-bold print:hidden; +} diff --git a/apps/client/components/build/Center/Page.tsx b/apps/client/components/build/Center/Page.tsx new file mode 100644 index 00000000..d5a0c1df --- /dev/null +++ b/apps/client/components/build/Center/Page.tsx @@ -0,0 +1,59 @@ +import { css } from '@emotion/css'; +import { CustomCSS, Theme, Typography } from '@reactive-resume/schema'; +import clsx from 'clsx'; +import get from 'lodash/get'; +import isEmpty from 'lodash/isEmpty'; +import { useTranslation } from 'next-i18next'; +import { useMemo } from 'react'; + +import { useAppSelector } from '@/store/hooks'; +import templateMap from '@/templates/templateMap'; +import { generateThemeStyles, generateTypographyStyles } from '@/utils/styles'; +import { PageProps } from '@/utils/template'; + +import styles from './Page.module.scss'; + +type Props = PageProps & { + showPageNumbers?: boolean; +}; + +const Page: React.FC = ({ page, showPageNumbers = false }) => { + const { t } = useTranslation(); + + const resume = useAppSelector((state) => state.resume); + const breakLine: boolean = useAppSelector((state) => state.build.page.breakLine); + + const theme: Theme = get(resume, 'metadata.theme'); + const customCSS: CustomCSS = get(resume, 'metadata.css'); + const template: string = get(resume, 'metadata.template'); + const typography: Typography = get(resume, 'metadata.typography'); + + const themeCSS = useMemo(() => !isEmpty(theme) && generateThemeStyles(theme), [theme]); + const typographyCSS = useMemo(() => !isEmpty(typography) && generateTypographyStyles(typography), [typography]); + const TemplatePage: React.FC = useMemo(() => get(templateMap, `${template}.component`, null), [template]); + + return ( +
+
+ {TemplatePage && } +
+ + {showPageNumbers && ( +

+ {t('builder.common.glossary.page')} {page + 1} +

+ )} +
+ ); +}; + +export default Page; diff --git a/apps/client/components/build/LeftSidebar/LeftSidebar.module.scss b/apps/client/components/build/LeftSidebar/LeftSidebar.module.scss new file mode 100644 index 00000000..086d3895 --- /dev/null +++ b/apps/client/components/build/LeftSidebar/LeftSidebar.module.scss @@ -0,0 +1,45 @@ +.container { + @apply h-screen w-[95vw] md:w-[70vw] lg:w-[50vw] xl:w-[30vw] 2xl:w-[28vw]; + @apply bg-neutral-50 text-neutral-900 dark:bg-neutral-900 dark:text-neutral-50; + @apply relative flex border-r-2 border-neutral-50/10; + + nav { + @apply absolute inset-y-0 left-0; + @apply w-14 py-4 md:w-16 md:px-2; + @apply bg-neutral-100 shadow dark:bg-neutral-800; + @apply flex flex-col items-center justify-between; + + hr { + @apply mt-2; + } + + > div { + @apply grid gap-2; + } + + .sections svg { + @apply opacity-75 transition-opacity hover:opacity-100; + } + } + + main { + @apply overflow-y-scroll p-4; + @apply absolute inset-y-0 left-12 right-0 md:left-16; + + > section { + @apply grid gap-4; + @apply pt-5 pb-7 first:pt-0; + @apply border-b border-neutral-900/10 last:border-b-0 dark:border-neutral-50/10; + + hr { + @apply my-2; + } + } + + -ms-overflow-style: none; + + &::-webkit-scrollbar { + display: none; + } + } +} diff --git a/apps/client/components/build/LeftSidebar/LeftSidebar.tsx b/apps/client/components/build/LeftSidebar/LeftSidebar.tsx new file mode 100644 index 00000000..0a6a7ac3 --- /dev/null +++ b/apps/client/components/build/LeftSidebar/LeftSidebar.tsx @@ -0,0 +1,124 @@ +import { Add, Star } from '@mui/icons-material'; +import { Button, Divider, IconButton, SwipeableDrawer, Tooltip, useMediaQuery, useTheme } from '@mui/material'; +import { Section as SectionRecord } from '@reactive-resume/schema'; +import get from 'lodash/get'; +import Link from 'next/link'; +import { useTranslation } from 'next-i18next'; +import { useMemo } from 'react'; +import { validate } from 'uuid'; + +import Logo from '@/components/shared/Logo'; +import { getCustomSections, left } from '@/config/sections'; +import { setSidebarState } from '@/store/build/buildSlice'; +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import { addSection } from '@/store/resume/resumeSlice'; + +import styles from './LeftSidebar.module.scss'; +import Section from './sections/Section'; + +const LeftSidebar = () => { + const theme = useTheme(); + + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const isDesktop = useMediaQuery(theme.breakpoints.up('lg')); + + const sections = useAppSelector((state) => state.resume.sections); + const { open } = useAppSelector((state) => state.build.sidebar.left); + + const customSections = useMemo(() => getCustomSections(sections), [sections]); + + const handleOpen = () => dispatch(setSidebarState({ sidebar: 'left', state: { open: true } })); + + const handleClose = () => dispatch(setSidebarState({ sidebar: 'left', state: { open: false } })); + + const handleClick = (id: string) => { + const elementId = validate(id) ? `#section-${id}` : `#${id}`; + const section = document.querySelector(elementId); + + section.scrollIntoView({ behavior: 'smooth', block: 'start' }); + }; + + const handleAddSection = () => { + const newSection: SectionRecord = { + name: 'Custom Section', + type: 'custom', + visible: true, + columns: 2, + items: [], + }; + + dispatch(addSection({ value: newSection })); + }; + + return ( + +
+ + +
+ {left.map(({ id, component }) => ( +
+ {component} +
+ ))} + + {customSections.map(({ id }) => ( +
+
+
+ ))} + +
+ +
+
+
+
+ ); +}; + +export default LeftSidebar; diff --git a/apps/client/components/build/LeftSidebar/sections/Basics.tsx b/apps/client/components/build/LeftSidebar/sections/Basics.tsx new file mode 100644 index 00000000..b9427cea --- /dev/null +++ b/apps/client/components/build/LeftSidebar/sections/Basics.tsx @@ -0,0 +1,81 @@ +import { PhotoFilter } from '@mui/icons-material'; +import { Button, Divider, Popover } from '@mui/material'; +import { useTranslation } from 'next-i18next'; +import { useState } from 'react'; + +import Heading from '@/components/shared/Heading'; +import ResumeInput from '@/components/shared/ResumeInput'; + +import PhotoFilters from './PhotoFilters'; +import PhotoUpload from './PhotoUpload'; + +const Basics = () => { + const { t } = useTranslation(); + + const [anchorEl, setAnchorEl] = useState(null); + + const handleClick = (event: React.MouseEvent) => { + setAnchorEl(event.currentTarget); + }; + + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + +
+
+ + +
+ + + + + + + +
+
+ + + + + + + + + +
+ + ); +}; + +export default Basics; diff --git a/apps/client/components/build/LeftSidebar/sections/Location.tsx b/apps/client/components/build/LeftSidebar/sections/Location.tsx new file mode 100644 index 00000000..cced13d8 --- /dev/null +++ b/apps/client/components/build/LeftSidebar/sections/Location.tsx @@ -0,0 +1,31 @@ +import { useTranslation } from 'next-i18next'; + +import Heading from '@/components/shared/Heading'; +import ResumeInput from '@/components/shared/ResumeInput'; + +const Location = () => { + const { t } = useTranslation(); + + return ( + <> + + +
+ + + + + +
+ + ); +}; + +export default Location; diff --git a/apps/client/components/build/LeftSidebar/sections/PhotoFilters.tsx b/apps/client/components/build/LeftSidebar/sections/PhotoFilters.tsx new file mode 100644 index 00000000..0e941a49 --- /dev/null +++ b/apps/client/components/build/LeftSidebar/sections/PhotoFilters.tsx @@ -0,0 +1,97 @@ +import { Circle, Square, SquareRounded } from '@mui/icons-material'; +import { Checkbox, Divider, FormControlLabel, Slider, ToggleButton, ToggleButtonGroup } from '@mui/material'; +import { Photo, PhotoShape } from '@reactive-resume/schema'; +import get from 'lodash/get'; +import { useTranslation } from 'next-i18next'; + +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import { setResumeState } from '@/store/resume/resumeSlice'; + +const PhotoFilters = () => { + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const photo: Photo = useAppSelector((state) => get(state.resume, 'basics.photo')); + const size: number = get(photo, 'filters.size', 128); + const shape: PhotoShape = get(photo, 'filters.shape', 'square'); + const grayscale: boolean = get(photo, 'filters.grayscale', false); + const border: boolean = get(photo, 'filters.border', false); + + const handleChangeSize = (size: number) => + dispatch(setResumeState({ path: 'basics.photo.filters.size', value: size })); + + const handleChangeShape = (shape: PhotoShape) => + dispatch(setResumeState({ path: 'basics.photo.filters.shape', value: shape })); + + const handleSetGrayscale = (value: boolean) => + dispatch(setResumeState({ path: 'basics.photo.filters.grayscale', value })); + + const handleSetBorder = (value: boolean) => dispatch(setResumeState({ path: 'basics.photo.filters.border', value })); + + return ( +
+
+

{t('builder.leftSidebar.sections.basics.photo-filters.size.heading')}

+ +
+ handleChangeSize(value)} + /> +
+
+ + + +
+

{t('builder.leftSidebar.sections.basics.photo-filters.effects.heading')}

+ +
+ handleSetGrayscale(value)} /> + } + /> + + handleSetBorder(value)} />} + /> +
+
+ + + +
+

{t('builder.leftSidebar.sections.basics.photo-filters.shape.heading')}

+ + handleChangeShape(value)}> + + + + + + + + + + + + +
+
+ ); +}; + +export default PhotoFilters; diff --git a/apps/client/components/build/LeftSidebar/sections/PhotoUpload.tsx b/apps/client/components/build/LeftSidebar/sections/PhotoUpload.tsx new file mode 100644 index 00000000..a96e0baa --- /dev/null +++ b/apps/client/components/build/LeftSidebar/sections/PhotoUpload.tsx @@ -0,0 +1,83 @@ +import { Avatar, IconButton, Skeleton, Tooltip } from '@mui/material'; +import { Photo, Resume } from '@reactive-resume/schema'; +import get from 'lodash/get'; +import isEmpty from 'lodash/isEmpty'; +import { useTranslation } from 'next-i18next'; +import React, { useRef } from 'react'; +import toast from 'react-hot-toast'; +import { useMutation } from 'react-query'; + +import { ServerError } from '@/services/axios'; +import { deletePhoto, DeletePhotoParams, uploadPhoto, UploadPhotoParams } from '@/services/resume'; +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import { setResumeState } from '@/store/resume/resumeSlice'; + +const FILE_UPLOAD_MAX_SIZE = 2000000; // 2 MB + +const PhotoUpload: React.FC = () => { + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const fileInputRef = useRef(null); + + const id: number = useAppSelector((state) => get(state.resume, 'id')); + const photo: Photo = useAppSelector((state) => get(state.resume, 'basics.photo')); + + const { mutateAsync: uploadMutation, isLoading } = useMutation(uploadPhoto); + + const { mutateAsync: deleteMutation } = useMutation(deletePhoto); + + const handleClick = async () => { + if (fileInputRef.current) { + if (!isEmpty(photo.url)) { + try { + await deleteMutation({ id }); + } finally { + dispatch(setResumeState({ path: 'basics.photo.url', value: '' })); + } + } else { + fileInputRef.current.click(); + } + + fileInputRef.current.value = ''; + } + }; + + const handleChange = async (event: React.ChangeEvent) => { + if (event.target.files && event.target.files[0]) { + const file = event.target.files[0]; + + if (file.size > FILE_UPLOAD_MAX_SIZE) { + toast.error(t('common.toast.error.upload-photo-size')); + return; + } + + const resume = await uploadMutation({ id, file }); + + dispatch(setResumeState({ path: 'basics.photo.url', value: get(resume, 'basics.photo.url', '') })); + } + }; + + return ( + + {isLoading ? ( + + ) : ( + + + + )} + + + + ); +}; + +export default PhotoUpload; diff --git a/apps/client/components/build/LeftSidebar/sections/Profiles.tsx b/apps/client/components/build/LeftSidebar/sections/Profiles.tsx new file mode 100644 index 00000000..1bc42d8f --- /dev/null +++ b/apps/client/components/build/LeftSidebar/sections/Profiles.tsx @@ -0,0 +1,52 @@ +import { Add } from '@mui/icons-material'; +import { Button } from '@mui/material'; +import { ListItem } from '@reactive-resume/schema'; +import { useTranslation } from 'next-i18next'; + +import Heading from '@/components/shared/Heading'; +import List from '@/components/shared/List'; +import { useAppDispatch } from '@/store/hooks'; +import { setModalState } from '@/store/modal/modalSlice'; +import { duplicateItem } from '@/store/resume/resumeSlice'; + +const Profiles = () => { + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const handleAdd = () => { + dispatch(setModalState({ modal: 'builder.sections.profile', state: { open: true } })); + }; + + const handleEdit = (item: ListItem) => { + dispatch(setModalState({ modal: 'builder.sections.profile', state: { open: true, payload: { item } } })); + }; + + const handleDuplicate = (item: ListItem) => { + dispatch(duplicateItem({ path: 'basics.profiles', value: item })); + }; + + return ( + <> + + + + +
+ +
+ + ); +}; + +export default Profiles; diff --git a/apps/client/components/build/LeftSidebar/sections/Section.tsx b/apps/client/components/build/LeftSidebar/sections/Section.tsx new file mode 100644 index 00000000..c2ea776a --- /dev/null +++ b/apps/client/components/build/LeftSidebar/sections/Section.tsx @@ -0,0 +1,84 @@ +import { Add } from '@mui/icons-material'; +import { Button } from '@mui/material'; +import { ListItem } from '@reactive-resume/schema'; +import clsx from 'clsx'; +import get from 'lodash/get'; +import { useTranslation } from 'next-i18next'; +import { validate } from 'uuid'; + +import Heading from '@/components/shared/Heading'; +import List from '@/components/shared/List'; +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import { ModalName, setModalState } from '@/store/modal/modalSlice'; +import { duplicateItem } from '@/store/resume/resumeSlice'; + +import SectionSettings from './SectionSettings'; + +type Props = { + path: `sections.${string}`; + name?: string; + titleKey?: string; + subtitleKey?: string; + isEditable?: boolean; + isHideable?: boolean; + isDeletable?: boolean; +}; + +const Section: React.FC = ({ + path, + name = 'Section Name', + titleKey = 'title', + subtitleKey = 'subtitle', + isEditable = false, + isHideable = false, + isDeletable = false, +}) => { + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const heading = useAppSelector((state) => get(state.resume, `${path}.name`, name)); + const visibility = useAppSelector((state) => get(state.resume, `${path}.visible`, true)); + + const handleAdd = () => { + const id = path.split('.').at(-1); + const modal: ModalName = validate(id) ? 'builder.sections.custom' : `builder.${path}`; + + dispatch(setModalState({ modal, state: { open: true, payload: { path } } })); + }; + + const handleEdit = (item: ListItem) => { + const id = path.split('.').at(-1); + const modal: ModalName = validate(id) ? 'builder.sections.custom' : `builder.${path}`; + const payload = validate(id) ? { path, item } : { item }; + + dispatch(setModalState({ modal, state: { open: true, payload } })); + }; + + const handleDuplicate = (item: ListItem) => dispatch(duplicateItem({ path: `${path}.items`, value: item })); + + return ( + <> + + + + +
+ + + +
+ + ); +}; + +export default Section; diff --git a/apps/client/components/build/LeftSidebar/sections/SectionSettings.tsx b/apps/client/components/build/LeftSidebar/sections/SectionSettings.tsx new file mode 100644 index 00000000..8f35191e --- /dev/null +++ b/apps/client/components/build/LeftSidebar/sections/SectionSettings.tsx @@ -0,0 +1,66 @@ +import { ViewWeek } from '@mui/icons-material'; +import { ButtonBase, Popover, ToggleButton, ToggleButtonGroup, Tooltip } from '@mui/material'; +import get from 'lodash/get'; +import { useTranslation } from 'next-i18next'; +import { useState } from 'react'; + +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import { setResumeState } from '@/store/resume/resumeSlice'; + +type Props = { + path: string; +}; + +const SectionSettings: React.FC = ({ path }) => { + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const [anchorEl, setAnchorEl] = useState(null); + + const columns = useAppSelector((state) => get(state.resume, `${path}.columns`, 2)); + + const handleClick = (event: React.MouseEvent) => { + setAnchorEl(event.currentTarget); + }; + + const handleClose = () => { + setAnchorEl(null); + }; + + const handleSetColumns = (index: number) => dispatch(setResumeState({ path: `${path}.columns`, value: index })); + + return ( +
+ + + {columns} + + + + +
+

{t('builder.common.columns.heading')}

+ + handleSetColumns(value)}> + {[1, 2, 3, 4].map((index) => ( + + {index} + + ))} + +
+
+
+ ); +}; + +export default SectionSettings; diff --git a/apps/client/components/build/RightSidebar/RightSidebar.module.scss b/apps/client/components/build/RightSidebar/RightSidebar.module.scss new file mode 100644 index 00000000..102c5b53 --- /dev/null +++ b/apps/client/components/build/RightSidebar/RightSidebar.module.scss @@ -0,0 +1,50 @@ +.container { + @apply h-screen w-[95vw] md:w-[70vw] lg:w-[50vw] xl:w-[30vw] 2xl:w-[28vw]; + @apply bg-neutral-50 text-neutral-900 dark:bg-neutral-900 dark:text-neutral-50; + @apply relative flex border-l-2 border-neutral-50/10; + + nav { + @apply absolute inset-y-0 right-0; + @apply w-12 py-4 md:w-16 md:px-2; + @apply bg-neutral-100 shadow dark:bg-neutral-800; + @apply flex flex-col items-center justify-between; + + hr { + @apply mt-2; + } + + > div { + @apply grid gap-2; + } + + .sections svg { + @apply opacity-75 transition-opacity hover:opacity-100; + } + } + + main { + @apply overflow-y-scroll p-4; + @apply absolute inset-y-0 right-12 left-0 md:right-16; + + > section { + @apply grid gap-4; + @apply pt-5 pb-7 first:pt-0; + @apply border-b border-neutral-900/10 last:border-b-0 dark:border-neutral-50/10; + + hr { + @apply my-2; + } + } + + -ms-overflow-style: none; + + &::-webkit-scrollbar { + display: none; + } + } + + .footer { + @apply flex flex-col items-center justify-center gap-3 py-4; + @apply text-center text-xs leading-normal opacity-40; + } +} diff --git a/apps/client/components/build/RightSidebar/RightSidebar.tsx b/apps/client/components/build/RightSidebar/RightSidebar.tsx new file mode 100644 index 00000000..76d29939 --- /dev/null +++ b/apps/client/components/build/RightSidebar/RightSidebar.tsx @@ -0,0 +1,83 @@ +import { Divider, IconButton, SwipeableDrawer, Tooltip, useMediaQuery, useTheme } from '@mui/material'; +import { capitalize } from 'lodash'; +import { useTranslation } from 'next-i18next'; + +import Avatar from '@/components/shared/Avatar'; +import Footer from '@/components/shared/Footer'; +import { right } from '@/config/sections'; +import { setSidebarState } from '@/store/build/buildSlice'; +import { useAppDispatch, useAppSelector } from '@/store/hooks'; + +import styles from './RightSidebar.module.scss'; + +const RightSidebar = () => { + const theme = useTheme(); + + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const isDesktop = useMediaQuery(theme.breakpoints.up('lg')); + + const { open } = useAppSelector((state) => state.build.sidebar.right); + + const handleOpen = () => dispatch(setSidebarState({ sidebar: 'right', state: { open: true } })); + + const handleClose = () => dispatch(setSidebarState({ sidebar: 'right', state: { open: false } })); + + const handleClick = (id: string) => { + const section = document.querySelector(`#${id}`); + section.scrollIntoView({ behavior: 'smooth', block: 'start' }); + }; + + return ( + +
+ + +
+ {right.map(({ id, component }) => ( +
+ {component} +
+ ))} + +
+
+ +
v{process.env.NEXT_PUBLIC_APP_VERSION}
+
+
+
+
+ ); +}; + +export default RightSidebar; diff --git a/apps/client/components/build/RightSidebar/sections/CustomCSS.tsx b/apps/client/components/build/RightSidebar/sections/CustomCSS.tsx new file mode 100644 index 00000000..0ed0f34d --- /dev/null +++ b/apps/client/components/build/RightSidebar/sections/CustomCSS.tsx @@ -0,0 +1,49 @@ +import Editor from '@monaco-editor/react'; +import { useTheme } from '@mui/material'; +import { CustomCSS as CustomCSSType } from '@reactive-resume/schema'; +import clsx from 'clsx'; +import get from 'lodash/get'; +import { useTranslation } from 'next-i18next'; +import React from 'react'; + +import Heading from '@/components/shared/Heading'; +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import { setResumeState } from '@/store/resume/resumeSlice'; + +const CustomCSS = () => { + const theme = useTheme(); + + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const customCSS: CustomCSSType = useAppSelector((state) => get(state.resume, 'metadata.css', {})); + + const handleChange = (value: string) => { + dispatch(setResumeState({ path: 'metadata.css.value', value })); + }; + + return ( + <> + + + + + ); +}; + +export default CustomCSS; diff --git a/apps/client/components/build/RightSidebar/sections/Export.tsx b/apps/client/components/build/RightSidebar/sections/Export.tsx new file mode 100644 index 00000000..9bf8e445 --- /dev/null +++ b/apps/client/components/build/RightSidebar/sections/Export.tsx @@ -0,0 +1,81 @@ +import { PictureAsPdf, Schema } from '@mui/icons-material'; +import { List, ListItem, ListItemButton, ListItemText } from '@mui/material'; +import get from 'lodash/get'; +import pick from 'lodash/pick'; +import { useTranslation } from 'next-i18next'; +import { useMutation } from 'react-query'; + +import Heading from '@/components/shared/Heading'; +import { ServerError } from '@/services/axios'; +import { printResumeAsPdf, PrintResumeAsPdfParams } from '@/services/printer'; +import { useAppSelector } from '@/store/hooks'; + +const Export = () => { + const { t } = useTranslation(); + + const resume = useAppSelector((state) => state.resume); + + const { mutateAsync, isLoading } = useMutation(printResumeAsPdf); + + const pdfListItemText = { + normal: { + primary: t('builder.rightSidebar.sections.export.pdf.normal.primary'), + secondary: t('builder.rightSidebar.sections.export.pdf.normal.secondary'), + }, + loading: { + primary: t('builder.rightSidebar.sections.export.pdf.loading.primary'), + secondary: t('builder.rightSidebar.sections.export.pdf.loading.secondary'), + }, + }; + + const handleExportJSON = async () => { + const { nanoid } = await import('nanoid'); + const download = (await import('downloadjs')).default; + + const redactedResume = pick(resume, ['basics', 'sections', 'metadata', 'public']); + const jsonString = JSON.stringify(redactedResume, null, 4); + const filename = `RxResume_JSONExport_${nanoid()}.json`; + + download(jsonString, filename, 'application/json'); + }; + + const handleExportPDF = async () => { + const download = (await import('downloadjs')).default; + + const slug = get(resume, 'slug'); + const username = get(resume, 'user.username'); + + const url = await mutateAsync({ username, slug }); + + download(url); + }; + + return ( + <> + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default Export; diff --git a/apps/client/components/build/RightSidebar/sections/Layout.module.scss b/apps/client/components/build/RightSidebar/sections/Layout.module.scss new file mode 100644 index 00000000..3237fea9 --- /dev/null +++ b/apps/client/components/build/RightSidebar/sections/Layout.module.scss @@ -0,0 +1,43 @@ +.page { + @apply relative border pl-4 pb-4 dark:border-neutral-100/10; + @apply rounded bg-neutral-100 dark:bg-neutral-800; + + .delete { + @apply opacity-50 hover:opacity-75; + @apply rotate-0 hover:rotate-90; + @apply transition-[opacity,transform]; + } + + .container { + @apply grid grid-cols-2 gap-2; + } + + .heading { + @apply relative z-10 my-3; + @apply text-xs font-semibold; + } +} + +.column { + @apply relative w-full px-4; + + .heading { + @apply relative z-10 my-3; + @apply text-xs font-semibold; + } + + .base { + @apply absolute inset-0 w-4/5; + @apply rounded bg-neutral-200 dark:bg-neutral-700; + } +} + +.section { + @apply relative my-3 w-full px-4 py-2; + @apply cursor-move break-all rounded text-xs capitalize; + @apply bg-neutral-800/90 text-neutral-50 dark:bg-neutral-50/90 dark:text-neutral-800; + + &.disabled { + @apply opacity-60; + } +} diff --git a/apps/client/components/build/RightSidebar/sections/Layout.tsx b/apps/client/components/build/RightSidebar/sections/Layout.tsx new file mode 100644 index 00000000..f049a7aa --- /dev/null +++ b/apps/client/components/build/RightSidebar/sections/Layout.tsx @@ -0,0 +1,141 @@ +import { Add, Close, Restore } from '@mui/icons-material'; +import { Button, IconButton, Tooltip } from '@mui/material'; +import clsx from 'clsx'; +import cloneDeep from 'lodash/cloneDeep'; +import get from 'lodash/get'; +import { useTranslation } from 'next-i18next'; +import { DragDropContext, Draggable, DraggableLocation, Droppable, DropResult } from 'react-beautiful-dnd'; + +import Heading from '@/components/shared/Heading'; +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import { addPage, deletePage, setResumeState } from '@/store/resume/resumeSlice'; + +import styles from './Layout.module.scss'; + +const getIndices = (location: DraggableLocation) => ({ + page: +location.droppableId.split('.')[0], + column: +location.droppableId.split('.')[1], + section: +location.index, +}); + +const Layout = () => { + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const layout = useAppSelector((state) => state.resume.metadata.layout); + const resumeSections = useAppSelector((state) => state.resume.sections); + + const onDragEnd = (dropResult: DropResult) => { + const { source: srcLoc, destination: destLoc } = dropResult; + + if (!destLoc) return; + + const newLayout = cloneDeep(layout); + + const srcIndex = getIndices(srcLoc); + const destIndex = getIndices(destLoc); + const section = layout[srcIndex.page][srcIndex.column][srcIndex.section]; + + // Remove item at source + newLayout[srcIndex.page][srcIndex.column].splice(srcIndex.section, 1); + + // Insert item at destination + newLayout[destIndex.page][destIndex.column].splice(destIndex.section, 0, section); + + dispatch(setResumeState({ path: 'metadata.layout', value: newLayout })); + }; + + const handleAddPage = () => dispatch(addPage()); + + const handleDeletePage = (page: number) => dispatch(deletePage({ page })); + + const handleResetLayout = () => { + for (let i = layout.length - 1; i > 0; i--) { + handleDeletePage(i); + } + }; + + return ( + <> + + + + + + } + /> + + + {/* Pages */} + {layout.map((columns, pageIndex) => ( +
+
+

+ {t('builder.common.glossary.page')} {pageIndex + 1} +

+ +
+ + handleDeletePage(pageIndex)}> + + + +
+
+ +
+ {/* Sections */} + {columns.map((sections, columnIndex) => { + const index = `${pageIndex}.${columnIndex}`; + + return ( + + {(provided) => ( +
+

{columnIndex ? 'Sidebar' : 'Main'}

+ +
+ + {/* Sections */} + {sections.map((sectionId, sectionIndex) => ( + + {(provided) => ( +
+
+ {get(resumeSections, `${sectionId}.name`)} +
+
+ )} +
+ ))} + + {provided.placeholder} +
+ )} + + ); + })} +
+
+ ))} + +
+ +
+ + + ); +}; + +export default Layout; diff --git a/apps/client/components/build/RightSidebar/sections/Links.module.scss b/apps/client/components/build/RightSidebar/sections/Links.module.scss new file mode 100644 index 00000000..5305929c --- /dev/null +++ b/apps/client/components/build/RightSidebar/sections/Links.module.scss @@ -0,0 +1,20 @@ +.container { + @apply grid gap-4; + + .section { + @apply grid gap-2 rounded p-6; + @apply bg-neutral-100 dark:bg-neutral-800; + + h2 { + @apply inline-flex items-center gap-2 text-base font-medium; + } + + p { + @apply mb-3 text-xs leading-loose; + } + } + + a { + @apply hover:no-underline; + } +} diff --git a/apps/client/components/build/RightSidebar/sections/Links.tsx b/apps/client/components/build/RightSidebar/sections/Links.tsx new file mode 100644 index 00000000..13339139 --- /dev/null +++ b/apps/client/components/build/RightSidebar/sections/Links.tsx @@ -0,0 +1,56 @@ +import { BugReport, Coffee, GitHub, Link, Savings } from '@mui/icons-material'; +import { Button } from '@mui/material'; +import { useTranslation } from 'next-i18next'; + +import Heading from '@/components/shared/Heading'; +import { DONATION_URL, GITHUB_ISSUES_URL, GITHUB_URL } from '@/constants/index'; + +import styles from './Links.module.scss'; + +const Links = () => { + const { t } = useTranslation(); + + return ( + <> + + +
+
+

+ + {t('builder.rightSidebar.sections.links.donate.heading')} +

+ +

{t('builder.rightSidebar.sections.links.donate.body')}

+ + + + +
+ +
+

+ + {t('builder.rightSidebar.sections.links.bugs-features.heading')} +

+ +

{t('builder.rightSidebar.sections.links.bugs-features.body')}

+ + + + +
+ + +
+ + ); +}; + +export default Links; diff --git a/apps/client/components/build/RightSidebar/sections/Settings.tsx b/apps/client/components/build/RightSidebar/sections/Settings.tsx new file mode 100644 index 00000000..d194b00a --- /dev/null +++ b/apps/client/components/build/RightSidebar/sections/Settings.tsx @@ -0,0 +1,198 @@ +import { Anchor, DeleteForever, Palette } from '@mui/icons-material'; +import { + Autocomplete, + List, + ListItem, + ListItemButton, + ListItemIcon, + ListItemText, + ListSubheader, + Switch, + TextField, +} from '@mui/material'; +import { DateConfig, Resume } from '@reactive-resume/schema'; +import dayjs from 'dayjs'; +import get from 'lodash/get'; +import { useTranslation } from 'next-i18next'; +import { useMemo } from 'react'; +import { useMutation } from 'react-query'; + +import Heading from '@/components/shared/Heading'; +import ThemeSwitch from '@/components/shared/ThemeSwitch'; +import { Language, languageMap, languages } from '@/config/languages'; +import { ServerError } from '@/services/axios'; +import queryClient from '@/services/react-query'; +import { loadSampleData, LoadSampleDataParams, resetResume, ResetResumeParams } from '@/services/resume'; +import { setTheme, togglePageBreakLine, togglePageOrientation } from '@/store/build/buildSlice'; +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import { setResumeState } from '@/store/resume/resumeSlice'; +import { dateFormatOptions } from '@/utils/date'; + +const Settings = () => { + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const resume = useAppSelector((state) => state.resume); + const theme = useAppSelector((state) => state.build.theme); + const breakLine = useAppSelector((state) => state.build.page.breakLine); + const orientation = useAppSelector((state) => state.build.page.orientation); + + const id: number = useMemo(() => get(resume, 'id'), [resume]); + const slug: string = useMemo(() => get(resume, 'slug'), [resume]); + const username: string = useMemo(() => get(resume, 'user.username'), [resume]); + const language: string = useMemo(() => get(resume, 'metadata.language'), [resume]); + const dateConfig: DateConfig = useMemo(() => get(resume, 'metadata.date'), [resume]); + + const isDarkMode = useMemo(() => theme === 'dark', [theme]); + const exampleString = useMemo(() => `Eg. ${dayjs().format(dateConfig.format)}`, [dateConfig.format]); + const themeString = useMemo(() => (isDarkMode ? 'Matte Black Everything' : 'As bright as your future'), [isDarkMode]); + + const { mutateAsync: loadSampleDataMutation } = useMutation( + loadSampleData + ); + const { mutateAsync: resetResumeMutation } = useMutation(resetResume); + + const handleSetTheme = (value: boolean) => dispatch(setTheme({ theme: value ? 'dark' : 'light' })); + + const handleChangeDateFormat = (value: string) => dispatch(setResumeState({ path: 'metadata.date.format', value })); + + const handleChangeLanguage = (value: Language) => + dispatch(setResumeState({ path: 'metadata.language', value: value.code })); + + const handleLoadSampleData = async () => { + await loadSampleDataMutation({ id }); + + queryClient.invalidateQueries(`resume/${username}/${slug}`); + }; + + const handleResetResume = async () => { + await resetResumeMutation({ id }); + + queryClient.invalidateQueries(`resume/${username}/${slug}`); + }; + + return ( + <> + + + + {/* Global Settings */} + <> + + {t('builder.rightSidebar.sections.settings.global.heading')} + + + + + + + + handleSetTheme(value)} /> + + + + + + disableClearable + className="my-2 w-full" + options={dateFormatOptions} + value={dateConfig.format} + onChange={(_, value) => handleChangeDateFormat(value)} + renderInput={(params) => } + /> + + + + + + disableClearable + className="my-2 w-full" + options={languages} + value={languageMap[language]} + getOptionLabel={(language) => { + if (language.localName) { + return `${language.name} (${language.localName})`; + } + + return language.name; + }} + isOptionEqualToValue={(a, b) => a.code === b.code} + onChange={(_, value) => handleChangeLanguage(value)} + renderInput={(params) => } + /> + + + + {/* Page Settings */} + <> + {t('builder.rightSidebar.sections.settings.page.heading')} + + + + dispatch(togglePageOrientation())} + /> + + + + + dispatch(togglePageBreakLine())} /> + + + + {/* Resume Settings */} + <> + + {t('builder.rightSidebar.sections.settings.resume.heading')} + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default Settings; diff --git a/apps/client/components/build/RightSidebar/sections/Sharing.tsx b/apps/client/components/build/RightSidebar/sections/Sharing.tsx new file mode 100644 index 00000000..e4e1d840 --- /dev/null +++ b/apps/client/components/build/RightSidebar/sections/Sharing.tsx @@ -0,0 +1,78 @@ +import { CopyAll } from '@mui/icons-material'; +import { Checkbox, FormControlLabel, IconButton, List, ListItem, ListItemText, Switch, TextField } from '@mui/material'; +import get from 'lodash/get'; +import { useTranslation } from 'next-i18next'; +import { useMemo, useState } from 'react'; +import toast from 'react-hot-toast'; + +import Heading from '@/components/shared/Heading'; +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import { setResumeState } from '@/store/resume/resumeSlice'; +import getResumeUrl from '@/utils/getResumeUrl'; + +const Sharing = () => { + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const [showShortUrl, setShowShortUrl] = useState(false); + + const resume = useAppSelector((state) => state.resume); + const isPublic = useMemo(() => get(resume, 'public'), [resume]); + const url = useMemo(() => getResumeUrl(resume, { withHost: true }), [resume]); + const shortUrl = useMemo(() => getResumeUrl(resume, { withHost: true, shortUrl: true }), [resume]); + + const handleSetVisibility = (value: boolean) => dispatch(setResumeState({ path: 'public', value })); + + const handleCopyToClipboard = async () => { + const text = showShortUrl ? shortUrl : url; + + await navigator.clipboard.writeText(text); + + toast.success(t('common.toast.success.resume-link-copied')); + }; + + return ( + <> + + + + +
+ + handleSetVisibility(value)} /> +
+ +
+ + + + ), + }} + /> +
+ +
+ setShowShortUrl(value)} /> + } + /> +
+
+
+ + ); +}; + +export default Sharing; diff --git a/apps/client/components/build/RightSidebar/sections/Templates.module.scss b/apps/client/components/build/RightSidebar/sections/Templates.module.scss new file mode 100644 index 00000000..6a4de7c5 --- /dev/null +++ b/apps/client/components/build/RightSidebar/sections/Templates.module.scss @@ -0,0 +1,22 @@ +.container { + @apply grid grid-cols-2 gap-4; +} + +.template { + @apply grid text-center; + + .preview { + aspect-ratio: 1 / 1.4142; + + @apply relative grid rounded; + @apply border-2 border-transparent; + + &.selected { + @apply border-black dark:border-white; + } + } + + .label { + @apply mt-1 text-xs font-medium; + } +} diff --git a/apps/client/components/build/RightSidebar/sections/Templates.tsx b/apps/client/components/build/RightSidebar/sections/Templates.tsx new file mode 100644 index 00000000..09272c35 --- /dev/null +++ b/apps/client/components/build/RightSidebar/sections/Templates.tsx @@ -0,0 +1,46 @@ +import { ButtonBase } from '@mui/material'; +import clsx from 'clsx'; +import get from 'lodash/get'; +import Image from 'next/image'; +import { useTranslation } from 'next-i18next'; + +import Heading from '@/components/shared/Heading'; +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import { setResumeState } from '@/store/resume/resumeSlice'; +import templateMap, { TemplateMeta } from '@/templates/templateMap'; + +import styles from './Templates.module.scss'; + +const Templates = () => { + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const currentTemplate: string = useAppSelector((state) => get(state.resume, 'metadata.template')); + + const handleChange = (template: TemplateMeta) => { + dispatch(setResumeState({ path: 'metadata.template', value: template.id })); + }; + + return ( + <> + + +
+ {Object.values(templateMap).map((template) => ( +
+
+ handleChange(template)}> + {template.name} + +
+ +

{template.name}

+
+ ))} +
+ + ); +}; + +export default Templates; diff --git a/apps/client/components/build/RightSidebar/sections/Theme.module.scss b/apps/client/components/build/RightSidebar/sections/Theme.module.scss new file mode 100644 index 00000000..deb9b9e2 --- /dev/null +++ b/apps/client/components/build/RightSidebar/sections/Theme.module.scss @@ -0,0 +1,8 @@ +.container { + @apply grid sm:grid-cols-2 gap-4; +} + +.colorOptions { + @apply col-span-2 mb-4; + @apply grid grid-cols-8 gap-y-2 justify-items-center; +} diff --git a/apps/client/components/build/RightSidebar/sections/Theme.tsx b/apps/client/components/build/RightSidebar/sections/Theme.tsx new file mode 100644 index 00000000..7833c7bd --- /dev/null +++ b/apps/client/components/build/RightSidebar/sections/Theme.tsx @@ -0,0 +1,57 @@ +import { Theme } from '@reactive-resume/schema'; +import get from 'lodash/get'; +import { useTranslation } from 'next-i18next'; + +import ColorAvatar from '@/components/shared/ColorAvatar'; +import ColorPicker from '@/components/shared/ColorPicker'; +import Heading from '@/components/shared/Heading'; +import { colorOptions } from '@/config/colors'; +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import { setResumeState } from '@/store/resume/resumeSlice'; + +import styles from './Theme.module.scss'; + +const Theme = () => { + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const { background, text, primary } = useAppSelector((state) => get(state.resume, 'metadata.theme')); + + const handleChange = (property: string, color: string) => { + dispatch(setResumeState({ path: `metadata.theme.${property}`, value: color })); + }; + + return ( + <> + + +
+
+ {colorOptions.map((color) => ( + handleChange('primary', color)} /> + ))} +
+ + handleChange('primary', color)} + /> + handleChange('background', color)} + /> + handleChange('text', color)} + /> +
+ + ); +}; + +export default Theme; diff --git a/apps/client/components/build/RightSidebar/sections/Typography.module.scss b/apps/client/components/build/RightSidebar/sections/Typography.module.scss new file mode 100644 index 00000000..6a70f62f --- /dev/null +++ b/apps/client/components/build/RightSidebar/sections/Typography.module.scss @@ -0,0 +1,11 @@ +.container { + @apply grid gap-4 xl:grid-cols-2; +} + +.subheading { + @apply mt-2 font-medium; +} + +.slider { + @apply px-6; +} diff --git a/apps/client/components/build/RightSidebar/sections/Typography.tsx b/apps/client/components/build/RightSidebar/sections/Typography.tsx new file mode 100644 index 00000000..10de2618 --- /dev/null +++ b/apps/client/components/build/RightSidebar/sections/Typography.tsx @@ -0,0 +1,106 @@ +import { Autocomplete, Skeleton, Slider, TextField } from '@mui/material'; +import { Font, TypeCategory, TypeProperty, Typography as TypographyType } from '@reactive-resume/schema'; +import get from 'lodash/get'; +import isEmpty from 'lodash/isEmpty'; +import { useTranslation } from 'next-i18next'; +import { useQuery } from 'react-query'; + +import Heading from '@/components/shared/Heading'; +import { FONTS_QUERY } from '@/constants/index'; +import { fetchFonts } from '@/services/fonts'; +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import { setResumeState } from '@/store/resume/resumeSlice'; + +import styles from './Typography.module.scss'; + +const TypographySkeleton: React.FC = () => ( + <> + +
+ + +
+ +); + +type WidgetProps = { + label: string; + category: TypeCategory; +}; + +const Widgets: React.FC = ({ label, category }) => { + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const { family, size } = useAppSelector((state) => get(state.resume, 'metadata.typography')); + + const { data: fonts } = useQuery(FONTS_QUERY, fetchFonts, { + select: (fonts) => fonts.sort((a, b) => a.category.localeCompare(b.category)), + }); + + const handleChange = (property: TypeProperty, value: number | Font) => { + if (value === null) return; + + dispatch( + setResumeState({ + path: `metadata.typography.${property}.${category}`, + value: property === 'family' ? (value as Font).family : value, + }) + ); + }; + + if (isEmpty(fonts)) return ; + + return ( + <> +
{label}
+ +
+
+ handleChange('size', size)} + /> +
+ + + options={fonts} + disableClearable={true} + groupBy={(font) => font.category} + getOptionLabel={(font) => font.family} + isOptionEqualToValue={(a, b) => a.family === b.family} + value={fonts.find((font) => font.family === family[category])} + onChange={(_, font: Font) => handleChange('family', font)} + renderInput={(params) => ( + + )} + /> +
+ + ); +}; + +const Typography = () => { + const { t } = useTranslation(); + + return ( + <> + + + + + + ); +}; + +export default Typography; diff --git a/apps/client/components/dashboard/ResumeCard.module.scss b/apps/client/components/dashboard/ResumeCard.module.scss new file mode 100644 index 00000000..2678bf8b --- /dev/null +++ b/apps/client/components/dashboard/ResumeCard.module.scss @@ -0,0 +1,24 @@ +.resume { + @apply flex flex-col gap-2; + + .preview { + aspect-ratio: 1 / 1.41; + + @apply flex items-center justify-center shadow; + @apply cursor-pointer rounded-sm bg-neutral-100 transition-opacity hover:opacity-80 dark:bg-neutral-800; + } + + footer { + @apply flex items-center justify-between; + + .meta { + p:first-child { + @apply text-sm font-semibold leading-relaxed; + } + + p:last-child { + @apply text-xs leading-relaxed opacity-50; + } + } + } +} diff --git a/apps/client/components/dashboard/ResumeCard.tsx b/apps/client/components/dashboard/ResumeCard.tsx new file mode 100644 index 00000000..16f5abb0 --- /dev/null +++ b/apps/client/components/dashboard/ResumeCard.tsx @@ -0,0 +1,39 @@ +import { SvgIconComponent } from '@mui/icons-material'; +import { ButtonBase } from '@mui/material'; + +import { useAppDispatch } from '@/store/hooks'; +import { ModalName, setModalState } from '@/store/modal/modalSlice'; + +import styles from './ResumeCard.module.scss'; + +type Props = { + modal: ModalName; + icon: SvgIconComponent; + title: string; + subtitle: string; +}; + +const ResumeCard: React.FC = ({ modal, icon: Icon, title, subtitle }) => { + const dispatch = useAppDispatch(); + + const handleClick = () => { + dispatch(setModalState({ modal, state: { open: true } })); + }; + + return ( +
+ + + + +
+
+

{title}

+

{subtitle}

+
+
+
+ ); +}; + +export default ResumeCard; diff --git a/apps/client/components/dashboard/ResumePreview.module.scss b/apps/client/components/dashboard/ResumePreview.module.scss new file mode 100644 index 00000000..e4dfb271 --- /dev/null +++ b/apps/client/components/dashboard/ResumePreview.module.scss @@ -0,0 +1,37 @@ +.resume { + @apply flex flex-col gap-2; + + .preview { + aspect-ratio: 1 / 1.41; + + @apply relative cursor-pointer rounded-sm shadow; + @apply bg-neutral-100 transition-opacity hover:opacity-80 dark:bg-neutral-800; + } + + footer { + @apply flex items-center justify-between overflow-hidden; + + .meta { + flex: 4; + @apply flex flex-col overflow-hidden; + + p { + @apply overflow-hidden text-ellipsis whitespace-nowrap; + + &:first-child { + @apply text-sm font-semibold leading-relaxed; + } + + &:last-child { + @apply text-xs leading-relaxed opacity-50; + } + } + } + + .menu { + flex: 1; + + @apply h-full w-full cursor-pointer rounded text-lg; + } + } +} diff --git a/apps/client/components/dashboard/ResumePreview.tsx b/apps/client/components/dashboard/ResumePreview.tsx new file mode 100644 index 00000000..02b83d1c --- /dev/null +++ b/apps/client/components/dashboard/ResumePreview.tsx @@ -0,0 +1,190 @@ +import { + ContentCopy, + DeleteOutline, + DriveFileRenameOutline, + Link as LinkIcon, + MoreVert, + OpenInNew, +} from '@mui/icons-material'; +import { ButtonBase, ListItemIcon, ListItemText, Menu, MenuItem, Tooltip } from '@mui/material'; +import { Resume } from '@reactive-resume/schema'; +import Image from 'next/image'; +import Link from 'next/link'; +import { useRouter } from 'next/router'; +import { useTranslation } from 'next-i18next'; +import { useState } from 'react'; +import toast from 'react-hot-toast'; +import { useMutation } from 'react-query'; + +import { RESUMES_QUERY } from '@/constants/index'; +import { ServerError } from '@/services/axios'; +import queryClient from '@/services/react-query'; +import { deleteResume, DeleteResumeParams, duplicateResume, DuplicateResumeParams } from '@/services/resume'; +import { useAppDispatch } from '@/store/hooks'; +import { setModalState } from '@/store/modal/modalSlice'; +import { getRelativeTime } from '@/utils/date'; +import getResumeUrl from '@/utils/getResumeUrl'; + +import styles from './ResumePreview.module.scss'; + +type Props = { + resume: Resume; +}; + +const ResumePreview: React.FC = ({ resume }) => { + const router = useRouter(); + + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const [anchorEl, setAnchorEl] = useState(null); + + const { mutateAsync: duplicateMutation } = useMutation(duplicateResume); + + const { mutateAsync: deleteMutation } = useMutation(deleteResume); + + const handleOpen = () => { + handleClose(); + + router.push({ + pathname: '/[username]/[slug]/build', + query: { username: resume.user.username, slug: resume.slug }, + }); + }; + + const handleOpenMenu = (event: React.MouseEvent) => { + setAnchorEl(event.currentTarget); + }; + + const handleClose = () => { + setAnchorEl(null); + }; + + const handleRename = () => { + handleClose(); + + dispatch( + setModalState({ + modal: 'dashboard.rename-resume', + state: { + open: true, + payload: { + item: resume, + onComplete: () => { + queryClient.invalidateQueries(RESUMES_QUERY); + }, + }, + }, + }) + ); + }; + + const handleDuplicate = async () => { + handleClose(); + + await duplicateMutation({ id: resume.id }); + + queryClient.invalidateQueries(RESUMES_QUERY); + }; + + const handleShareLink = async () => { + handleClose(); + + const url = getResumeUrl(resume, { withHost: true }); + await navigator.clipboard.writeText(url); + + toast.success(t('common.toast.success.resume-link-copied')); + }; + + const handleDelete = async () => { + handleClose(); + + await deleteMutation({ id: resume.id }); + + queryClient.invalidateQueries(RESUMES_QUERY); + }; + + return ( +
+ + + {resume.image ? ( + {resume.name} + ) : null} + + + +
+
+

{resume.name}

+

{t('dashboard.resume.timestamp', { timestamp: getRelativeTime(resume.updatedAt) })}

+
+ + + + + + + + + + + {t('dashboard.resume.menu.open')} + + + + + + + {t('dashboard.resume.menu.rename')} + + + + + + + {t('dashboard.resume.menu.duplicate')} + + + {resume.public ? ( + + + + + {t('dashboard.resume.menu.share-link')} + + ) : ( + +
+ + + + + {t('dashboard.resume.menu.share-link')} + +
+
+ )} + + + + + + + {t('dashboard.resume.menu.delete')} + + +
+
+
+ ); +}; + +export default ResumePreview; diff --git a/apps/client/components/shared/ArrayInput.module.scss b/apps/client/components/shared/ArrayInput.module.scss new file mode 100644 index 00000000..3247205c --- /dev/null +++ b/apps/client/components/shared/ArrayInput.module.scss @@ -0,0 +1,15 @@ +.header { + @apply mb-4 flex items-center justify-between; + + .label { + @apply text-base font-semibold; + } +} + +.inputGrid { + @apply grid grid-cols-2 gap-4; + + .delete { + @apply opacity-25 hover:opacity-75; + } +} diff --git a/apps/client/components/shared/ArrayInput.tsx b/apps/client/components/shared/ArrayInput.tsx new file mode 100644 index 00000000..6d76bcc5 --- /dev/null +++ b/apps/client/components/shared/ArrayInput.tsx @@ -0,0 +1,70 @@ +import { Add, Delete } from '@mui/icons-material'; +import { IconButton, InputAdornment, TextField } from '@mui/material'; +import get from 'lodash/get'; +import { useEffect, useState } from 'react'; +import { FieldError } from 'react-hook-form'; + +import styles from './ArrayInput.module.scss'; + +type Props = { + value: string[]; + label: string; + onChange: (event: any) => void; + errors: FieldError | FieldError[]; + className?: string; +}; + +const ArrayInput: React.FC = ({ value, label, onChange, errors, className }) => { + const [items, setItems] = useState(value); + + const onAdd = () => setItems([...items, '']); + + const onDelete = (index: number) => setItems(items.filter((_, idx) => idx !== index)); + + const handleChange = (event: React.ChangeEvent, index: number) => { + const tempItems = [...items]; + tempItems[index] = event.target.value; + setItems(tempItems); + }; + + useEffect(() => { + onChange(items); + }, [onChange, items]); + + return ( +
+
+

+ {label} ({items.length}) +

+ + + + +
+ +
+ {items.map((value, index) => ( + ) => handleChange(event, index)} + error={!!get(errors, index, false)} + helperText={get(errors, `${index}.message`, '')} + InputProps={{ + endAdornment: ( + + onDelete(index)} className={styles.delete}> + + + + ), + }} + /> + ))} +
+
+ ); +}; + +export default ArrayInput; diff --git a/apps/client/components/shared/Avatar.module.scss b/apps/client/components/shared/Avatar.module.scss new file mode 100644 index 00000000..12a57fc2 --- /dev/null +++ b/apps/client/components/shared/Avatar.module.scss @@ -0,0 +1,3 @@ +.avatar { + @apply cursor-pointer rounded-full; +} diff --git a/apps/client/components/shared/Avatar.tsx b/apps/client/components/shared/Avatar.tsx new file mode 100644 index 00000000..4a549825 --- /dev/null +++ b/apps/client/components/shared/Avatar.tsx @@ -0,0 +1,70 @@ +import { Divider, IconButton, Menu, MenuItem } from '@mui/material'; +import Image from 'next/image'; +import { useRouter } from 'next/router'; +import { useTranslation } from 'next-i18next'; +import { useState } from 'react'; + +import { logout } from '@/store/auth/authSlice'; +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import getGravatarUrl from '@/utils/getGravatarUrl'; + +import styles from './Avatar.module.scss'; + +type Props = { + size?: number; +}; + +const Avatar: React.FC = ({ size = 64 }) => { + const router = useRouter(); + + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const [anchorEl, setAnchorEl] = useState(null); + + const user = useAppSelector((state) => state.auth.user); + const email = user?.email || ''; + + const handleOpen = (event: React.MouseEvent) => { + setAnchorEl(event.currentTarget); + }; + + const handleClose = () => { + setAnchorEl(null); + }; + + const handleLogout = () => { + dispatch(logout()); + handleClose(); + + router.push('/'); + }; + + return ( + <> + + {user?.name} + + + + +
+ {t('common.avatar.menu.greeting')} +

{user?.name}

+
+
+ + {t('common.avatar.menu.logout')} +
+ + ); +}; + +export default Avatar; diff --git a/apps/client/components/shared/BaseModal.module.scss b/apps/client/components/shared/BaseModal.module.scss new file mode 100644 index 00000000..3ebb2162 --- /dev/null +++ b/apps/client/components/shared/BaseModal.module.scss @@ -0,0 +1,32 @@ +.content { + @apply rounded p-6 text-sm shadow lg:w-1/2 xl:w-2/5; + @apply absolute inset-4 sm:inset-x-4 sm:inset-y-auto lg:inset-auto; + @apply overflow-scroll bg-neutral-50 dark:bg-neutral-900 lg:overflow-auto; +} + +.header { + @apply flex items-center justify-between; + @apply w-full border-b pb-5 dark:border-white/10; + + > div { + @apply flex items-center gap-2; + } + + button { + @apply flex items-center justify-center; + @apply rotate-0 transition-transform hover:rotate-90; + } + + h1 { + @apply text-base font-medium; + } +} + +.body { + @apply grid gap-4 pt-4 pb-6; +} + +.footer { + @apply flex items-center justify-end gap-x-4; + @apply w-full border-t pt-5 dark:border-white/10; +} diff --git a/apps/client/components/shared/BaseModal.tsx b/apps/client/components/shared/BaseModal.tsx new file mode 100644 index 00000000..fc0be666 --- /dev/null +++ b/apps/client/components/shared/BaseModal.tsx @@ -0,0 +1,56 @@ +import { Close as CloseIcon } from '@mui/icons-material'; +import { Fade, IconButton, Modal } from '@mui/material'; +import { useRouter } from 'next/router'; + +import styles from './BaseModal.module.scss'; + +type Props = { + icon?: React.ReactNode; + isOpen: boolean; + heading: string; + handleClose: () => void; + footerChildren?: React.ReactNode; +}; + +const BaseModal: React.FC = ({ icon, isOpen, heading, children, handleClose, footerChildren }) => { + const router = useRouter(); + const { pathname, query } = router; + + const onClose = () => { + router.push({ pathname, query }, ''); + + handleClose(); + }; + + return ( + + +
+
+
+ {icon} + {icon && /} +

{heading}

+
+ + + + +
+ +
{children}
+ + {footerChildren ?
{footerChildren}
: null} +
+
+
+ ); +}; + +export default BaseModal; diff --git a/apps/client/components/shared/ColorAvatar.tsx b/apps/client/components/shared/ColorAvatar.tsx new file mode 100644 index 00000000..9782a0a4 --- /dev/null +++ b/apps/client/components/shared/ColorAvatar.tsx @@ -0,0 +1,20 @@ +import { Avatar, IconButton } from '@mui/material'; +import isFunction from 'lodash/isFunction'; + +type Props = { + color: string; + size?: number; + onClick?: (color: string) => void; +}; + +const ColorAvatar: React.FC = ({ color, size = 20, onClick }) => { + const handleClick = () => isFunction(onClick) && onClick(color); + + return ( + + + + ); +}; + +export default ColorAvatar; diff --git a/apps/client/components/shared/ColorPicker.tsx b/apps/client/components/shared/ColorPicker.tsx new file mode 100644 index 00000000..895ba5c5 --- /dev/null +++ b/apps/client/components/shared/ColorPicker.tsx @@ -0,0 +1,68 @@ +import { Popover, TextField } from '@mui/material'; +import React, { useMemo, useState } from 'react'; +import { HexColorPicker } from 'react-colorful'; + +import { hexColorPattern } from '@/config/colors'; + +import ColorAvatar from './ColorAvatar'; + +type Props = { + label: string; + color: string; + className?: string; + onChange: (color: string) => void; +}; + +const ColorPicker: React.FC = ({ label, color, onChange, className }) => { + const isValid = useMemo(() => hexColorPattern.test(color), [color]); + + const [anchorEl, setAnchorEl] = useState(null); + const isOpen = Boolean(anchorEl); + + const handleOpen = (event: React.MouseEvent) => { + setAnchorEl(event.currentTarget); + }; + + const handleClose = () => { + setAnchorEl(null); + }; + + const handleChange = (event: React.ChangeEvent) => { + if (hexColorPattern.test(event.target.value)) { + onChange(event.target.value); + } + }; + + return ( + <> + + +
+ ), + }} + /> + + + + + ); +}; + +export default ColorPicker; diff --git a/apps/client/components/shared/Footer.tsx b/apps/client/components/shared/Footer.tsx new file mode 100644 index 00000000..8a363be2 --- /dev/null +++ b/apps/client/components/shared/Footer.tsx @@ -0,0 +1,26 @@ +import clsx from 'clsx'; +import { Trans, useTranslation } from 'next-i18next'; + +type Props = { + className?: string; +}; + +const Footer: React.FC = ({ className }) => { + const { t } = useTranslation(); + + return ( + + ); +}; + +export default Footer; diff --git a/apps/client/components/shared/Heading.module.scss b/apps/client/components/shared/Heading.module.scss new file mode 100644 index 00000000..756123a0 --- /dev/null +++ b/apps/client/components/shared/Heading.module.scss @@ -0,0 +1,17 @@ +.container { + @apply flex items-center justify-between; + + h1 { + @apply text-2xl; + } + + .actions { + @apply flex gap-2 opacity-75 transition-opacity lg:opacity-50 dark:lg:opacity-25; + } + + &:hover { + .actions { + @apply opacity-75; + } + } +} diff --git a/apps/client/components/shared/Heading.tsx b/apps/client/components/shared/Heading.tsx new file mode 100644 index 00000000..a1aeb74d --- /dev/null +++ b/apps/client/components/shared/Heading.tsx @@ -0,0 +1,100 @@ +import { Check, Delete, DriveFileRenameOutline, Grade, Visibility, VisibilityOff } from '@mui/icons-material'; +import { IconButton, TextField, Tooltip } from '@mui/material'; +import clsx from 'clsx'; +import get from 'lodash/get'; +import { useTranslation } from 'next-i18next'; +import React, { useMemo, useState } from 'react'; + +import sections from '@/config/sections'; +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import { deleteSection, setResumeState } from '@/store/resume/resumeSlice'; + +import styles from './Heading.module.scss'; + +type Props = { + path?: string; + name?: string; + isEditable?: boolean; + isHideable?: boolean; + isDeletable?: boolean; + action?: React.ReactNode; +}; + +const Heading: React.FC = ({ + path, + name, + isEditable = false, + isHideable = false, + isDeletable = false, + action, +}) => { + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const heading = useAppSelector((state) => get(state.resume, `${path}.name`, name)); + const visibility = useAppSelector((state) => get(state.resume, `${path}.visible`, true)); + + const [editMode, setEditMode] = useState(false); + + const id = useMemo(() => path && path.split('.').at(-1), [path]); + + const icon = sections.find((x) => x.id === id)?.icon || ; + + const toggleVisibility = () => { + dispatch(setResumeState({ path: `${path}.visible`, value: !visibility })); + }; + + const toggleEditMode = () => setEditMode(!editMode); + + const handleChange = (event: React.ChangeEvent) => { + dispatch(setResumeState({ path: `${path}.name`, value: event.target.value })); + }; + + const handleDelete = () => { + dispatch(deleteSection({ path })); + }; + + return ( +
+
+
{icon}
+ {editMode ? ( + + ) : ( +

{heading}

+ )} +
+ +
+ {isEditable && ( + + {editMode ? : } + + )} + + {isHideable && ( + + {visibility ? : } + + )} + + {isDeletable && ( + + + + + + )} + + {action} +
+
+ ); +}; + +export default Heading; diff --git a/apps/client/components/shared/List.module.scss b/apps/client/components/shared/List.module.scss new file mode 100644 index 00000000..e7aa5692 --- /dev/null +++ b/apps/client/components/shared/List.module.scss @@ -0,0 +1,7 @@ +.container { + @apply rounded-lg border dark:border-neutral-50/10; + + .empty { + @apply py-8 text-center; + } +} diff --git a/apps/client/components/shared/List.tsx b/apps/client/components/shared/List.tsx new file mode 100644 index 00000000..c46b7a92 --- /dev/null +++ b/apps/client/components/shared/List.tsx @@ -0,0 +1,95 @@ +import { ListItem as ListItemType } from '@reactive-resume/schema'; +import clsx from 'clsx'; +import get from 'lodash/get'; +import isArray from 'lodash/isArray'; +import isEmpty from 'lodash/isEmpty'; +import isFunction from 'lodash/isFunction'; +import { useTranslation } from 'next-i18next'; +import { useCallback } from 'react'; +import { DndProvider } from 'react-dnd'; +import { HTML5Backend } from 'react-dnd-html5-backend'; + +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import { deleteItem, setResumeState } from '@/store/resume/resumeSlice'; + +import styles from './List.module.scss'; +import ListItem from './ListItem'; + +type Props = { + path: string; + titleKey?: string; + subtitleKey?: string; + onEdit?: (item: ListItemType) => void; + onDuplicate?: (item: ListItemType) => void; + className?: string; +}; + +const List: React.FC = ({ + path, + titleKey = 'title', + subtitleKey = 'subtitle', + onEdit, + onDuplicate, + className, +}) => { + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + + const list: Array = useAppSelector((state) => get(state.resume, path, [])); + + const handleEdit = (item: ListItemType) => { + isFunction(onEdit) && onEdit(item); + }; + + const handleDuplicate = (item: ListItemType) => { + isFunction(onDuplicate) && onDuplicate(item); + }; + + const handleDelete = (item: ListItemType) => { + dispatch(deleteItem({ path, value: item })); + }; + + const handleMove = useCallback( + (dragIndex: number, hoverIndex: number) => { + const dragItem = list[dragIndex]; + const newList = [...list]; + + newList.splice(dragIndex, 1); + newList.splice(hoverIndex, 0, dragItem); + + dispatch(setResumeState({ path, value: newList })); + }, + [list, dispatch, path] + ); + + return ( + +
+ {isEmpty(list) &&
{t('builder.common.list.empty-text')}
} + + {list.map((item, index) => { + const title = get(item, titleKey, ''); + const subtitleObj = get(item, subtitleKey); + const subtitle: string = isArray(subtitleObj) ? subtitleObj.join(', ') : subtitleObj; + + return ( + + ); + })} +
+
+ ); +}; + +export default List; diff --git a/apps/client/components/shared/ListItem.module.scss b/apps/client/components/shared/ListItem.module.scss new file mode 100644 index 00000000..f6bc370e --- /dev/null +++ b/apps/client/components/shared/ListItem.module.scss @@ -0,0 +1,18 @@ +.item { + @apply flex items-center justify-between; + @apply py-5 pl-5 pr-2; + @apply border-b border-neutral-900/10 last:border-0 dark:border-neutral-50/10; + @apply cursor-move transition-opacity; + + .meta { + @apply grid gap-1; + + .title { + @apply font-semibold; + } + + .subtitle { + @apply text-xs opacity-50; + } + } +} diff --git a/apps/client/components/shared/ListItem.tsx b/apps/client/components/shared/ListItem.tsx new file mode 100644 index 00000000..fbff8ef3 --- /dev/null +++ b/apps/client/components/shared/ListItem.tsx @@ -0,0 +1,157 @@ +import { DeleteOutline, DriveFileRenameOutline, FileCopy, MoreVert } from '@mui/icons-material'; +import { Divider, IconButton, ListItemIcon, ListItemText, Menu, MenuItem, Tooltip } from '@mui/material'; +import { ListItem as ListItemType } from '@reactive-resume/schema'; +import clsx from 'clsx'; +import isFunction from 'lodash/isFunction'; +import React, { useRef, useState } from 'react'; +import { DropTargetMonitor, useDrag, useDrop, XYCoord } from 'react-dnd'; + +import styles from './ListItem.module.scss'; + +interface DragItem { + id: string; + type: string; + index: number; +} + +type Props = { + item: ListItemType; + index: number; + title: string; + subtitle?: string; + onMove?: (dragIndex: number, hoverIndex: number) => void; + onEdit?: (item: ListItemType) => void; + onDelete?: (item: ListItemType) => void; + onDuplicate?: (item: ListItemType) => void; +}; + +const ListItem: React.FC = ({ item, index, title, subtitle, onMove, onEdit, onDelete, onDuplicate }) => { + const ref = useRef(null); + const [anchorEl, setAnchorEl] = useState(null); + + const [{ handlerId }, drop] = useDrop({ + accept: 'ListItem', + collect(monitor) { + return { handlerId: monitor.getHandlerId() }; + }, + hover(item: DragItem, monitor: DropTargetMonitor) { + if (!ref.current) { + return; + } + const dragIndex = item.index; + const hoverIndex = index; + + if (dragIndex === hoverIndex) { + return; + } + + const hoverBoundingRect = ref.current?.getBoundingClientRect(); + const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2; + const clientOffset = monitor.getClientOffset(); + const hoverClientY = (clientOffset as XYCoord).y - hoverBoundingRect.top; + + if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) { + return; + } + + if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) { + return; + } + + isFunction(onMove) && onMove(dragIndex, hoverIndex); + + item.index = hoverIndex; + }, + }); + + const [{ isDragging }, drag] = useDrag({ + type: 'ListItem', + item: () => { + return { id: item.id, index }; + }, + collect: (monitor) => ({ + isDragging: monitor.isDragging(), + }), + }); + + const handleOpen = (event: React.MouseEvent) => { + setAnchorEl(event.currentTarget); + }; + + const handleClose = () => { + setAnchorEl(null); + }; + + const handleEdit = (item: ListItemType) => { + isFunction(onEdit) && onEdit(item); + handleClose(); + }; + + const handleDelete = (item: ListItemType) => { + isFunction(onDelete) && onDelete(item); + handleClose(); + }; + + const handleDuplicate = (item: ListItemType) => { + isFunction(onDuplicate) && onDuplicate(item); + handleClose(); + }; + + drag(drop(ref)); + + return ( +
+
+

{title}

+

{subtitle}

+
+ +
+ + + + + + handleEdit(item)}> + + + + Edit + + + handleDuplicate(item)}> + + + + Duplicate + + + + + +
+ handleDelete(item)}> + + + + Delete + +
+
+
+
+
+ ); +}; + +export default ListItem; diff --git a/apps/client/components/shared/Loading.module.scss b/apps/client/components/shared/Loading.module.scss new file mode 100644 index 00000000..9559bdbd --- /dev/null +++ b/apps/client/components/shared/Loading.module.scss @@ -0,0 +1,32 @@ +.loading { + animation: progress 2s linear infinite; + + @apply fixed top-0 z-50; + @apply bg-primary-500 shadow-primary-500/50 h-0.5 w-screen shadow; +} + +@keyframes progress { + 0% { + left: 0%; + right: 100%; + width: 0; + } + + 10% { + left: 0%; + right: 75%; + width: 25%; + } + + 90% { + left: 75%; + right: 0%; + width: 25%; + } + + 100% { + left: 100%; + right: 0%; + width: 0; + } +} diff --git a/apps/client/components/shared/Loading.tsx b/apps/client/components/shared/Loading.tsx new file mode 100644 index 00000000..bbd6355d --- /dev/null +++ b/apps/client/components/shared/Loading.tsx @@ -0,0 +1,18 @@ +import { useRouter } from 'next/router'; +import { useIsFetching, useIsMutating } from 'react-query'; + +import styles from './Loading.module.scss'; + +const Loading: React.FC = () => { + const { isReady } = useRouter(); + const isFetching = useIsFetching(); + const isMutating = useIsMutating(); + + if (!isFetching && !isMutating && isReady) { + return null; + } + + return
; +}; + +export default Loading; diff --git a/apps/client/components/shared/Logo.tsx b/apps/client/components/shared/Logo.tsx new file mode 100644 index 00000000..779b9b17 --- /dev/null +++ b/apps/client/components/shared/Logo.tsx @@ -0,0 +1,11 @@ +import Image from 'next/image'; + +type Props = { + size?: 256 | 64 | 48 | 40 | 32; +}; + +const Logo: React.FC = ({ size = 64 }) => { + return Reactive Resume; +}; + +export default Logo; diff --git a/apps/client/components/shared/Markdown.tsx b/apps/client/components/shared/Markdown.tsx new file mode 100644 index 00000000..f49bd961 --- /dev/null +++ b/apps/client/components/shared/Markdown.tsx @@ -0,0 +1,18 @@ +import clsx from 'clsx'; +import ReactMarkdown from 'react-markdown'; +import remarkGfm from 'remark-gfm'; + +type Props = { + children?: string; + className?: string; +}; + +const Markdown: React.FC = ({ className, children }) => { + return ( + + {children} + + ); +}; + +export default Markdown; diff --git a/apps/client/components/shared/MarkdownSupported.tsx b/apps/client/components/shared/MarkdownSupported.tsx new file mode 100644 index 00000000..2fb46904 --- /dev/null +++ b/apps/client/components/shared/MarkdownSupported.tsx @@ -0,0 +1,20 @@ +import { Link } from '@mui/material'; +import { Trans, useTranslation } from 'next-i18next'; + +const MarkdownSupported: React.FC = () => { + const { t } = useTranslation(); + + return ( + + + This section supports + + markdown + + formatting. + + + ); +}; + +export default MarkdownSupported; diff --git a/apps/client/components/shared/NoSSR.tsx b/apps/client/components/shared/NoSSR.tsx new file mode 100644 index 00000000..2b7f3534 --- /dev/null +++ b/apps/client/components/shared/NoSSR.tsx @@ -0,0 +1,5 @@ +import dynamic from 'next/dynamic'; + +const NoSSR: React.FC = ({ children }) => <>{children}; + +export default dynamic(() => Promise.resolve(NoSSR), { ssr: false }); diff --git a/apps/client/components/shared/ResumeInput.tsx b/apps/client/components/shared/ResumeInput.tsx new file mode 100644 index 00000000..270a582a --- /dev/null +++ b/apps/client/components/shared/ResumeInput.tsx @@ -0,0 +1,51 @@ +import { TextField } from '@mui/material'; +import get from 'lodash/get'; +import { useEffect, useState } from 'react'; + +import { useAppDispatch, useAppSelector } from '@/store/hooks'; +import { setResumeState } from '@/store/resume/resumeSlice'; + +import MarkdownSupported from './MarkdownSupported'; + +interface Props { + type?: 'text' | 'textarea'; + label: string; + path: string; + className?: string; + markdownSupported?: boolean; +} + +const ResumeInput: React.FC = ({ type = 'text', label, path, className, markdownSupported = false }) => { + const dispatch = useAppDispatch(); + + const stateValue = useAppSelector((state) => get(state.resume, path, '')); + + useEffect(() => { + setValue(stateValue); + }, [stateValue]); + + const [value, setValue] = useState(stateValue); + + const onChange = (event: React.ChangeEvent) => { + setValue(event.target.value); + dispatch(setResumeState({ path, value: event.target.value })); + }; + + if (type === 'textarea') { + return ( + } + /> + ); + } + + return ; +}; + +export default ResumeInput; diff --git a/apps/client/components/shared/ThemeSwitch.tsx b/apps/client/components/shared/ThemeSwitch.tsx new file mode 100644 index 00000000..11f19418 --- /dev/null +++ b/apps/client/components/shared/ThemeSwitch.tsx @@ -0,0 +1,50 @@ +import { styled, Switch } from '@mui/material'; + +const ThemeSwitch = styled(Switch)(({ theme }) => ({ + width: 62, + height: 34, + padding: 7, + '& .MuiSwitch-switchBase': { + margin: 1, + padding: 0, + transform: 'translateX(6px)', + '&.Mui-checked': { + color: '#fff', + transform: 'translateX(22px)', + '& .MuiSwitch-thumb:before': { + backgroundImage: `url('data:image/svg+xml;utf8,')`, + }, + '& + .MuiSwitch-track': { + opacity: 1, + backgroundColor: theme.palette.mode === 'dark' ? '#8796A5' : '#aab4be', + }, + }, + }, + '& .MuiSwitch-thumb': { + backgroundColor: theme.palette.mode === 'dark' ? '#003892' : '#001e3c', + width: 32, + height: 32, + '&:before': { + content: "''", + position: 'absolute', + width: '100%', + height: '100%', + left: 0, + top: 0, + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center', + backgroundImage: `url('data:image/svg+xml;utf8,')`, + }, + }, + '& .MuiSwitch-track': { + opacity: 1, + backgroundColor: theme.palette.mode === 'dark' ? '#8796A5' : '#aab4be', + borderRadius: 20 / 2, + }, +})); + +export default ThemeSwitch; diff --git a/apps/client/config/colors.ts b/apps/client/config/colors.ts new file mode 100644 index 00000000..b62d9bd3 --- /dev/null +++ b/apps/client/config/colors.ts @@ -0,0 +1,20 @@ +export const hexColorPattern = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i; + +export const colorOptions: string[] = [ + '#f44336', + '#e91e63', + '#9c27b0', + '#673ab7', + '#3f51b5', + '#4896d5', + '#03a9f4', + '#00bcd4', + '#009688', + '#4caf50', + '#8bc34a', + '#cddc39', + '#ffeb3b', + '#ffc107', + '#222222', + '#dddddd', +]; diff --git a/apps/client/config/languages.ts b/apps/client/config/languages.ts new file mode 100644 index 00000000..af3782ff --- /dev/null +++ b/apps/client/config/languages.ts @@ -0,0 +1,20 @@ +export type Language = { + code: string; + name: string; + localName?: string; +}; + +export const languages: Language[] = [ + { + code: 'en', + name: 'English', + }, +]; + +export const languageMap = languages.reduce( + (acc, lang) => ({ + ...acc, + [lang.code]: lang, + }), + {} +); diff --git a/apps/client/config/screenshots.ts b/apps/client/config/screenshots.ts new file mode 100644 index 00000000..d174afcc --- /dev/null +++ b/apps/client/config/screenshots.ts @@ -0,0 +1,31 @@ +type Screenshot = { + src: string; + alt: string; +}; + +export const screenshots: Screenshot[] = [ + { + src: '/images/screenshots/dashboard.png', + alt: 'Create multiple resumes under one account', + }, + { + src: '/images/screenshots/import-external.png', + alt: 'Import your data from LinkedIn, JSON Resume or Reactive Resume', + }, + { + src: '/images/screenshots/builder.png', + alt: 'Variety of features to personalize your resume to your liking', + }, + { + src: '/images/screenshots/add-section.png', + alt: 'Multiple pre-built sections which can be renamed, or just create your own section', + }, + { + src: '/images/screenshots/page-layout.png', + alt: 'Create multiple pages, manage section layouts as easy as dragging them around', + }, + { + src: '/images/screenshots/preview.png', + alt: 'Get a unique link to your resume which can be shared with anyone for the latest information', + }, +]; diff --git a/apps/client/config/sections.tsx b/apps/client/config/sections.tsx new file mode 100644 index 00000000..ebd66fb8 --- /dev/null +++ b/apps/client/config/sections.tsx @@ -0,0 +1,181 @@ +import { + Architecture, + CardGiftcard, + Category, + Coffee, + Download, + EmojiEvents, + FontDownload, + Groups, + Language, + Link as LinkIcon, + Map, + Margin, + MenuBook, + Palette, + Person, + Sailing, + School, + Settings as SettingsIcon, + Share, + Style, + Twitter, + VolunteerActivism, + Work, +} from '@mui/icons-material'; +import { Section as SectionRecord } from '@reactive-resume/schema'; +import isEmpty from 'lodash/isEmpty'; + +import Basics from '@/components/build/LeftSidebar/sections/Basics'; +import Location from '@/components/build/LeftSidebar/sections/Location'; +import Profiles from '@/components/build/LeftSidebar/sections/Profiles'; +import Section from '@/components/build/LeftSidebar/sections/Section'; +import CustomCSS from '@/components/build/RightSidebar/sections/CustomCSS'; +import Export from '@/components/build/RightSidebar/sections/Export'; +import Layout from '@/components/build/RightSidebar/sections/Layout'; +import Links from '@/components/build/RightSidebar/sections/Links'; +import Settings from '@/components/build/RightSidebar/sections/Settings'; +import Sharing from '@/components/build/RightSidebar/sections/Sharing'; +import Templates from '@/components/build/RightSidebar/sections/Templates'; +import Theme from '@/components/build/RightSidebar/sections/Theme'; +import Typography from '@/components/build/RightSidebar/sections/Typography'; +import { SidebarSection } from '@/types/app'; + +export const left: SidebarSection[] = [ + { + id: 'basics', + icon: , + component: , + }, + { + id: 'location', + icon: , + component: , + }, + { + id: 'profiles', + icon: , + component: , + }, + { + id: 'work', + icon: , + component:
, + }, + { + id: 'education', + icon: , + component:
, + }, + { + id: 'awards', + icon: , + component:
, + }, + { + id: 'certifications', + icon: , + component:
, + }, + { + id: 'publications', + icon: , + component:
, + }, + { + id: 'skills', + icon: , + component:
, + }, + { + id: 'languages', + icon: , + component:
, + }, + { + id: 'interests', + icon: , + component:
, + }, + { + id: 'volunteer', + icon: , + component: ( +
+ ), + }, + { + id: 'projects', + icon: , + component:
, + }, + { + id: 'references', + icon: , + component:
, + }, +]; + +export const right: SidebarSection[] = [ + { + id: 'templates', + icon: , + component: , + }, + { + id: 'layout', + icon: , + component: , + }, + { + id: 'typography', + icon: , + component: , + }, + { + id: 'theme', + icon: , + component: , + }, + { + id: 'css', + icon: + + + + +
+ + + + +
+

Hey {{name}},

+ +

+ Trouble signing in? Don't worry, resetting your password is easy. +
+ We'll have you up and running in no time. +

+ +

+ Just click the button below to set a new password. +
+ But hurry, because the link expires in 30 minutes. +

+ + + Reset your password + + +

If you did not request to change your password, then you can safely + ignore this email.

+
+ +
+ By the community, for the community. + Thank you for using Reactive Resume. +
+
+ + + + \ No newline at end of file diff --git a/apps/server/src/main.ts b/apps/server/src/main.ts new file mode 100644 index 00000000..466706c1 --- /dev/null +++ b/apps/server/src/main.ts @@ -0,0 +1,36 @@ +import { Logger, ValidationPipe } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { NestFactory } from '@nestjs/core'; +import { NestExpressApplication } from '@nestjs/platform-express'; +import * as cookieParser from 'cookie-parser'; +import { join } from 'path'; + +import { AppModule } from './app.module'; + +const bootstrap = async () => { + const app = await NestFactory.create(AppModule); + + // Prefix + const globalPrefix = 'api'; + app.setGlobalPrefix(globalPrefix); + + // Middleware + app.enableCors({ credentials: true }); + app.enableShutdownHooks(); + app.use(cookieParser()); + + // Pipes + app.useGlobalPipes(new ValidationPipe({ transform: true })); + + // Email Templates + app.setBaseViewsDir(join(__dirname, 'mail/templates')); + app.setViewEngine('hbs'); + + const configService = app.get(ConfigService); + const port = configService.get('app.port'); + + await app.listen(port); + Logger.log(`🚀 Server is running on: http://localhost:${port}/${globalPrefix}`); +}; + +bootstrap(); diff --git a/apps/server/src/printer/printer.controller.ts b/apps/server/src/printer/printer.controller.ts new file mode 100644 index 00000000..bacf305d --- /dev/null +++ b/apps/server/src/printer/printer.controller.ts @@ -0,0 +1,13 @@ +import { Controller, Get, Param } from '@nestjs/common'; + +import { PrinterService } from './printer.service'; + +@Controller('printer') +export class PrinterController { + constructor(private readonly printerService: PrinterService) {} + + @Get('/:username/:slug') + printAsPdf(@Param('username') username: string, @Param('slug') slug: string): Promise { + return this.printerService.printAsPdf(username, slug); + } +} diff --git a/apps/server/src/printer/printer.module.ts b/apps/server/src/printer/printer.module.ts new file mode 100644 index 00000000..c8ee3c45 --- /dev/null +++ b/apps/server/src/printer/printer.module.ts @@ -0,0 +1,12 @@ +import { Module } from '@nestjs/common'; +import { ConfigModule } from '@nestjs/config'; + +import { PrinterController } from './printer.controller'; +import { PrinterService } from './printer.service'; + +@Module({ + imports: [ConfigModule], + controllers: [PrinterController], + providers: [PrinterService], +}) +export class PrinterModule {} diff --git a/apps/server/src/printer/printer.service.ts b/apps/server/src/printer/printer.service.ts new file mode 100644 index 00000000..64a4f9e4 --- /dev/null +++ b/apps/server/src/printer/printer.service.ts @@ -0,0 +1,86 @@ +import { Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { SchedulerRegistry } from '@nestjs/schedule'; +import { mkdir, unlink, writeFile } from 'fs/promises'; +import { nanoid } from 'nanoid'; +import { join } from 'path'; +import { PDFDocument } from 'pdf-lib'; +import { Browser, chromium } from 'playwright'; + +export const DELETION_TIME = 10 * 1000; // 10 seconds + +@Injectable() +export class PrinterService implements OnModuleInit, OnModuleDestroy { + private browser: Browser; + + constructor(private readonly schedulerRegistry: SchedulerRegistry, private readonly configService: ConfigService) {} + + async onModuleInit() { + this.browser = await chromium.launch(); + } + + async onModuleDestroy() { + await this.browser.close(); + } + + async printAsPdf(username: string, slug: string): Promise { + const url = this.configService.get('app.url'); + const secretKey = this.configService.get('app.secretKey'); + const serverUrl = this.configService.get('app.serverUrl'); + + const page = await this.browser.newPage(); + + await page.goto(`${url}/${username}/${slug}/printer?secretKey=${secretKey}`); + await page.waitForSelector('html.wf-active'); + + const resumePages = await page.$$eval('[data-page]', (pages) => { + return pages.map((page, index) => ({ + pageNumber: index + 1, + innerHTML: page.innerHTML, + height: page.clientHeight, + })); + }); + + const pdf = await PDFDocument.create(); + const directory = join(__dirname, 'assets', 'resumes'); + const filename = `RxResume_PDFExport_${nanoid()}.pdf`; + const publicUrl = `${serverUrl}/resumes/${filename}`; + + for (let index = 0; index < resumePages.length; index++) { + await page.evaluate((page) => (document.body.innerHTML = page.innerHTML), resumePages[index]); + + const buffer = await page.pdf({ + width: '210mm', + printBackground: true, + height: resumePages[index].height, + }); + + const pageDoc = await PDFDocument.load(buffer); + const copiedPages = await pdf.copyPages(pageDoc, [0]); + + copiedPages.forEach((copiedPage) => pdf.addPage(copiedPage)); + } + + await page.close(); + + const pdfBytes = await pdf.save(); + + await mkdir(directory, { recursive: true }); + await writeFile(join(directory, filename), pdfBytes); + + // Delete PDF artifacts after DELETION_TIME ms + const timeout = setTimeout(async () => { + try { + await unlink(join(directory, filename)); + + this.schedulerRegistry.deleteTimeout(`delete-${filename}`); + } catch { + // pass through + } + }, DELETION_TIME); + + this.schedulerRegistry.addTimeout(`delete-${filename}`, timeout); + + return publicUrl; + } +} diff --git a/apps/server/src/resume/data/covers.ts b/apps/server/src/resume/data/covers.ts new file mode 100644 index 00000000..cb258692 --- /dev/null +++ b/apps/server/src/resume/data/covers.ts @@ -0,0 +1,41 @@ +export const covers = [ + 'cover-0ee139.jpeg', + 'cover-1ab08.jpeg', + 'cover-1f8c9.jpeg', + 'cover-1fe54f.jpeg', + 'cover-253f4a.jpeg', + 'cover-33aec.jpeg', + 'cover-3sc.jpeg', + 'cover-466cb.jpeg', + 'cover-478b3.jpeg', + 'cover-4d9.jpeg', + 'cover-4ed.jpeg', + 'cover-4fd88.jpeg', + 'cover-50f3f3.jpeg', + 'cover-6b8ae.jpeg', + 'cover-6fa09.jpeg', + 'cover-713b2f.jpeg', + 'cover-737f2.jpeg', + 'cover-73dab8.jpeg', + 'cover-79df42.jpeg', + 'cover-7b601.jpeg', + 'cover-7dh.jpeg', + 'cover-7e6ae.jpeg', + 'cover-94b.jpeg', + 'cover-96bdd.jpeg', + 'cover-98afd.jpeg', + 'cover-9hk.jpeg', + 'cover-b26e75.jpeg', + 'cover-b6ea6.jpeg', + 'cover-c219f2.jpeg', + 'cover-c3642.jpeg', + 'cover-c584b.jpeg', + 'cover-c682cb.jpeg', + 'cover-c82a8.jpeg', + 'cover-d312a7.jpeg', + 'cover-dcbd8.jpeg', + 'cover-df274.jpeg', + 'cover-e26ee.jpeg', + 'cover-f3034.jpeg', + 'cover-fec87.jpeg', +]; diff --git a/apps/server/src/resume/data/defaultState.ts b/apps/server/src/resume/data/defaultState.ts new file mode 100644 index 00000000..778e94d2 --- /dev/null +++ b/apps/server/src/resume/data/defaultState.ts @@ -0,0 +1,161 @@ +import { Resume } from '@reactive-resume/schema'; + +const defaultCSS = `/* Enter custom CSS here */ + +* { + outline: 1px solid #000; +}`; + +const defaultState: Partial = { + basics: { + email: '', + headline: '', + photo: { + url: '', + visible: true, + filters: { + size: 128, + shape: 'square', + border: false, + grayscale: false, + }, + }, + name: '', + phone: '', + summary: '', + website: '', + location: { + address: '', + city: '', + country: '', + region: '', + postalCode: '', + }, + profiles: [], + }, + sections: { + work: { + id: 'work', + name: 'Work Experience', + type: 'basic', + columns: 2, + visible: true, + items: [], + }, + education: { + id: 'education', + name: 'Education', + type: 'basic', + columns: 2, + visible: true, + items: [], + }, + awards: { + id: 'awards', + name: 'Awards', + type: 'basic', + columns: 2, + visible: true, + items: [], + }, + certifications: { + id: 'certifications', + name: 'Certifications', + type: 'basic', + columns: 2, + visible: true, + items: [], + }, + publications: { + id: 'publications', + name: 'Publications', + type: 'basic', + columns: 2, + visible: true, + items: [], + }, + skills: { + id: 'skills', + name: 'Skills', + type: 'basic', + columns: 2, + visible: true, + items: [], + }, + languages: { + id: 'languages', + name: 'Languages', + type: 'basic', + columns: 2, + visible: true, + items: [], + }, + interests: { + id: 'interests', + name: 'Interests', + type: 'basic', + columns: 2, + visible: true, + items: [], + }, + volunteer: { + id: 'volunteer', + name: 'Volunteer Experience', + type: 'basic', + columns: 2, + visible: true, + items: [], + }, + references: { + id: 'references', + name: 'References', + type: 'basic', + columns: 2, + visible: true, + items: [], + }, + projects: { + id: 'projects', + name: 'Projects', + type: 'basic', + columns: 2, + visible: true, + items: [], + }, + }, + metadata: { + css: { + value: defaultCSS, + visible: false, + }, + theme: { + text: '#000000', + background: '#ffffff', + primary: '#f44336', + }, + date: { + format: 'MMMM DD, YYYY', + }, + layout: [ + [ + ['work', 'education', 'projects', 'volunteer', 'references'], + ['skills', 'interests', 'languages', 'awards', 'certifications', 'publications'], + ], + ], + language: 'en', + template: 'kakuna', + typography: { + family: { + heading: 'Open Sans', + body: 'Open Sans', + }, + size: { + heading: 28, + body: 14, + }, + }, + }, + public: true, +}; + +export default defaultState; diff --git a/apps/server/src/resume/data/sampleData.ts b/apps/server/src/resume/data/sampleData.ts new file mode 100644 index 00000000..1471e4c8 --- /dev/null +++ b/apps/server/src/resume/data/sampleData.ts @@ -0,0 +1,459 @@ +import { Resume } from '../entities/resume.entity'; + +const sampleData: Partial = { + basics: { + name: 'Alexis Jones', + email: 'alexis.jones@gmail.com', + phone: '+1 800 1200 3820', + photo: { + url: `${process.env.APP_URL}/images/sample-photo.jpg`, + filters: { + size: 128, + shape: 'rounded-square', + grayscale: false, + border: false, + }, + visible: true, + }, + summary: + 'I am a creative frontend developer offering 4+ years of experience providing high-impact web solutions for diverse industry organizations. Skilled in designing, developing and testing multiple web-based applications incorporating a range of technologies. Aspiring to combine broad background with strong technical skills to excel as a frontend web developer.', + website: 'alexisjones.com', + headline: 'Highly Creative Frontend Web Developer', + location: { + city: 'Stuttgart', + region: 'Baden-Württemberg', + address: 'Ollenhauer Str. 51', + country: 'Germany', + postalCode: '70376', + }, + profiles: [ + { + id: '4df61ffc-e48b-43f1-9434-add35d9cb155', + url: 'https://linkedin.com/in/AlexisJones', + network: 'LinkedIn', + username: 'AlexisJones', + }, + { + id: '8f77327d-4484-40b4-92eb-65eaa6aae5f4', + url: 'https://dribbble.com/AlexisJones', + network: 'Dribbble', + username: 'AlexisJones', + }, + ], + }, + sections: { + work: { + id: 'work', + name: 'Work Experience', + type: 'basic', + items: [ + { + id: 'fe280c61-9d92-4dba-8a08-274866470096', + url: 'https://www.espritcam.com', + date: { + end: '', + start: '2015-09-01T16:34:27.000Z', + }, + name: 'DP Technology Corp.', + summary: + '- Manage website development projects from initial design through completion, optimizing all cross-browser and multi-platform compatibility.\n- Work closely with programmers and clients to meet project requirements, goals, and desired functionality.\n- Develop and integrate customized themes into WordPress, PHP-Fusion, and Concrete5.\nConduct training for clients on handling website content management systems.\n- Enable site-wide promotions by programming HTML5 canvases to animate particles on web backgrounds.', + position: 'Frontend Developer, Stuttgart DE', + }, + { + id: '285d78f8-df56-4569-ba6b-cff5ebe5381e', + url: 'https://www.vokophone.com', + date: { + end: '2015-07-31T22:00:00.000Z', + start: '2011-05-31T22:00:00.000Z', + }, + name: 'Voko Communications', + summary: + '- Developed websites from front to backend using PHP, JavaScript, and HTML.\n- Enhanced user experience and accomplish webpage objectives by creating site structure, navigation, page optimization, and graphics integration.\n- Implemented enhancements that improved web functionality and responsiveness.\n- Designed and maintained both corporate and client websites, using scripting languages and content management systems including WordPress.', + position: 'Frontend Developer', + }, + ], + columns: 1, + visible: true, + }, + awards: { + id: 'awards', + name: 'Awards', + type: 'basic', + items: [ + { + title: 'Blitz Hackathon', + awarder: '2nd Place', + date: '2018-03-31T22:00:00.000Z', + url: '', + summary: '', + id: '657cadb0-c07d-4a35-8351-9079598c7ac0', + }, + { + title: 'Carl-Zeiss Hackathon', + awarder: '2nd Place', + date: '2017-05-09T22:00:00.000Z', + url: '', + summary: '', + id: 'db3bc5cb-483e-4221-9867-9c28ee5f2051', + }, + { + title: 'JP Morgan Chase - Code for Good', + awarder: '3rd Place', + date: '2018-03-12T23:00:00.000Z', + url: '', + summary: '', + id: '31eb2547-4175-494f-a16a-0891aea483b7', + }, + ], + columns: 3, + visible: true, + }, + skills: { + id: 'skills', + name: 'Skills', + type: 'basic', + items: [ + { + id: 'e27660b2-2b0f-48b0-9b04-3597f0282d06', + name: 'Frontend Web Development', + level: 'Expert', + keywords: ['ReactJS', 'HTML/CSS', 'jQuery', 'PHP'], + levelNum: 10, + }, + { + name: 'Backend Development', + level: 'Novice', + levelNum: 8, + keywords: ['NodeJS', 'Springboot', 'Python/Flask', 'Postman'], + id: '2f98e07e-21f7-4b40-81e3-4cf529d43339', + }, + { + id: 'bf4253f2-7829-432c-a1d5-07446e7ae873', + name: 'Adobe Creative Cloud', + level: 'Novice', + keywords: ['Photoshop', 'Illustrator', 'InDesign', 'Fireworks'], + levelNum: 8, + }, + { + id: '0b4a6206-7a2b-47a4-b71d-59c24ceee219', + name: 'Content Management Systems', + level: 'Intermediate', + keywords: ['Wordpress', 'Joomla', 'Mailchimp'], + levelNum: 6, + }, + ], + columns: 2, + visible: true, + }, + projects: { + id: 'projects', + name: 'Projects', + type: 'basic', + items: [ + { + name: 'Fintech News Inc.', + description: 'Backend Developer', + date: { + start: '2020-01-01T17:14:14.000Z', + end: '2020-04-01T16:14:20.000Z', + }, + url: '', + summary: + '- Created a content management system serving as a client interface that reduced download times by 30%.\n- Developed new admin panel, which improved internal operating efficiency by over 40%.\n- Created comprehensive testing regime using RSpec to ensure bug-free code.\n- Rebuilt entire website with up to date technologies and frameworks.', + keywords: ['Python', 'PHP', 'Ruby', 'Javascript'], + id: '8c12add5-605a-449f-a8a6-e7625c702e60', + }, + { + name: 'Systron Solutions, San Francisco, CA', + description: 'Inside Sales Associate', + date: { + start: '2020-01-01T17:14:14.000Z', + end: '2020-04-01T16:14:20.000Z', + }, + url: '', + summary: + '- Performed an average of 90+ cold calls daily creating three new qualified prospects exceeding company average by 10%.\n- Managed a $1 million pipeline that supported the creation of 50 new accounts.\n- Sold SaaS and Cloud offering to key accounts including California State University, Ace Athetics and BMI, succeeding in reducing back-up time by 50%.\n\n**Key Projects:** Worked with IT team to create a new web-based leads-generating system, resulting in closed sales increasing by 18% contributing to a $1.5 million increase in profits.', + keywords: ['Sales & Marketing', 'Chain Management'], + id: 'ec58bb49-a6b1-49ed-9ff6-860a44663ed7', + }, + ], + columns: 1, + visible: true, + }, + education: { + id: 'education', + name: 'Education', + type: 'basic', + items: [ + { + id: '3f0eded8-ee1f-4c0e-b4a7-7a0811c150db', + url: 'https://www.greenriver.edu', + area: 'Computer Science', + date: { + end: '', + start: '2011-01-04T23:00:00.000Z', + }, + score: 'Honors: cum laude (GPA: 3.6/4.0)', + degree: 'Bachelor of Science', + courses: ['Data Structures and Algorithms', 'Logic Design'], + summary: '', + institution: 'Green River College', + }, + { + id: 'e4977e01-25bf-4524-95c4-20c77c3cf700', + url: 'https://www.lsu.edu', + area: 'English Literature', + date: { + end: '2010-12-31T23:00:00.000Z', + start: '2008-01-31T23:00:00.000Z', + }, + score: 'Baton Rouge, LA', + degree: 'Bachelor of Arts', + courses: ['Copywriting', 'Product Analysis'], + summary: '', + institution: 'Louisiana State University', + }, + ], + columns: 2, + visible: true, + }, + interests: { + id: 'interests', + name: 'Interests', + type: 'basic', + items: [ + { + name: 'Video Games', + keywords: ['FIFA', 'Age of Empires'], + id: 'ddebb0e1-0a49-4ca6-be8a-956f10f62307', + }, + { + name: 'Football', + keywords: ['Manchester United', 'Los Angeles Rams'], + id: '2df59b01-8dde-40d5-b3da-f5f5e698e8fa', + }, + { + name: 'Mindfulness', + keywords: ['Yoga/Meditation', 'Hiking'], + id: 'dc1bb429-1baf-4a0c-80ba-4d7a24f66e52', + }, + { + name: 'Artificial Intelligence', + keywords: ['Machine Learning', 'GPT-3'], + id: '9939e616-9f03-4ec0-bb8e-25183925c7fc', + }, + ], + columns: 2, + visible: true, + }, + languages: { + id: 'languages', + name: 'Languages', + type: 'basic', + items: [ + { + name: 'English', + level: 'Native', + levelNum: 10, + id: 'dd9eb2b8-2956-463b-b0b1-0ffef84f9fc2', + }, + { + name: 'German', + level: 'B1 (Intermediate)', + levelNum: 6, + id: '6cf99d85-4efc-4ff8-9a7f-e76abd2d2857', + }, + ], + columns: 2, + visible: true, + }, + volunteer: { + id: 'volunteer', + name: 'Volunteer Experience', + type: 'basic', + items: [], + columns: 2, + visible: true, + }, + references: { + id: 'references', + name: 'References', + type: 'basic', + items: [ + { + name: 'Cindy J. Helmer', + relationship: 'CEO/Founder, Copy.ai', + phone: '916-609-9531', + email: 'cindyjh@joupide.com', + summary: + 'Lorem ipsum dolor sit amet, **consectetur adipiscing elit.** Nam scelerisque ac metus sit amet tempor. Sed luctus dui fermentum aliquet dapibus.', + id: '5a114a83-b62c-4b90-a0ef-1ab5516dc0dd', + }, + { + name: 'Keisha Whaley', + relationship: 'Solutions Architect, AWS', + phone: '978-584-6675', + email: 'keishawhaley@aws.de', + summary: + 'Morbi a elit semper arcu tempor porta. _Sed tristique eu turpis vitae ultrices._ ~Nullam nec quam~ ac diam eleifend fringilla. Sed congue magna at ante bibendum posuere.', + id: 'd866c929-4132-4dab-81c3-8dfcb33f5c0a', + }, + ], + columns: 2, + visible: true, + }, + publications: { + id: 'publications', + name: 'Publications', + type: 'basic', + items: [], + columns: 2, + visible: true, + }, + certifications: { + id: 'certifications', + name: 'Certifications', + type: 'basic', + items: [ + { + name: 'Web Applications for Everbody', + issuer: 'Coursera', + date: '', + url: 'https://www.coursera.org/', + summary: '', + id: '75b87dcb-56ef-498d-bd26-a7d646bec914', + }, + { + name: 'Full-Stack Web Development with Stack', + issuer: 'Coursera', + date: '', + url: 'https://www.coursera.org/', + summary: '', + id: 'd1057a6c-c2b2-436f-9166-9e17ae591e71', + }, + { + name: 'Critical Thinking Masterclass', + issuer: 'Khan Academy', + date: '', + url: 'https://www.khanacademy.org/', + summary: '', + id: '44fc2443-b6fc-4c39-8e29-55884cb2b8d0', + }, + { + name: 'Web Development Bootcamp', + issuer: 'Udemy', + date: '', + url: 'https://udemy.com/', + summary: '', + id: '7308d2bc-0bb8-4f53-991a-e17506f5e6a1', + }, + ], + columns: 2, + visible: true, + }, + '2d47a563-d0a0-4275-af18-fea3ba6b57b4': { + name: 'Soft Skills', + type: 'custom', + items: [ + { + id: 'bcd19f25-b015-4532-b555-dbcc6f556661', + url: '', + date: { + end: '', + start: '', + }, + level: '', + title: 'Leadership', + summary: '', + keywords: ['Collaboration', 'Communication'], + levelNum: 8, + subtitle: '', + }, + { + id: 'e6fde8df-dcc8-4481-b872-2c298e7a3bbf', + url: '', + date: { + end: '', + start: '', + }, + level: '', + title: 'Creativity', + summary: '', + keywords: ['Critical Thinking', 'Visual Thinking'], + levelNum: 8, + subtitle: '', + }, + { + id: '888db537-bed2-4d4d-901b-2c7f905f0464', + url: '', + date: { + end: '', + start: '', + }, + level: '', + title: 'Problem Solving', + summary: '', + keywords: ['Algorithms', 'Data Structures'], + levelNum: 6, + subtitle: '', + }, + { + id: '74b9984e-4f0f-4db3-bdc8-fddb647b8df8', + url: '', + date: { + end: '', + start: '', + }, + level: '', + title: 'Organization Skills', + summary: '', + keywords: ['Enthusiasm', 'Work Ethic', 'Supervision'], + levelNum: 6, + subtitle: '', + }, + ], + columns: 4, + visible: true, + }, + }, + metadata: { + css: { + value: '/* Enter custom CSS here */\n\n* {\n outline: 1px solid #000;\n}', + visible: false, + }, + date: { + format: 'MMMM DD, YYYY', + }, + theme: { + text: '#000000', + primary: '#1682cf', + background: '#ffffff', + }, + layout: [ + [ + ['work', 'education'], + ['publications', 'volunteer'], + ], + [ + ['skills', '2d47a563-d0a0-4275-af18-fea3ba6b57b4', 'awards'], + ['certifications', 'interests', 'languages'], + ], + [['projects'], ['references']], + ], + language: 'en', + template: 'kakuna', + typography: { + size: { + body: 14, + heading: 28, + }, + family: { + body: 'Open Sans', + heading: 'Open Sans', + }, + }, + }, + public: true, +}; + +export default sampleData; diff --git a/apps/server/src/resume/dto/create-resume.dto.ts b/apps/server/src/resume/dto/create-resume.dto.ts new file mode 100644 index 00000000..974d0937 --- /dev/null +++ b/apps/server/src/resume/dto/create-resume.dto.ts @@ -0,0 +1,18 @@ +import { Transform } from 'class-transformer'; +import { IsBoolean, IsNotEmpty, IsString, Matches, MinLength } from 'class-validator'; + +export class CreateResumeDto { + @IsString() + @IsNotEmpty() + name: string; + + @MinLength(3) + @Transform(({ value }) => (value as string).toLowerCase().replace(/[ ]/gi, '-')) + @Matches(/^[a-z0-9-]+$/, { + message: 'slug must contain only lowercase characters, numbers and hyphens', + }) + slug: string; + + @IsBoolean() + public?: boolean; +} diff --git a/apps/server/src/resume/dto/update-resume.dto.ts b/apps/server/src/resume/dto/update-resume.dto.ts new file mode 100644 index 00000000..90cdf4ee --- /dev/null +++ b/apps/server/src/resume/dto/update-resume.dto.ts @@ -0,0 +1,5 @@ +import { PartialType } from '@nestjs/mapped-types'; + +import { Resume } from '../entities/resume.entity'; + +export class UpdateResumeDto extends PartialType(Resume) {} diff --git a/apps/server/src/resume/entities/resume.entity.ts b/apps/server/src/resume/entities/resume.entity.ts new file mode 100644 index 00000000..901d85bf --- /dev/null +++ b/apps/server/src/resume/entities/resume.entity.ts @@ -0,0 +1,52 @@ +import { Basics, Metadata, Section } from '@reactive-resume/schema'; +import { Column, CreateDateColumn, Entity, ManyToOne, PrimaryGeneratedColumn, Unique, UpdateDateColumn } from 'typeorm'; + +import { User } from '@/users/entities/user.entity'; + +@Entity() +@Unique(['user', 'slug']) +export class Resume { + @PrimaryGeneratedColumn() + id: number; + + @Column({ unique: true }) + shortId: string; + + @Column() + name: string; + + @Column() + slug: string; + + @Column({ nullable: true }) + image?: string; + + @ManyToOne(() => User, (user) => user.resumes, { + eager: true, + cascade: true, + onDelete: 'CASCADE', + }) + user: User; + + @Column({ type: 'jsonb', default: {} }) + basics: Basics; + + @Column({ type: 'jsonb', default: {} }) + sections: Partial>; + + @Column({ type: 'jsonb', default: {} }) + metadata: Metadata; + + @Column({ default: false }) + public: boolean; + + @CreateDateColumn() + createdAt: Date; + + @UpdateDateColumn() + updatedAt: Date; + + constructor(partial: Partial) { + Object.assign(this, partial); + } +} diff --git a/apps/server/src/resume/resume.controller.ts b/apps/server/src/resume/resume.controller.ts new file mode 100644 index 00000000..decd18e0 --- /dev/null +++ b/apps/server/src/resume/resume.controller.ts @@ -0,0 +1,110 @@ +import { + Body, + Controller, + Delete, + Get, + Param, + Patch, + Post, + Put, + Query, + UploadedFile, + UseGuards, + UseInterceptors, +} from '@nestjs/common'; +import { FileInterceptor } from '@nestjs/platform-express'; + +import { JwtAuthGuard } from '@/auth/guards/jwt.guard'; +import { OptionalJwtAuthGuard } from '@/auth/guards/optional-jwt.guard'; +import { User } from '@/decorators/user.decorator'; + +import { CreateResumeDto } from './dto/create-resume.dto'; +import { UpdateResumeDto } from './dto/update-resume.dto'; +import { ResumeService } from './resume.service'; + +@Controller('resume') +export class ResumeController { + constructor(private readonly resumeService: ResumeService) {} + + @UseGuards(JwtAuthGuard) + @Post() + create(@Body() createResumeDto: CreateResumeDto, @User('id') userId: number) { + return this.resumeService.create(createResumeDto, userId); + } + + @UseGuards(JwtAuthGuard) + @Get() + async findAllByUser(@User('id') userId: number) { + return this.resumeService.findAllByUser(userId); + } + + @UseGuards(OptionalJwtAuthGuard) + @Get('short/:shortId') + findOneByShortId( + @Param('shortId') shortId: string, + @User('id') userId?: number, + @Query('secretKey') secretKey?: string + ) { + return this.resumeService.findOneByShortId(shortId, userId, secretKey); + } + + @UseGuards(OptionalJwtAuthGuard) + @Get(':username/:slug') + findOneByIdentifier( + @Param('username') username: string, + @Param('slug') slug: string, + @User('id') userId?: number, + @Query('secretKey') secretKey?: string + ) { + return this.resumeService.findOneByIdentifier(username, slug, userId, secretKey); + } + + @UseGuards(OptionalJwtAuthGuard) + @Get(':id') + findOne(@Param('id') id: string, @User('id') userId?: number) { + return this.resumeService.findOne(+id, userId); + } + + @UseGuards(JwtAuthGuard) + @Patch(':id') + update(@Param('id') id: string, @User('id') userId: number, @Body() updateResumeDto: UpdateResumeDto) { + return this.resumeService.update(+id, updateResumeDto, userId); + } + + @UseGuards(JwtAuthGuard) + @Delete(':id') + remove(@Param('id') id: string, @User('id') userId: number) { + return this.resumeService.remove(+id, userId); + } + + @UseGuards(JwtAuthGuard) + @Post(':id/duplicate') + duplicate(@Param('id') id: string, @User('id') userId: number) { + return this.resumeService.duplicate(+id, userId); + } + + @UseGuards(JwtAuthGuard) + @Post(':id/sample') + sample(@Param('id') id: string, @User('id') userId: number) { + return this.resumeService.sample(+id, userId); + } + + @UseGuards(JwtAuthGuard) + @Post(':id/reset') + reset(@Param('id') id: string, @User('id') userId: number) { + return this.resumeService.reset(+id, userId); + } + + @UseGuards(JwtAuthGuard) + @Put(':id/photo') + @UseInterceptors(FileInterceptor('file')) + async uploadPhoto(@Param('id') id: string, @User('id') userId: number, @UploadedFile() file: Express.Multer.File) { + return this.resumeService.uploadPhoto(+id, userId, file.filename); + } + + @UseGuards(JwtAuthGuard) + @Delete(':id/photo') + deletePhoto(@Param('id') id: string, @User('id') userId: number) { + return this.resumeService.deletePhoto(+id, userId); + } +} diff --git a/apps/server/src/resume/resume.module.ts b/apps/server/src/resume/resume.module.ts new file mode 100644 index 00000000..05bd42b6 --- /dev/null +++ b/apps/server/src/resume/resume.module.ts @@ -0,0 +1,46 @@ +import { Module } from '@nestjs/common'; +import { ConfigModule } from '@nestjs/config'; +import { MulterModule } from '@nestjs/platform-express'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { mkdir } from 'fs/promises'; +import { diskStorage } from 'multer'; +import { extname, join } from 'path'; + +import { AuthModule } from '@/auth/auth.module'; +import { User } from '@/users/entities/user.entity'; +import { UsersModule } from '@/users/users.module'; + +import { Resume } from './entities/resume.entity'; +import { ResumeController } from './resume.controller'; +import { ResumeService } from './resume.service'; + +@Module({ + imports: [ + ConfigModule, + TypeOrmModule.forFeature([Resume]), + MulterModule.register({ + storage: diskStorage({ + destination: async (req, _, cb) => { + const userId = (req.user as User).id; + const resumeId = req.params.id; + const destination = join(__dirname, `assets/uploads/${userId}/${resumeId}`); + + await mkdir(destination, { recursive: true }); + + cb(null, destination); + }, + filename: (_, file, cb) => { + const filename = new Date().getTime() + extname(file.originalname); + + cb(null, filename); + }, + }), + }), + AuthModule, + UsersModule, + ], + controllers: [ResumeController], + providers: [ResumeService], + exports: [ResumeService], +}) +export class ResumeModule {} diff --git a/apps/server/src/resume/resume.service.ts b/apps/server/src/resume/resume.service.ts new file mode 100644 index 00000000..8edf6d8a --- /dev/null +++ b/apps/server/src/resume/resume.service.ts @@ -0,0 +1,242 @@ +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Resume as ResumeSchema } from '@reactive-resume/schema'; +import { unlink } from 'fs/promises'; +import { pick, sample, set } from 'lodash'; +import { nanoid } from 'nanoid'; +import { join } from 'path'; +import { Repository } from 'typeorm'; + +import { PostgresErrorCode } from '@/database/errorCodes.enum'; +import { UsersService } from '@/users/users.service'; + +import { covers } from './data/covers'; +import defaultState from './data/defaultState'; +import sampleData from './data/sampleData'; +import { CreateResumeDto } from './dto/create-resume.dto'; +import { UpdateResumeDto } from './dto/update-resume.dto'; +import { Resume } from './entities/resume.entity'; + +export const SHORT_ID_LENGTH = 8; + +@Injectable() +export class ResumeService { + constructor( + @InjectRepository(Resume) private resumeRepository: Repository, + private configService: ConfigService, + private usersService: UsersService + ) {} + + async create(createResumeDto: CreateResumeDto, userId: number) { + try { + const user = await this.usersService.findById(userId); + const serverUrl = this.configService.get('app.serverUrl'); + + const shortId = nanoid(SHORT_ID_LENGTH); + const image = `${serverUrl}/covers/${sample(covers)}`; + + const resume = this.resumeRepository.create({ + ...defaultState, + ...createResumeDto, + shortId, + image, + user, + basics: { + ...defaultState.basics, + name: user.name, + }, + }); + + return await this.resumeRepository.save(resume); + } catch (error: any) { + if (error?.code === PostgresErrorCode.UniqueViolation) { + throw new HttpException( + 'A resume with the same slug already exists, please enter a unique slug and try again.', + HttpStatus.BAD_REQUEST + ); + } + + throw new HttpException( + 'Something went wrong. Please try again later, or raise an issue on GitHub if the problem persists.', + HttpStatus.INTERNAL_SERVER_ERROR + ); + } + } + + async import(importResumeDto: Partial, userId: number) { + try { + const user = await this.usersService.findById(userId); + const serverUrl = this.configService.get('app.serverUrl'); + + const shortId = nanoid(SHORT_ID_LENGTH); + const image = `${serverUrl}/covers/${sample(covers)}`; + + const resume = this.resumeRepository.create({ + ...defaultState, + ...importResumeDto, + shortId, + image, + user, + }); + + return this.resumeRepository.save(resume); + } catch { + throw new HttpException( + 'Something went wrong. Please try again later, or raise an issue on GitHub if the problem persists.', + HttpStatus.INTERNAL_SERVER_ERROR + ); + } + } + + findAll() { + return this.resumeRepository.find(); + } + + findAllByUser(userId: number) { + return this.resumeRepository.find({ user: { id: userId } }); + } + + async findOne(id: number, userId?: number) { + const resume = await this.resumeRepository.findOne(id); + + if (!resume) { + throw new HttpException('The resume you are looking does not exist, or maybe never did?', HttpStatus.NOT_FOUND); + } + + const isPrivate = !resume.public; + const isNotOwner = resume.user.id !== userId; + + if (isPrivate && isNotOwner) { + throw new HttpException('The resume you are looking does not exist, or maybe never did?', HttpStatus.NOT_FOUND); + } + + return resume; + } + + async findOneByShortId(shortId: string, userId?: number, secretKey?: string) { + const resume = await this.resumeRepository.findOne({ shortId }); + + if (!resume) { + throw new HttpException('The resume you are looking does not exist, or maybe never did?', HttpStatus.NOT_FOUND); + } + + const isPrivate = !resume.public; + const isOwner = resume.user.id === userId; + const isInternal = secretKey === this.configService.get('app.secretKey'); + + if (!isInternal && isPrivate && !isOwner) { + throw new HttpException('The resume you are looking does not exist, or maybe never did?', HttpStatus.NOT_FOUND); + } + + return resume; + } + + async findOneByIdentifier(username: string, slug: string, userId?: number, secretKey?: string) { + const resume = await this.resumeRepository.findOne({ user: { username }, slug }); + + if (!resume) { + throw new HttpException('The resume you are looking does not exist, or maybe never did?', HttpStatus.NOT_FOUND); + } + + const isPrivate = !resume.public; + const isOwner = resume.user.id === userId; + const isInternal = secretKey === this.configService.get('app.secretKey'); + + if (!isInternal && isPrivate && !isOwner) { + throw new HttpException('The resume you are looking does not exist, or maybe never did?', HttpStatus.NOT_FOUND); + } + + return resume; + } + + async update(id: number, updateResumeDto: UpdateResumeDto, userId: number) { + const resume = await this.findOne(id, userId); + + const updatedResume = { + ...resume, + ...updateResumeDto, + }; + + return this.resumeRepository.save(updatedResume); + } + + async remove(id: number, userId: number) { + await this.resumeRepository.delete({ id, user: { id: userId } }); + } + + async duplicate(id: number, userId: number) { + try { + const originalResume = await this.findOne(id, userId); + const serverUrl = this.configService.get('app.serverUrl'); + + const shortId = nanoid(SHORT_ID_LENGTH); + const image = `${serverUrl}/covers/${sample(covers)}`; + + const duplicatedResume: Partial = { + ...pick(originalResume, ['name', 'slug', 'basics', 'metadata', 'sections', 'public']), + name: `${originalResume.name} Copy`, + slug: `${originalResume.slug}-copy`, + shortId, + image, + }; + + const resume = this.resumeRepository.create({ + ...duplicatedResume, + user: { id: userId }, + }); + + return this.resumeRepository.save(resume); + } catch (error: any) { + if (error?.code === PostgresErrorCode.UniqueViolation) { + throw new HttpException( + 'A resume with the same slug already exists, please enter a unique slug and try again.', + HttpStatus.BAD_REQUEST + ); + } + + throw new HttpException( + 'Something went wrong. Please try again later, or raise an issue on GitHub if the problem persists.', + HttpStatus.INTERNAL_SERVER_ERROR + ); + } + } + + async sample(id: number, userId: number) { + const resume = await this.findOne(id, userId); + + const sampleResume = { ...resume, ...sampleData }; + + return this.resumeRepository.save(sampleResume); + } + + async reset(id: number, userId: number) { + const resume = await this.findOne(id, userId); + + const prevResume = pick(resume, ['id', 'shortId', 'name', 'slug', 'image', 'user', 'createdAt']); + const nextResume = { ...prevResume, ...defaultState }; + + return this.resumeRepository.update(id, nextResume); + } + + async uploadPhoto(id: number, userId: number, filename: string) { + const resume = await this.findOne(id, userId); + const serverUrl = this.configService.get('app.serverUrl'); + + const url = `${serverUrl}/uploads/${userId}/${id}/${filename}`; + const updatedResume = set(resume, 'basics.photo.url', url); + + return this.resumeRepository.save(updatedResume); + } + + async deletePhoto(id: number, userId: number) { + const resume = await this.findOne(id, userId); + const key = new URL(resume.basics.photo.url).pathname; + const photoPath = join(__dirname, 'assets', key); + const updatedResume = set(resume, 'basics.photo.url', ''); + + await unlink(photoPath); + + return this.resumeRepository.save(updatedResume); + } +} diff --git a/apps/server/src/users/dto/create-google-user.dto.ts b/apps/server/src/users/dto/create-google-user.dto.ts new file mode 100644 index 00000000..a5b11291 --- /dev/null +++ b/apps/server/src/users/dto/create-google-user.dto.ts @@ -0,0 +1,23 @@ +import { Transform } from 'class-transformer'; +import { IsEmail, IsNotEmpty, IsString, Matches, MinLength } from 'class-validator'; + +export class CreateGoogleUserDto { + @IsString() + @IsNotEmpty() + name: string; + + @MinLength(3) + @Transform(({ value }) => (value as string).toLowerCase().replace(/[ ]/gi, '-')) + @Matches(/^[a-z0-9-]+$/, { + message: 'username can contain only lowercase characters, numbers and hyphens', + }) + username: string; + + @IsEmail() + @IsNotEmpty() + email: string; + + @IsString() + @IsNotEmpty() + provider: 'google'; +} diff --git a/apps/server/src/users/dto/create-user.dto.ts b/apps/server/src/users/dto/create-user.dto.ts new file mode 100644 index 00000000..8066bf62 --- /dev/null +++ b/apps/server/src/users/dto/create-user.dto.ts @@ -0,0 +1,30 @@ +import { Transform } from 'class-transformer'; +import { IsEmail, IsNotEmpty, IsString, Matches, MinLength } from 'class-validator'; + +export class CreateUserDto { + @IsString() + @IsNotEmpty() + name: string; + + @MinLength(3) + @Transform(({ value }) => (value as string).toLowerCase().replace(/[ ]/gi, '-')) + @Matches(/^[a-z0-9-]+$/, { + message: 'username can contain only lowercase characters, numbers and hyphens', + }) + username: string; + + @IsEmail() + @IsNotEmpty() + email: string; + + @IsString() + @IsNotEmpty() + password: string; + + @IsString() + @IsNotEmpty() + provider: 'email'; + + @IsString() + resetToken?: string; +} diff --git a/apps/server/src/users/dto/update-user.dto.ts b/apps/server/src/users/dto/update-user.dto.ts new file mode 100644 index 00000000..deaf4b47 --- /dev/null +++ b/apps/server/src/users/dto/update-user.dto.ts @@ -0,0 +1,5 @@ +import { PartialType } from '@nestjs/mapped-types'; + +import { CreateUserDto } from './create-user.dto'; + +export class UpdateUserDto extends PartialType(CreateUserDto) {} diff --git a/apps/server/src/users/entities/user.entity.ts b/apps/server/src/users/entities/user.entity.ts new file mode 100644 index 00000000..bdbe747c --- /dev/null +++ b/apps/server/src/users/entities/user.entity.ts @@ -0,0 +1,43 @@ +import { Exclude } from 'class-transformer'; +import { Column, CreateDateColumn, Entity, OneToMany, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; + +import { Resume } from '@/resume/entities/resume.entity'; + +@Entity() +export class User { + @PrimaryGeneratedColumn() + id: number; + + @Column() + name: string; + + @Column({ unique: true }) + username: string; + + @Column({ unique: true }) + email: string; + + @Column({ nullable: true }) + @Exclude() + password?: string; + + @Column({ nullable: true }) + @Exclude() + resetToken?: string; + + @OneToMany(() => Resume, (resume) => resume.user) + resumes: Resume[]; + + @Column() + provider: 'email' | 'google'; + + @CreateDateColumn() + createdAt: Date; + + @UpdateDateColumn() + updatedAt: Date; + + constructor(partial: Partial) { + Object.assign(this, partial); + } +} diff --git a/apps/server/src/users/users.module.ts b/apps/server/src/users/users.module.ts new file mode 100644 index 00000000..2891e70f --- /dev/null +++ b/apps/server/src/users/users.module.ts @@ -0,0 +1,14 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; + +import { MailModule } from '@/mail/mail.module'; + +import { User } from './entities/user.entity'; +import { UsersService } from './users.service'; + +@Module({ + imports: [TypeOrmModule.forFeature([User]), MailModule], + providers: [UsersService], + exports: [UsersService], +}) +export class UsersModule {} diff --git a/apps/server/src/users/users.service.ts b/apps/server/src/users/users.service.ts new file mode 100644 index 00000000..544e66a3 --- /dev/null +++ b/apps/server/src/users/users.service.ts @@ -0,0 +1,127 @@ +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +import { SchedulerRegistry } from '@nestjs/schedule'; +import { InjectRepository } from '@nestjs/typeorm'; +import { randomBytes } from 'crypto'; +import { Connection, Repository } from 'typeorm'; + +import { MailService } from '@/mail/mail.service'; + +import { CreateGoogleUserDto } from './dto/create-google-user.dto'; +import { CreateUserDto } from './dto/create-user.dto'; +import { UpdateUserDto } from './dto/update-user.dto'; +import { User } from './entities/user.entity'; + +export const DELETION_TIME = 30 * 60 * 1000; // 30 minutes + +@Injectable() +export class UsersService { + constructor( + @InjectRepository(User) private userRepository: Repository, + private schedulerRegistry: SchedulerRegistry, + private mailService: MailService, + private connection: Connection + ) {} + + async findById(id: number): Promise { + const user = await this.userRepository.findOne({ id }); + + if (user) { + return user; + } + + throw new HttpException('A user with this username/email does not exist.', HttpStatus.NOT_FOUND); + } + + async findByEmail(email: string): Promise { + const user = await this.userRepository.findOne({ email }); + + if (user) { + return user; + } + + throw new HttpException('A user with this email does not exist.', HttpStatus.NOT_FOUND); + } + + async findByIdentifier(identifier: string): Promise { + const user = await this.userRepository.findOne({ + where: [{ username: identifier }, { email: identifier }], + }); + + if (user) { + return user; + } + + throw new HttpException('A user with this username/email does not exist.', HttpStatus.NOT_FOUND); + } + + async findByResetToken(resetToken: string): Promise { + const user = await this.userRepository.findOne({ resetToken }); + + if (user) { + return user; + } + + throw new HttpException('The reset token provided may be invalid or expired.', HttpStatus.NOT_FOUND); + } + + async create(createUserDto: CreateUserDto | CreateGoogleUserDto): Promise { + const user = this.userRepository.create(createUserDto); + + await this.userRepository.save(user); + + return user; + } + + async update(id: number, updateUserDto: UpdateUserDto) { + const user = await this.findById(id); + const updatedUser = { + ...user, + ...updateUserDto, + }; + + await this.userRepository.save(updatedUser); + + return updatedUser; + } + + async remove(id: number): Promise { + await this.userRepository.delete(id); + } + + async generateResetToken(email: string): Promise { + try { + const user = await this.findByEmail(email); + + const resetToken = randomBytes(32).toString('hex'); + const queryRunner = this.connection.createQueryRunner(); + + const timeout = setTimeout(async () => { + await this.userRepository.update(user.id, { resetToken: null }); + }, DELETION_TIME); + + await queryRunner.connect(); + await queryRunner.startTransaction(); + + try { + await queryRunner.manager.update(User, user.id, { resetToken }); + + this.schedulerRegistry.addTimeout(`clear-resetToken-${user.id}`, timeout); + + await this.mailService.sendForgotPasswordEmail(user, resetToken); + + await queryRunner.commitTransaction(); + } catch { + await queryRunner.rollbackTransaction(); + + throw new HttpException( + 'Please wait at least 30 minutes before resetting your password again.', + HttpStatus.TOO_MANY_REQUESTS + ); + } finally { + await queryRunner.release(); + } + } catch { + // pass through + } + } +} diff --git a/apps/server/tsconfig.app.json b/apps/server/tsconfig.app.json new file mode 100644 index 00000000..d423334e --- /dev/null +++ b/apps/server/tsconfig.app.json @@ -0,0 +1,25 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["node"], + "emitDecoratorMetadata": true, + "target": "es2015", + "baseUrl": ".", + "paths": { + "@reactive-resume/schema": ["../../libs/schema/src/index.ts"], + "@/auth/*": ["src/auth/*"], + "@/config/*": ["src/config/*"], + "@/constants/*": ["src/constants/*"], + "@/database/*": ["src/database/*"], + "@/decorators/*": ["src/decorators/*"], + "@/filters/*": ["src/filters/*"], + "@/mail/*": ["src/mail/*"], + "@/resume/*": ["src/resume/*"], + "@/users/*": ["src/users/*"] + } + }, + "exclude": ["**/*.spec.ts", "**/*.test.ts"], + "include": ["**/*.ts"] +} diff --git a/apps/server/tsconfig.json b/apps/server/tsconfig.json new file mode 100644 index 00000000..63dbe35f --- /dev/null +++ b/apps/server/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/apps/server/tsconfig.spec.json b/apps/server/tsconfig.spec.json new file mode 100644 index 00000000..a18afb60 --- /dev/null +++ b/apps/server/tsconfig.spec.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] +} diff --git a/babel.config.json b/babel.config.json new file mode 100644 index 00000000..065aee77 --- /dev/null +++ b/babel.config.json @@ -0,0 +1,3 @@ +{ + "babelrcRoots": ["*"] +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..f1017da5 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3' + +services: + database: + image: postgres + container_name: database + ports: + - '${POSTGRES_PORT}:${POSTGRES_PORT}' + env_file: + - .env + volumes: + - ./scripts/database/initialize.sql:/docker-entrypoint-initdb.d/initialize.sql diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000..42c86fd0 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,5 @@ +const { getJestProjects } = require('@nrwl/jest'); + +module.exports = { + projects: getJestProjects(), +}; diff --git a/jest.preset.js b/jest.preset.js new file mode 100644 index 00000000..c93ed9dc --- /dev/null +++ b/jest.preset.js @@ -0,0 +1,3 @@ +const nxPreset = require('@nrwl/jest/preset'); + +module.exports = { ...nxPreset }; diff --git a/libs/.gitkeep b/libs/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/libs/schema/.eslintrc.json b/libs/schema/.eslintrc.json new file mode 100644 index 00000000..9d9c0db5 --- /dev/null +++ b/libs/schema/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/libs/schema/README.md b/libs/schema/README.md new file mode 100644 index 00000000..999fd49e --- /dev/null +++ b/libs/schema/README.md @@ -0,0 +1,11 @@ +# schema + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build schema` to build the library. + +## Running unit tests + +Run `nx test schema` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/schema/jest.config.js b/libs/schema/jest.config.js new file mode 100644 index 00000000..d6d6c0a4 --- /dev/null +++ b/libs/schema/jest.config.js @@ -0,0 +1,14 @@ +module.exports = { + displayName: 'schema', + preset: '../../jest.preset.js', + globals: { + 'ts-jest': { + tsconfig: '/tsconfig.spec.json', + }, + }, + transform: { + '^.+\\.[tj]s$': 'ts-jest', + }, + moduleFileExtensions: ['ts', 'js', 'html'], + coverageDirectory: '../../coverage/libs/schema', +}; diff --git a/libs/schema/package.json b/libs/schema/package.json new file mode 100644 index 00000000..b478d268 --- /dev/null +++ b/libs/schema/package.json @@ -0,0 +1,5 @@ +{ + "name": "@reactive-resume/schema", + "version": "0.0.1", + "type": "commonjs" +} diff --git a/libs/schema/project.json b/libs/schema/project.json new file mode 100644 index 00000000..b1a2ec87 --- /dev/null +++ b/libs/schema/project.json @@ -0,0 +1,33 @@ +{ + "root": "libs/schema", + "sourceRoot": "libs/schema/src", + "projectType": "library", + "targets": { + "build": { + "executor": "@nrwl/js:tsc", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/libs/schema", + "main": "libs/schema/src/index.ts", + "tsConfig": "libs/schema/tsconfig.lib.json", + "assets": ["libs/schema/*.md"] + } + }, + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["libs/schema/**/*.ts"] + } + }, + "test": { + "executor": "@nrwl/jest:jest", + "outputs": ["coverage/libs/schema"], + "options": { + "jestConfig": "libs/schema/jest.config.js", + "passWithNoTests": true + } + } + }, + "tags": [] +} diff --git a/libs/schema/src/index.ts b/libs/schema/src/index.ts new file mode 100644 index 00000000..75763f33 --- /dev/null +++ b/libs/schema/src/index.ts @@ -0,0 +1,8 @@ +export * from './lib/atoms'; +export * from './lib/basics'; +export * from './lib/fonts'; +export * from './lib/integrations'; +export * from './lib/metadata'; +export * from './lib/resume'; +export * from './lib/section'; +export * from './lib/user'; diff --git a/libs/schema/src/lib/atoms.ts b/libs/schema/src/lib/atoms.ts new file mode 100644 index 00000000..6ca093b6 --- /dev/null +++ b/libs/schema/src/lib/atoms.ts @@ -0,0 +1,4 @@ +export type DateRange = { + start?: string; + end?: string; +}; diff --git a/libs/schema/src/lib/basics.ts b/libs/schema/src/lib/basics.ts new file mode 100644 index 00000000..816d4489 --- /dev/null +++ b/libs/schema/src/lib/basics.ts @@ -0,0 +1,41 @@ +export type Location = { + address?: string; + city?: string; + region?: string; + country?: string; + postalCode?: string; +}; + +export type Profile = { + id?: string; + network?: string; + username?: string; + url?: string; +}; + +export type PhotoShape = 'square' | 'rounded-square' | 'circle'; + +export type PhotoFilters = { + size: number; + shape: PhotoShape; + border: boolean; + grayscale: boolean; +}; + +export type Photo = { + url?: string; + visible: boolean; + filters: PhotoFilters; +}; + +export type Basics = { + name?: string; + photo?: Photo; + email?: string; + phone?: string; + website?: string; + headline?: string; + summary?: string; + location?: Location; + profiles?: Profile[]; +}; diff --git a/libs/schema/src/lib/fonts.ts b/libs/schema/src/lib/fonts.ts new file mode 100644 index 00000000..36afa3ed --- /dev/null +++ b/libs/schema/src/lib/fonts.ts @@ -0,0 +1,18 @@ +export enum FontCategory { + 'display' = 'display', + 'handwriting' = 'handwriting', + 'monospace' = 'monospace', + 'sans-serif' = 'sans-serif', + 'serif' = 'serif', +} + +export type Font = { + family: string; + variants: string[]; + subsets: string[]; + version: string; + lastModified: string; + files: Record; + category: FontCategory; + kind: string; +}; diff --git a/libs/schema/src/lib/integrations.ts b/libs/schema/src/lib/integrations.ts new file mode 100644 index 00000000..fe628108 --- /dev/null +++ b/libs/schema/src/lib/integrations.ts @@ -0,0 +1 @@ +export type Integration = 'linkedin' | 'json-resume' | 'reactive-resume'; diff --git a/libs/schema/src/lib/metadata.ts b/libs/schema/src/lib/metadata.ts new file mode 100644 index 00000000..7a5fb256 --- /dev/null +++ b/libs/schema/src/lib/metadata.ts @@ -0,0 +1,32 @@ +export type CustomCSS = { + value: string; + visible: boolean; +}; + +export type Theme = { + text: string; + background: string; + primary: string; +}; + +export type TypeCategory = 'heading' | 'body'; +export type TypeProperty = 'family' | 'size'; + +export type Typography = { + family: Record; + size: Record; +}; + +export type DateConfig = { + format: string; +}; + +export type Metadata = { + css: CustomCSS; + theme: Theme; + layout: string[][][]; // page.column.section + template: string; + typography: Typography; + date: DateConfig; + language: string; +}; diff --git a/libs/schema/src/lib/resume.ts b/libs/schema/src/lib/resume.ts new file mode 100644 index 00000000..550d9d82 --- /dev/null +++ b/libs/schema/src/lib/resume.ts @@ -0,0 +1,19 @@ +import { Basics } from './basics'; +import { Metadata } from './metadata'; +import { Section } from './section'; +import { User } from './user'; + +export type Resume = { + id: number; + shortId: string; + name: string; + slug: string; + image: string; + user: User; + basics: Basics; + sections: Record; + metadata: Metadata; + public: boolean; + createdAt: Date; + updatedAt: Date; +}; diff --git a/libs/schema/src/lib/section.ts b/libs/schema/src/lib/section.ts new file mode 100644 index 00000000..43e21541 --- /dev/null +++ b/libs/schema/src/lib/section.ts @@ -0,0 +1,139 @@ +import { DateRange } from './atoms'; +import { Profile } from './basics'; + +export type WorkExperience = { + id?: string; + name: string; + position: string; + date?: DateRange; + url?: string; + summary?: string; +}; + +export type Education = { + id?: string; + institution: string; + degree: string; + area?: string; + score?: string; + date?: DateRange; + url?: string; + summary?: string; + courses?: string[]; +}; + +export type Award = { + id?: string; + title: string; + awarder: string; + date?: string; + url?: string; + summary?: string; +}; + +export type Certificate = { + id?: string; + name: string; + issuer: string; + date?: string; + url?: string; + summary?: string; +}; + +export type Volunteer = { + id?: string; + organization: string; + position: string; + date?: DateRange; + url?: string; + summary?: string; +}; + +export type Publication = { + id?: string; + name: string; + publisher: string; + date?: string; + url?: string; + summary?: string; +}; + +export type Skill = { + id?: string; + name: string; + level: string; + levelNum: number; + keywords?: string[]; +}; + +export type Language = { + id?: string; + name: string; + level: string; + levelNum: number; +}; + +export type Interest = { + id?: string; + name: string; + keywords?: string[]; +}; + +export type Project = { + id?: string; + name: string; + description: string; + date?: DateRange; + url?: string; + summary?: string; + keywords?: string[]; +}; + +export type Reference = { + id?: string; + name: string; + relationship: string; + phone?: string; + email?: string; + summary?: string; +}; + +export type Custom = { + id?: string; + title: string; + subtitle?: string; + date?: DateRange; + url?: string; + level?: string; + levelNum?: number; + summary?: string; + keywords?: string[]; +}; + +export type ListItem = + | Award + | Certificate + | Education + | Interest + | Language + | Profile + | Project + | Publication + | Reference + | Skill + | Volunteer + | WorkExperience + | Custom; + +export type SectionType = 'basic' | 'custom'; + +export type SectionPath = `sections.${string}`; + +export type Section = { + id?: string; + name?: string; + type?: SectionType; + columns?: number; + visible?: boolean; + items?: ListItem[]; +}; diff --git a/libs/schema/src/lib/user.ts b/libs/schema/src/lib/user.ts new file mode 100644 index 00000000..572b01df --- /dev/null +++ b/libs/schema/src/lib/user.ts @@ -0,0 +1,14 @@ +import { Resume } from './resume'; + +export type User = { + id: number; + name: string; + username: string; + email: string; + password?: string; + provider: 'email' | 'google'; + resetToken?: string; + resumes: Resume[]; + createdAt: Date; + updatedAt: Date; +}; diff --git a/libs/schema/tsconfig.json b/libs/schema/tsconfig.json new file mode 100644 index 00000000..592e5cc4 --- /dev/null +++ b/libs/schema/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "module": "CommonJS", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/libs/schema/tsconfig.lib.json b/libs/schema/tsconfig.lib.json new file mode 100644 index 00000000..a8b9431f --- /dev/null +++ b/libs/schema/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": [] + }, + "include": ["**/*.ts"], + "exclude": ["**/*.spec.ts"] +} diff --git a/libs/schema/tsconfig.spec.json b/libs/schema/tsconfig.spec.json new file mode 100644 index 00000000..a18afb60 --- /dev/null +++ b/libs/schema/tsconfig.spec.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] +} diff --git a/nx.json b/nx.json new file mode 100644 index 00000000..5c6d3310 --- /dev/null +++ b/nx.json @@ -0,0 +1,38 @@ +{ + "npmScope": "reactive-resume", + "affected": { + "defaultBase": "main" + }, + "cli": { + "defaultCollection": "@nrwl/next" + }, + "implicitDependencies": { + "package.json": { + "dependencies": "*", + "devDependencies": "*" + }, + ".eslintrc.json": "*" + }, + "targetDependencies": { + "build": [ + { + "target": "build", + "projects": "dependencies" + } + ] + }, + "generators": { + "@nrwl/react": { + "application": { + "babel": true + } + }, + "@nrwl/next": { + "application": { + "style": "scss", + "linter": "eslint" + } + } + }, + "defaultProject": "client" +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..a70f23f5 --- /dev/null +++ b/package.json @@ -0,0 +1,165 @@ +{ + "name": "reactive-resume", + "version": "3.0.0", + "license": "MIT", + "engines": { + "npm": ">=6.0.0", + "node": ">=14.0.0" + }, + "scripts": { + "start": "nx run-many --target=serve --all", + "build": "nx run-many --target=build --all", + "test": "nx run-many --target=test --all", + "lint": "nx run-many --target=lint --all --fix", + "format": "prettier --write \"./**/*.{js,jsx,ts,tsx,json}\"", + "prepare": "husky install", + "commit": "changeset" + }, + "private": true, + "dependencies": { + "@changesets/cli": "^2.21.0", + "@date-io/dayjs": "^2.13.1", + "@emotion/css": "^11.7.1", + "@emotion/react": "^11.8.1", + "@emotion/styled": "^11.8.1", + "@hookform/resolvers": "^2.8.8", + "@monaco-editor/react": "^4.3.1", + "@mui/icons-material": "^5.4.4", + "@mui/lab": "^5.0.0-alpha.71", + "@mui/material": "^5.4.4", + "@nestjs/axios": "^0.0.6", + "@nestjs/common": "^8.4.0", + "@nestjs/config": "^1.2.0", + "@nestjs/core": "^8.4.0", + "@nestjs/jwt": "^8.0.0", + "@nestjs/mapped-types": "^1.0.1", + "@nestjs/passport": "^8.2.1", + "@nestjs/platform-express": "^8.4.0", + "@nestjs/schedule": "^1.0.2", + "@nestjs/serve-static": "^2.2.2", + "@nestjs/typeorm": "^8.0.3", + "@next/bundle-analyzer": "^12.1.0", + "@nrwl/next": "13.8.3", + "@reduxjs/toolkit": "^1.8.0", + "autoprefixer": "^10.4.2", + "axios": "^0.26.0", + "bcrypt": "^5.0.1", + "cache-manager": "^3.6.0", + "class-transformer": "^0.5.1", + "class-validator": "^0.13.2", + "clsx": "^1.1.1", + "cookie-parser": "^1.4.6", + "core-js": "^3.21.1", + "csvtojson": "^2.0.10", + "dayjs": "^1.10.8", + "downloadjs": "^1.4.7", + "googleapis": "^95.0.0", + "handlebars": "^4.7.7", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "md5-hex": "^4.0.0", + "monaco-editor": "^0.32.1", + "multer": "^1.4.4", + "nanoid": "^3.3.1", + "next": "^12.1.0", + "next-compose-plugins": "^2.2.1", + "next-i18next": "^10.5.0", + "node-stream-zip": "^1.15.0", + "nodemailer": "^6.7.2", + "passport": "^0.5.2", + "passport-jwt": "^4.0.0", + "passport-local": "^1.0.0", + "pdf-lib": "^1.17.1", + "pg": "^8.7.3", + "postcss": "^8.4.7", + "react": "17.0.2", + "react-beautiful-dnd": "^13.1.0", + "react-colorful": "^5.5.1", + "react-dnd": "^15.1.1", + "react-dnd-html5-backend": "^15.1.2", + "react-dom": "17.0.2", + "react-google-login": "^5.2.2", + "react-hook-form": "^7.27.1", + "react-hot-toast": "^2.2.0", + "react-hotkeys-hook": "^3.4.4", + "react-icons": "^4.3.1", + "react-markdown": "^8.0.0", + "react-query": "^3.34.16", + "react-redux": "^7.2.6", + "react-zoom-pan-pinch": "^2.1.3", + "redux": "^4.1.2", + "redux-persist": "^6.0.0", + "redux-saga": "^1.1.3", + "reflect-metadata": "^0.1.13", + "regenerator-runtime": "0.13.9", + "remark-gfm": "^3.0.1", + "rxjs": "^7.5.4", + "tailwindcss": "^3.0.23", + "tslib": "^2.3.1", + "typeorm": "^0.2.44", + "uuid": "^8.3.2", + "webfontloader": "^1.6.28" + }, + "devDependencies": { + "@babel/core": "^7.17.5", + "@babel/preset-env": "^7.16.11", + "@nestjs/schematics": "^8.0.7", + "@nestjs/testing": "^8.4.0", + "@nrwl/cli": "13.8.3", + "@nrwl/eslint-plugin-nx": "13.8.3", + "@nrwl/jest": "13.8.3", + "@nrwl/linter": "13.8.3", + "@nrwl/nest": "^13.8.3", + "@nrwl/node": "13.8.3", + "@nrwl/nx-cloud": "latest", + "@nrwl/react": "13.8.3", + "@nrwl/tao": "13.8.3", + "@nrwl/web": "13.8.3", + "@nrwl/workspace": "13.8.3", + "@testing-library/react": "12.1.3", + "@testing-library/react-hooks": "7.0.2", + "@types/bcrypt": "^5.0.0", + "@types/cache-manager": "^3.4.3", + "@types/cookie-parser": "^1.4.2", + "@types/downloadjs": "^1.4.3", + "@types/jest": "27.4.1", + "@types/lodash": "^4.14.179", + "@types/multer": "^1.4.7", + "@types/node": "17.0.21", + "@types/nodemailer": "^6.4.4", + "@types/passport-jwt": "^3.0.6", + "@types/passport-local": "^1.0.34", + "@types/react": "17.0.39", + "@types/react-beautiful-dnd": "^13.1.2", + "@types/react-dom": "17.0.11", + "@types/tailwindcss": "^3.0.9", + "@types/uuid": "^8.3.4", + "@types/webfontloader": "^1.6.34", + "@typescript-eslint/eslint-plugin": "~5.12.1", + "@typescript-eslint/parser": "~5.10.2", + "babel-jest": "27.5.1", + "babel-loader": "^8.2.3", + "csstype": "^3.0.10", + "cypress": "^9.5.1", + "eslint": "~8.10.0", + "eslint-config-next": "12.1.0", + "eslint-config-prettier": "8.4.0", + "eslint-plugin-cypress": "^2.12.1", + "eslint-plugin-import": "^2.25.4", + "eslint-plugin-jsx-a11y": "6.5.1", + "eslint-plugin-react": "7.29.2", + "eslint-plugin-react-hooks": "4.3.0", + "eslint-plugin-simple-import-sort": "^7.0.0", + "eslint-plugin-unused-imports": "^2.0.0", + "husky": "^7.0.4", + "jest": "27.5.1", + "playwright": "^1.19.2", + "prettier": "^2.5.1", + "prettier-plugin-tailwindcss": "^0.1.8", + "react-test-renderer": "17.0.2", + "sass": "^1.49.9", + "ts-jest": "27.1.3", + "typescript": "~4.5.5", + "webpack": "^5.69.1" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..1e05ae9c --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,14443 @@ +lockfileVersion: 5.3 + +specifiers: + '@babel/core': ^7.17.5 + '@babel/preset-env': ^7.16.11 + '@changesets/cli': ^2.21.0 + '@date-io/dayjs': ^2.13.1 + '@emotion/css': ^11.7.1 + '@emotion/react': ^11.8.1 + '@emotion/styled': ^11.8.1 + '@hookform/resolvers': ^2.8.8 + '@monaco-editor/react': ^4.3.1 + '@mui/icons-material': ^5.4.4 + '@mui/lab': ^5.0.0-alpha.71 + '@mui/material': ^5.4.4 + '@nestjs/axios': ^0.0.6 + '@nestjs/common': ^8.4.0 + '@nestjs/config': ^1.2.0 + '@nestjs/core': ^8.4.0 + '@nestjs/jwt': ^8.0.0 + '@nestjs/mapped-types': ^1.0.1 + '@nestjs/passport': ^8.2.1 + '@nestjs/platform-express': ^8.4.0 + '@nestjs/schedule': ^1.0.2 + '@nestjs/schematics': ^8.0.7 + '@nestjs/serve-static': ^2.2.2 + '@nestjs/testing': ^8.4.0 + '@nestjs/typeorm': ^8.0.3 + '@next/bundle-analyzer': ^12.1.0 + '@nrwl/cli': 13.8.3 + '@nrwl/eslint-plugin-nx': 13.8.3 + '@nrwl/jest': 13.8.3 + '@nrwl/linter': 13.8.3 + '@nrwl/nest': ^13.8.3 + '@nrwl/next': 13.8.3 + '@nrwl/node': 13.8.3 + '@nrwl/nx-cloud': latest + '@nrwl/react': 13.8.3 + '@nrwl/tao': 13.8.3 + '@nrwl/web': 13.8.3 + '@nrwl/workspace': 13.8.3 + '@reduxjs/toolkit': ^1.8.0 + '@testing-library/react': 12.1.3 + '@testing-library/react-hooks': 7.0.2 + '@types/bcrypt': ^5.0.0 + '@types/cache-manager': ^3.4.3 + '@types/cookie-parser': ^1.4.2 + '@types/downloadjs': ^1.4.3 + '@types/jest': 27.4.1 + '@types/lodash': ^4.14.179 + '@types/multer': ^1.4.7 + '@types/node': 17.0.21 + '@types/nodemailer': ^6.4.4 + '@types/passport-jwt': ^3.0.6 + '@types/passport-local': ^1.0.34 + '@types/react': 17.0.39 + '@types/react-beautiful-dnd': ^13.1.2 + '@types/react-dom': 17.0.11 + '@types/tailwindcss': ^3.0.9 + '@types/uuid': ^8.3.4 + '@types/webfontloader': ^1.6.34 + '@typescript-eslint/eslint-plugin': ~5.12.1 + '@typescript-eslint/parser': ~5.10.2 + autoprefixer: ^10.4.2 + axios: ^0.26.0 + babel-jest: 27.5.1 + babel-loader: ^8.2.3 + bcrypt: ^5.0.1 + cache-manager: ^3.6.0 + class-transformer: ^0.5.1 + class-validator: ^0.13.2 + clsx: ^1.1.1 + cookie-parser: ^1.4.6 + core-js: ^3.21.1 + csstype: ^3.0.10 + csvtojson: ^2.0.10 + cypress: ^9.5.1 + dayjs: ^1.10.8 + downloadjs: ^1.4.7 + eslint: ~8.10.0 + eslint-config-next: 12.1.0 + eslint-config-prettier: 8.4.0 + eslint-plugin-cypress: ^2.12.1 + eslint-plugin-import: ^2.25.4 + eslint-plugin-jsx-a11y: 6.5.1 + eslint-plugin-react: 7.29.2 + eslint-plugin-react-hooks: 4.3.0 + eslint-plugin-simple-import-sort: ^7.0.0 + eslint-plugin-unused-imports: ^2.0.0 + googleapis: ^95.0.0 + handlebars: ^4.7.7 + husky: ^7.0.4 + jest: 27.5.1 + joi: ^17.6.0 + lodash: ^4.17.21 + md5-hex: ^4.0.0 + monaco-editor: ^0.32.1 + multer: ^1.4.4 + nanoid: ^3.3.1 + next: ^12.1.0 + next-compose-plugins: ^2.2.1 + next-i18next: ^10.5.0 + node-stream-zip: ^1.15.0 + nodemailer: ^6.7.2 + passport: ^0.5.2 + passport-jwt: ^4.0.0 + passport-local: ^1.0.0 + pdf-lib: ^1.17.1 + pg: ^8.7.3 + playwright: ^1.19.2 + postcss: ^8.4.7 + prettier: ^2.5.1 + prettier-plugin-tailwindcss: ^0.1.8 + react: 17.0.2 + react-beautiful-dnd: ^13.1.0 + react-colorful: ^5.5.1 + react-dnd: ^15.1.1 + react-dnd-html5-backend: ^15.1.2 + react-dom: 17.0.2 + react-google-login: ^5.2.2 + react-hook-form: ^7.27.1 + react-hot-toast: ^2.2.0 + react-hotkeys-hook: ^3.4.4 + react-icons: ^4.3.1 + react-markdown: ^8.0.0 + react-query: ^3.34.16 + react-redux: ^7.2.6 + react-test-renderer: 17.0.2 + react-zoom-pan-pinch: ^2.1.3 + redux: ^4.1.2 + redux-persist: ^6.0.0 + redux-saga: ^1.1.3 + reflect-metadata: ^0.1.13 + regenerator-runtime: 0.13.9 + remark-gfm: ^3.0.1 + rxjs: ^7.5.4 + sass: ^1.49.9 + tailwindcss: ^3.0.23 + ts-jest: 27.1.3 + tslib: ^2.3.1 + typeorm: ^0.2.44 + typescript: ~4.5.5 + uuid: ^8.3.2 + webfontloader: ^1.6.28 + webpack: ^5.69.1 + +dependencies: + '@changesets/cli': 2.21.0 + '@date-io/dayjs': 2.13.1_dayjs@1.10.8 + '@emotion/css': 11.7.1_@babel+core@7.17.5 + '@emotion/react': 11.8.1_7c3ecd89bd75b61b41f2029715ea2305 + '@emotion/styled': 11.8.1_c697ad3c4ddb0545c7a1d619984abba5 + '@hookform/resolvers': 2.8.8_react-hook-form@7.27.1 + '@monaco-editor/react': 4.3.1_e62f1489d5efe674a41c3f8d6971effe + '@mui/icons-material': 5.4.4_dcbd3996b57a9fdc9dc26f211d7c87b5 + '@mui/lab': 5.0.0-alpha.71_5b6d988b6072fb9391c09edac80acc5a + '@mui/material': 5.4.4_a557939b8cd577a0014b488227bec235 + '@nestjs/axios': 0.0.6_8b36610a93f76db1b35891575c63ff52 + '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + '@nestjs/config': 1.2.0_8b36610a93f76db1b35891575c63ff52 + '@nestjs/core': 8.4.0_2e10c1a16efb48b2968dca34c1adcfc4 + '@nestjs/jwt': 8.0.0_@nestjs+common@8.4.0 + '@nestjs/mapped-types': 1.0.1_7c37dec5f311cf2dfddc0f9a032e50d3 + '@nestjs/passport': 8.2.1_7279ab1fdcd161f1ce2d9179e8fa21f7 + '@nestjs/platform-express': 8.4.0_31e7036b193d6d3c9cadab18cbb4af84 + '@nestjs/schedule': 1.0.2_1ce925e2290a1cea9e3700e8a60baeb5 + '@nestjs/serve-static': 2.2.2_31e7036b193d6d3c9cadab18cbb4af84 + '@nestjs/typeorm': 8.0.3_3917dd1d6231e97e428aeb9078dfff90 + '@next/bundle-analyzer': 12.1.0 + '@nrwl/next': 13.8.3_4d9e8dcc474fdc8626effc4c33c30895 + '@reduxjs/toolkit': 1.8.0_react-redux@7.2.6+react@17.0.2 + autoprefixer: 10.4.2_postcss@8.4.7 + axios: 0.26.0 + bcrypt: 5.0.1 + cache-manager: 3.6.0 + class-transformer: 0.5.1 + class-validator: 0.13.2 + clsx: 1.1.1 + cookie-parser: 1.4.6 + core-js: 3.21.1 + csvtojson: 2.0.10 + dayjs: 1.10.8 + downloadjs: 1.4.7 + googleapis: 95.0.0 + handlebars: 4.7.7 + joi: 17.6.0 + lodash: 4.17.21 + md5-hex: 4.0.0 + monaco-editor: 0.32.1 + multer: 1.4.4 + nanoid: 3.3.1 + next: 12.1.0_b8b2418670651b634ff05a91b7cd94fe + next-compose-plugins: 2.2.1 + next-i18next: 10.5.0_caa633a00319350dbda42996613fe26c + node-stream-zip: 1.15.0 + nodemailer: 6.7.2 + passport: 0.5.2 + passport-jwt: 4.0.0 + passport-local: 1.0.0 + pdf-lib: 1.17.1 + pg: 8.7.3 + postcss: 8.4.7 + react: 17.0.2 + react-beautiful-dnd: 13.1.0_react-dom@17.0.2+react@17.0.2 + react-colorful: 5.5.1_react-dom@17.0.2+react@17.0.2 + react-dnd: 15.1.1_7080516a7860abf4e105335dcf1f2463 + react-dnd-html5-backend: 15.1.2 + react-dom: 17.0.2_react@17.0.2 + react-google-login: 5.2.2_react-dom@17.0.2+react@17.0.2 + react-hook-form: 7.27.1_react@17.0.2 + react-hot-toast: 2.2.0_cf9e547307deef37c34d2702bfa94a69 + react-hotkeys-hook: 3.4.4_react-dom@17.0.2+react@17.0.2 + react-icons: 4.3.1_react@17.0.2 + react-markdown: 8.0.0_a0c521d4794c7ad97f5f4c1c4a7d5818 + react-query: 3.34.16_react-dom@17.0.2+react@17.0.2 + react-redux: 7.2.6_react-dom@17.0.2+react@17.0.2 + react-zoom-pan-pinch: 2.1.3_react-dom@17.0.2+react@17.0.2 + redux: 4.1.2 + redux-persist: 6.0.0_redux@4.1.2 + redux-saga: 1.1.3 + reflect-metadata: 0.1.13 + regenerator-runtime: 0.13.9 + remark-gfm: 3.0.1 + rxjs: 7.5.4 + tailwindcss: 3.0.23_autoprefixer@10.4.2 + tslib: 2.3.1 + typeorm: 0.2.44_pg@8.7.3 + uuid: 8.3.2 + webfontloader: 1.6.28 + +devDependencies: + '@babel/core': 7.17.5 + '@babel/preset-env': 7.16.11_@babel+core@7.17.5 + '@nestjs/schematics': 8.0.7_typescript@4.5.5 + '@nestjs/testing': 8.4.0_5038ecb39d0fed2140e79e9371a95289 + '@nrwl/cli': 13.8.3 + '@nrwl/eslint-plugin-nx': 13.8.3_830aac973cd7f79836871ffcdef90c4e + '@nrwl/jest': 13.8.3 + '@nrwl/linter': 13.8.3_eslint@8.10.0+typescript@4.5.5 + '@nrwl/nest': 13.8.3_dd26a5c7f44cc79875cab41b61b7f609 + '@nrwl/node': 13.8.3_dd26a5c7f44cc79875cab41b61b7f609 + '@nrwl/nx-cloud': 13.1.6 + '@nrwl/react': 13.8.3_e19de17ca33262dc923842ef0b997165 + '@nrwl/tao': 13.8.3 + '@nrwl/web': 13.8.3_1f607a691b0adf275d8775b9f637bb54 + '@nrwl/workspace': 13.8.3_dd26a5c7f44cc79875cab41b61b7f609 + '@testing-library/react': 12.1.3_react-dom@17.0.2+react@17.0.2 + '@testing-library/react-hooks': 7.0.2_fc2bb8a5b006d3f25c5f84ea777e678d + '@types/bcrypt': 5.0.0 + '@types/cache-manager': 3.4.3 + '@types/cookie-parser': 1.4.2 + '@types/downloadjs': 1.4.3 + '@types/jest': 27.4.1 + '@types/lodash': 4.14.179 + '@types/multer': 1.4.7 + '@types/node': 17.0.21 + '@types/nodemailer': 6.4.4 + '@types/passport-jwt': 3.0.6 + '@types/passport-local': 1.0.34 + '@types/react': 17.0.39 + '@types/react-beautiful-dnd': 13.1.2 + '@types/react-dom': 17.0.11 + '@types/tailwindcss': 3.0.9 + '@types/uuid': 8.3.4 + '@types/webfontloader': 1.6.34 + '@typescript-eslint/eslint-plugin': 5.12.1_226e0cd99c07ccb7b6d7a783a15c23f5 + '@typescript-eslint/parser': 5.10.2_eslint@8.10.0+typescript@4.5.5 + babel-jest: 27.5.1_@babel+core@7.17.5 + babel-loader: 8.2.3_9351ded4f79a023849d74b5df047d562 + csstype: 3.0.10 + cypress: 9.5.1 + eslint: 8.10.0 + eslint-config-next: 12.1.0_4c2038871e8233f2b143838d68f90b16 + eslint-config-prettier: 8.4.0_eslint@8.10.0 + eslint-plugin-cypress: 2.12.1_eslint@8.10.0 + eslint-plugin-import: 2.25.4_eslint@8.10.0 + eslint-plugin-jsx-a11y: 6.5.1_eslint@8.10.0 + eslint-plugin-react: 7.29.2_eslint@8.10.0 + eslint-plugin-react-hooks: 4.3.0_eslint@8.10.0 + eslint-plugin-simple-import-sort: 7.0.0_eslint@8.10.0 + eslint-plugin-unused-imports: 2.0.0_20f00f54a34e817a92f71b13f07164a5 + husky: 7.0.4 + jest: 27.5.1 + playwright: 1.19.2 + prettier: 2.5.1 + prettier-plugin-tailwindcss: 0.1.8_prettier@2.5.1 + react-test-renderer: 17.0.2_react@17.0.2 + sass: 1.49.9 + ts-jest: 27.1.3_aa4e34889dbe984542b612bc8b6a6267 + typescript: 4.5.5 + webpack: 5.69.1 + +packages: + + /@ampproject/remapping/2.1.2: + resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.4 + + /@angular-devkit/core/13.2.4: + resolution: {integrity: sha512-hSw1JWA/6dDAF/xleQRXGtzHphfU49TMUhvAoAmsmmz3NAn03xLy1dtqdIXIf+TkFXVvZDaAB2mW8KfRV67GFg==} + engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + chokidar: ^3.5.2 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + ajv: 8.9.0 + ajv-formats: 2.1.1 + fast-json-stable-stringify: 2.1.0 + magic-string: 0.25.7 + rxjs: 6.6.7 + source-map: 0.7.3 + dev: true + + /@angular-devkit/schematics/13.2.4: + resolution: {integrity: sha512-VMhYa4cDu5yE31OvHncAd15Rmlchih/Sr6sxFsIwkg4xzRNIIZCtwqxVXgf0TiTN9zrvlvzK7nhPqTGNqqYb2A==} + engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + dependencies: + '@angular-devkit/core': 13.2.4 + jsonc-parser: 3.0.0 + magic-string: 0.25.7 + ora: 5.4.1 + rxjs: 6.6.7 + transitivePeerDependencies: + - chokidar + dev: true + + /@babel/code-frame/7.16.7: + resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.16.10 + + /@babel/compat-data/7.17.0: + resolution: {integrity: sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==} + engines: {node: '>=6.9.0'} + + /@babel/core/7.17.5: + resolution: {integrity: sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.1.2 + '@babel/code-frame': 7.16.7 + '@babel/generator': 7.17.3 + '@babel/helper-compilation-targets': 7.16.7_@babel+core@7.17.5 + '@babel/helper-module-transforms': 7.17.6 + '@babel/helpers': 7.17.2 + '@babel/parser': 7.17.3 + '@babel/template': 7.16.7 + '@babel/traverse': 7.17.3 + '@babel/types': 7.17.0 + convert-source-map: 1.8.0 + debug: 4.3.3 + gensync: 1.0.0-beta.2 + json5: 2.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + + /@babel/generator/7.17.3: + resolution: {integrity: sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.17.0 + jsesc: 2.5.2 + source-map: 0.5.7 + + /@babel/helper-annotate-as-pure/7.16.7: + resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.17.0 + + /@babel/helper-builder-binary-assignment-operator-visitor/7.16.7: + resolution: {integrity: sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-explode-assignable-expression': 7.16.7 + '@babel/types': 7.17.0 + + /@babel/helper-compilation-targets/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.17.0 + '@babel/core': 7.17.5 + '@babel/helper-validator-option': 7.16.7 + browserslist: 4.19.3 + semver: 6.3.0 + + /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.17.5: + resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-annotate-as-pure': 7.16.7 + '@babel/helper-environment-visitor': 7.16.7 + '@babel/helper-function-name': 7.16.7 + '@babel/helper-member-expression-to-functions': 7.16.7 + '@babel/helper-optimise-call-expression': 7.16.7 + '@babel/helper-replace-supers': 7.16.7 + '@babel/helper-split-export-declaration': 7.16.7 + transitivePeerDependencies: + - supports-color + + /@babel/helper-create-regexp-features-plugin/7.17.0_@babel+core@7.17.5: + resolution: {integrity: sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-annotate-as-pure': 7.16.7 + regexpu-core: 5.0.1 + + /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.17.5: + resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-compilation-targets': 7.16.7_@babel+core@7.17.5 + '@babel/helper-module-imports': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/traverse': 7.17.3 + debug: 4.3.3 + lodash.debounce: 4.0.8 + resolve: 1.22.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + + /@babel/helper-environment-visitor/7.16.7: + resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.17.0 + + /@babel/helper-explode-assignable-expression/7.16.7: + resolution: {integrity: sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.17.0 + + /@babel/helper-function-name/7.16.7: + resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-get-function-arity': 7.16.7 + '@babel/template': 7.16.7 + '@babel/types': 7.17.0 + + /@babel/helper-get-function-arity/7.16.7: + resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.17.0 + + /@babel/helper-hoist-variables/7.16.7: + resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.17.0 + + /@babel/helper-member-expression-to-functions/7.16.7: + resolution: {integrity: sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.17.0 + + /@babel/helper-module-imports/7.16.7: + resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.17.0 + + /@babel/helper-module-transforms/7.17.6: + resolution: {integrity: sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.16.7 + '@babel/helper-module-imports': 7.16.7 + '@babel/helper-simple-access': 7.16.7 + '@babel/helper-split-export-declaration': 7.16.7 + '@babel/helper-validator-identifier': 7.16.7 + '@babel/template': 7.16.7 + '@babel/traverse': 7.17.3 + '@babel/types': 7.17.0 + transitivePeerDependencies: + - supports-color + + /@babel/helper-optimise-call-expression/7.16.7: + resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.17.0 + + /@babel/helper-plugin-utils/7.16.7: + resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} + engines: {node: '>=6.9.0'} + + /@babel/helper-remap-async-to-generator/7.16.8: + resolution: {integrity: sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-annotate-as-pure': 7.16.7 + '@babel/helper-wrap-function': 7.16.8 + '@babel/types': 7.17.0 + transitivePeerDependencies: + - supports-color + + /@babel/helper-replace-supers/7.16.7: + resolution: {integrity: sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.16.7 + '@babel/helper-member-expression-to-functions': 7.16.7 + '@babel/helper-optimise-call-expression': 7.16.7 + '@babel/traverse': 7.17.3 + '@babel/types': 7.17.0 + transitivePeerDependencies: + - supports-color + + /@babel/helper-simple-access/7.16.7: + resolution: {integrity: sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.17.0 + + /@babel/helper-skip-transparent-expression-wrappers/7.16.0: + resolution: {integrity: sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.17.0 + + /@babel/helper-split-export-declaration/7.16.7: + resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.17.0 + + /@babel/helper-validator-identifier/7.16.7: + resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option/7.16.7: + resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-wrap-function/7.16.8: + resolution: {integrity: sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.16.7 + '@babel/template': 7.16.7 + '@babel/traverse': 7.17.3 + '@babel/types': 7.17.0 + transitivePeerDependencies: + - supports-color + + /@babel/helpers/7.17.2: + resolution: {integrity: sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.16.7 + '@babel/traverse': 7.17.3 + '@babel/types': 7.17.0 + transitivePeerDependencies: + - supports-color + + /@babel/highlight/7.16.10: + resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.16.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + + /@babel/parser/7.17.3: + resolution: {integrity: sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==} + engines: {node: '>=6.0.0'} + hasBin: true + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 + '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.17.5 + + /@babel/plugin-proposal-async-generator-functions/7.16.8_@babel+core@7.17.5: + resolution: {integrity: sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-remap-async-to-generator': 7.16.8 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.5 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-proposal-class-properties/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-proposal-class-static-block/7.17.6_@babel+core@7.17.5: + resolution: {integrity: sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.17.5 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-proposal-decorators/7.17.2_@babel+core@7.17.5: + resolution: {integrity: sha512-WH8Z95CwTq/W8rFbMqb9p3hicpt4RX4f0K659ax2VHxgOyT6qQmUaEVEjIh4WR9Eh9NymkVn5vwsrE68fAQNUw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-replace-supers': 7.16.7 + '@babel/plugin-syntax-decorators': 7.17.0_@babel+core@7.17.5 + charcodes: 0.2.0 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-proposal-dynamic-import/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.5 + + /@babel/plugin-proposal-export-namespace-from/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.17.5 + + /@babel/plugin-proposal-json-strings/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.5 + + /@babel/plugin-proposal-logical-assignment-operators/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.5 + + /@babel/plugin-proposal-nullish-coalescing-operator/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.5 + + /@babel/plugin-proposal-numeric-separator/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.5 + + /@babel/plugin-proposal-object-rest-spread/7.17.3_@babel+core@7.17.5: + resolution: {integrity: sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.17.0 + '@babel/core': 7.17.5 + '@babel/helper-compilation-targets': 7.16.7_@babel+core@7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.5 + '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.17.5 + + /@babel/plugin-proposal-optional-catch-binding/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.5 + + /@babel/plugin-proposal-optional-chaining/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.5 + + /@babel/plugin-proposal-private-methods/7.16.11_@babel+core@7.17.5: + resolution: {integrity: sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-proposal-private-property-in-object/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-annotate-as-pure': 7.16.7 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.17.5 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-proposal-unicode-property-regex/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==} + engines: {node: '>=4'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.17.5: + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.17.5: + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.17.5: + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.17.5: + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-decorators/7.17.0_@babel+core@7.17.5: + resolution: {integrity: sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.17.5: + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.17.5: + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.17.5: + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.17.5: + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.17.5: + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.17.5: + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.17.5: + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.17.5: + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.17.5: + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.17.5: + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.17.5: + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.17.5: + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-arrow-functions/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-async-to-generator/7.16.8_@babel+core@7.17.5: + resolution: {integrity: sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-module-imports': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-remap-async-to-generator': 7.16.8 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-block-scoped-functions/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-block-scoping/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-classes/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-annotate-as-pure': 7.16.7 + '@babel/helper-environment-visitor': 7.16.7 + '@babel/helper-function-name': 7.16.7 + '@babel/helper-optimise-call-expression': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-replace-supers': 7.16.7 + '@babel/helper-split-export-declaration': 7.16.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-computed-properties/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-destructuring/7.17.3_@babel+core@7.17.5: + resolution: {integrity: sha512-dDFzegDYKlPqa72xIlbmSkly5MluLoaC1JswABGktyt6NTXSBcUuse/kWE/wvKFWJHPETpi158qJZFS3JmykJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-duplicate-keys/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-for-of/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-function-name/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-compilation-targets': 7.16.7_@babel+core@7.17.5 + '@babel/helper-function-name': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-literals/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-modules-amd/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-module-transforms': 7.17.6 + '@babel/helper-plugin-utils': 7.16.7 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-modules-commonjs/7.16.8_@babel+core@7.17.5: + resolution: {integrity: sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-module-transforms': 7.17.6 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-simple-access': 7.16.7 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-modules-systemjs/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-hoist-variables': 7.16.7 + '@babel/helper-module-transforms': 7.17.6 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-validator-identifier': 7.16.7 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-modules-umd/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-module-transforms': 7.17.6 + '@babel/helper-plugin-utils': 7.16.7 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-named-capturing-groups-regex/7.16.8_@babel+core@7.17.5: + resolution: {integrity: sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.17.5 + + /@babel/plugin-transform-new-target/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-object-super/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-replace-supers': 7.16.7 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-parameters/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-react-constant-elements/7.17.6_@babel+core@7.17.5: + resolution: {integrity: sha512-OBv9VkyyKtsHZiHLoSfCn+h6yU7YKX8nrs32xUmOa1SRSk+t03FosB6fBZ0Yz4BpD1WV7l73Nsad+2Tz7APpqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-react-display-name/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-react-jsx-development/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.17.5 + + /@babel/plugin-transform-react-jsx/7.17.3_@babel+core@7.17.5: + resolution: {integrity: sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-annotate-as-pure': 7.16.7 + '@babel/helper-module-imports': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.5 + '@babel/types': 7.17.0 + + /@babel/plugin-transform-react-pure-annotations/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-annotate-as-pure': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-regenerator/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + regenerator-transform: 0.14.5 + + /@babel/plugin-transform-reserved-words/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-runtime/7.17.0_@babel+core@7.17.5: + resolution: {integrity: sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-module-imports': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + babel-plugin-polyfill-corejs2: 0.3.1_@babel+core@7.17.5 + babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.17.5 + babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.17.5 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-shorthand-properties/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-spread/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 + + /@babel/plugin-transform-sticky-regex/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-template-literals/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-typeof-symbol/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-typescript/7.16.8_@babel+core@7.17.5: + resolution: {integrity: sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.5 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-unicode-escapes/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + + /@babel/preset-env/7.16.11_@babel+core@7.17.5: + resolution: {integrity: sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.17.0 + '@babel/core': 7.17.5 + '@babel/helper-compilation-targets': 7.16.7_@babel+core@7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-validator-option': 7.16.7 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-proposal-async-generator-functions': 7.16.8_@babel+core@7.17.5 + '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-proposal-class-static-block': 7.17.6_@babel+core@7.17.5 + '@babel/plugin-proposal-dynamic-import': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-proposal-export-namespace-from': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-proposal-json-strings': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-proposal-logical-assignment-operators': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-proposal-numeric-separator': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.17.5 + '@babel/plugin-proposal-optional-catch-binding': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.17.5 + '@babel/plugin-proposal-private-property-in-object': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.5 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.17.5 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.17.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.17.5 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.17.5 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.17.5 + '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-async-to-generator': 7.16.8_@babel+core@7.17.5 + '@babel/plugin-transform-block-scoped-functions': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-computed-properties': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-destructuring': 7.17.3_@babel+core@7.17.5 + '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-duplicate-keys': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-exponentiation-operator': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-function-name': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-literals': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-member-expression-literals': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-modules-amd': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-modules-commonjs': 7.16.8_@babel+core@7.17.5 + '@babel/plugin-transform-modules-systemjs': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-modules-umd': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-named-capturing-groups-regex': 7.16.8_@babel+core@7.17.5 + '@babel/plugin-transform-new-target': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-object-super': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-property-literals': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-regenerator': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-reserved-words': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-sticky-regex': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-typeof-symbol': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-unicode-escapes': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-unicode-regex': 7.16.7_@babel+core@7.17.5 + '@babel/preset-modules': 0.1.5_@babel+core@7.17.5 + '@babel/types': 7.17.0 + babel-plugin-polyfill-corejs2: 0.3.1_@babel+core@7.17.5 + babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.17.5 + babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.17.5 + core-js-compat: 3.21.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + + /@babel/preset-modules/0.1.5_@babel+core@7.17.5: + resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.17.5 + '@babel/types': 7.17.0 + esutils: 2.0.3 + + /@babel/preset-react/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-validator-option': 7.16.7 + '@babel/plugin-transform-react-display-name': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.17.5 + '@babel/plugin-transform-react-jsx-development': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-react-pure-annotations': 7.16.7_@babel+core@7.17.5 + + /@babel/preset-typescript/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-validator-option': 7.16.7 + '@babel/plugin-transform-typescript': 7.16.8_@babel+core@7.17.5 + transitivePeerDependencies: + - supports-color + + /@babel/runtime-corejs3/7.17.2: + resolution: {integrity: sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg==} + engines: {node: '>=6.9.0'} + dependencies: + core-js-pure: 3.21.1 + regenerator-runtime: 0.13.9 + + /@babel/runtime/7.17.2: + resolution: {integrity: sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.9 + + /@babel/template/7.16.7: + resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.16.7 + '@babel/parser': 7.17.3 + '@babel/types': 7.17.0 + + /@babel/traverse/7.17.3: + resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.16.7 + '@babel/generator': 7.17.3 + '@babel/helper-environment-visitor': 7.16.7 + '@babel/helper-function-name': 7.16.7 + '@babel/helper-hoist-variables': 7.16.7 + '@babel/helper-split-export-declaration': 7.16.7 + '@babel/parser': 7.17.3 + '@babel/types': 7.17.0 + debug: 4.3.3 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/types/7.17.0: + resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.16.7 + to-fast-properties: 2.0.0 + + /@bcoe/v8-coverage/0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + /@changesets/apply-release-plan/5.0.5: + resolution: {integrity: sha512-CxL9dkhzjHiVmXCyHgsLCQj7i/coFTMv/Yy0v6BC5cIWZkQml+lf7zvQqAcFXwY7b54HxRWZPku02XFB53Q0Uw==} + dependencies: + '@babel/runtime': 7.17.2 + '@changesets/config': 1.7.0 + '@changesets/get-version-range-type': 0.3.2 + '@changesets/git': 1.3.1 + '@changesets/types': 4.1.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 1.19.1 + resolve-from: 5.0.0 + semver: 5.7.1 + dev: false + + /@changesets/assemble-release-plan/5.1.0: + resolution: {integrity: sha512-iYlqffCMhcwZ+6Cv8cimf10OBGYXQKufBI7J6htpRgCV2nT99RKXEjbYOtrXWKQqzu0XxOsk15apSEwjZN0JRw==} + dependencies: + '@babel/runtime': 7.17.2 + '@changesets/errors': 0.1.4 + '@changesets/get-dependents-graph': 1.3.1 + '@changesets/types': 4.1.0 + '@manypkg/get-packages': 1.1.3 + semver: 5.7.1 + dev: false + + /@changesets/changelog-git/0.1.10: + resolution: {integrity: sha512-4t7zqPOv3aDZp4Y+AyDhiOG2ypaUXDpOz+MT1wOk3uSZNv78AaDByam0hdk5kfYuH1RlMecWU4/U5lO1ZL5eaA==} + dependencies: + '@changesets/types': 4.1.0 + dev: false + + /@changesets/cli/2.21.0: + resolution: {integrity: sha512-cJXRg28MmF9VbQrlwSjpY4AJA2xZUbXFCpQ3kFmX0IeppO7wknZ2QfocAhIqwM828t8d3R4Zpi5xnvJ/crIcQw==} + hasBin: true + dependencies: + '@babel/runtime': 7.17.2 + '@changesets/apply-release-plan': 5.0.5 + '@changesets/assemble-release-plan': 5.1.0 + '@changesets/changelog-git': 0.1.10 + '@changesets/config': 1.7.0 + '@changesets/errors': 0.1.4 + '@changesets/get-dependents-graph': 1.3.1 + '@changesets/get-release-plan': 3.0.6 + '@changesets/git': 1.3.1 + '@changesets/logger': 0.0.5 + '@changesets/pre': 1.0.10 + '@changesets/read': 0.5.4 + '@changesets/types': 4.1.0 + '@changesets/write': 0.1.7 + '@manypkg/get-packages': 1.1.3 + '@types/is-ci': 3.0.0 + '@types/semver': 6.2.3 + chalk: 2.4.2 + enquirer: 2.3.6 + external-editor: 3.1.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + is-ci: 3.0.1 + meow: 6.1.1 + outdent: 0.5.0 + p-limit: 2.3.0 + preferred-pm: 3.0.3 + semver: 5.7.1 + spawndamnit: 2.0.0 + term-size: 2.2.1 + tty-table: 2.8.13 + dev: false + + /@changesets/config/1.7.0: + resolution: {integrity: sha512-Ctk6ZO5Ay6oZ95bbKXyA2a1QG0jQUePaGCY6BKkZtUG4PgysesfmiQOPgOY5OsRMt8exJeo6l+DJ75YiKmh0rQ==} + dependencies: + '@changesets/errors': 0.1.4 + '@changesets/get-dependents-graph': 1.3.1 + '@changesets/logger': 0.0.5 + '@changesets/types': 4.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.4 + dev: false + + /@changesets/errors/0.1.4: + resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} + dependencies: + extendable-error: 0.1.7 + dev: false + + /@changesets/get-dependents-graph/1.3.1: + resolution: {integrity: sha512-HwUs8U0XK/ZqCQon1/80jJEyswS8JVmTiHTZslrTpuavyhhhxrSpO1eVCdKgaVHBRalOw3gRzdS3uzkmqYsQSQ==} + dependencies: + '@changesets/types': 4.1.0 + '@manypkg/get-packages': 1.1.3 + chalk: 2.4.2 + fs-extra: 7.0.1 + semver: 5.7.1 + dev: false + + /@changesets/get-release-plan/3.0.6: + resolution: {integrity: sha512-HpPyr8y6xkihy3rONLZ6OtfgYq88NotidPAuS3nwMeZjLHiIVLyejR2+/5q717f6HKcrATxAjTwMAcjl7X/uzA==} + dependencies: + '@babel/runtime': 7.17.2 + '@changesets/assemble-release-plan': 5.1.0 + '@changesets/config': 1.7.0 + '@changesets/pre': 1.0.10 + '@changesets/read': 0.5.4 + '@changesets/types': 4.1.0 + '@manypkg/get-packages': 1.1.3 + dev: false + + /@changesets/get-version-range-type/0.3.2: + resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} + dev: false + + /@changesets/git/1.3.1: + resolution: {integrity: sha512-yg60QUi38VA0XGXdBy9SRYJhs8xJHE97Z1CaB/hFyByBlh5k1i+avFNBvvw66MsoT/aiml6y9scIG6sC8R5mfg==} + dependencies: + '@babel/runtime': 7.17.2 + '@changesets/errors': 0.1.4 + '@changesets/types': 4.1.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + spawndamnit: 2.0.0 + dev: false + + /@changesets/logger/0.0.5: + resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} + dependencies: + chalk: 2.4.2 + dev: false + + /@changesets/parse/0.3.12: + resolution: {integrity: sha512-FOBz2L1dT9PcvyQU1Qp2sQ0B4Jw7EgRDAKFVzAQwhzXqCq03TcE7vgKU6VSksCJAioMYDowdVVHNnv/Uak6yZQ==} + dependencies: + '@changesets/types': 4.1.0 + js-yaml: 3.14.1 + dev: false + + /@changesets/pre/1.0.10: + resolution: {integrity: sha512-cZC1C1wTSC17/TcTWivAQ4LAXz5jEYDuy3UeZiBz1wnTTzMHyTHLLwJi60juhl4hawXunDLw0mwZkcpS8Ivitg==} + dependencies: + '@babel/runtime': 7.17.2 + '@changesets/errors': 0.1.4 + '@changesets/types': 4.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + dev: false + + /@changesets/read/0.5.4: + resolution: {integrity: sha512-12dTx+p5ztFs9QgJDGHRHR6HzTIbHct9S4lK2I/i6Qkz1cNfAPVIbdoMCdbPIWeLank9muMUjiiFmCWJD7tQIg==} + dependencies: + '@babel/runtime': 7.17.2 + '@changesets/git': 1.3.1 + '@changesets/logger': 0.0.5 + '@changesets/parse': 0.3.12 + '@changesets/types': 4.1.0 + chalk: 2.4.2 + fs-extra: 7.0.1 + p-filter: 2.1.0 + dev: false + + /@changesets/types/4.1.0: + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + dev: false + + /@changesets/write/0.1.7: + resolution: {integrity: sha512-6r+tc6u2l5BBIwEAh7ivRYWFir+XKiw0q/6Hx6NJA4dSN5fNu9uyWRQ+IMHCllD9dBcsh+e79sOepc+xT8l28g==} + dependencies: + '@babel/runtime': 7.17.2 + '@changesets/types': 4.1.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + prettier: 1.19.1 + dev: false + + /@cypress/request/2.88.10: + resolution: {integrity: sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==} + engines: {node: '>= 6'} + dependencies: + aws-sign2: 0.7.0 + aws4: 1.11.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + http-signature: 1.3.6 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.34 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 8.3.2 + dev: true + + /@cypress/webpack-preprocessor/5.11.1_a30ff5fb365c4033bcdb0d3efc4c23d0: + resolution: {integrity: sha512-kfdF+W/Tns81rFplnqlgZ+t6V+FJ7vegeQCYolLyhh0nJ8eG3s5HvV/ak/zSlbQnaOmAuYiZIChJFVZLUWuNOA==} + peerDependencies: + '@babel/core': ^7.0.1 + '@babel/preset-env': ^7.0.0 + babel-loader: ^8.0.2 + webpack: ^4 || ^5 + dependencies: + '@babel/core': 7.17.5 + '@babel/preset-env': 7.16.11_@babel+core@7.17.5 + babel-loader: 8.2.3_9351ded4f79a023849d74b5df047d562 + bluebird: 3.7.1 + debug: 4.3.3 + lodash: 4.17.21 + webpack: 5.69.1 + transitivePeerDependencies: + - supports-color + + /@cypress/xvfb/1.2.4: + resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} + dependencies: + debug: 3.2.7 + lodash.once: 4.1.1 + dev: true + + /@date-io/core/2.13.1: + resolution: {integrity: sha512-pVI9nfkf2qClb2Cxdq0Q4zJhdawMG4ybWZUVGifT78FDwzRMX2SwXBb55s5NRJk0HcIicDuxktmCtemZqMH1Zg==} + dev: false + + /@date-io/date-fns/2.13.1: + resolution: {integrity: sha512-8fmfwjiLMpFLD+t4NBwDx0eblWnNcgt4NgfT/uiiQTGI81fnPu9tpBMYdAcuWxaV7LLpXgzLBx1SYWAMDVUDQQ==} + peerDependencies: + date-fns: ^2.0.0 + peerDependenciesMeta: + date-fns: + optional: true + dependencies: + '@date-io/core': 2.13.1 + dev: false + + /@date-io/dayjs/2.13.1_dayjs@1.10.8: + resolution: {integrity: sha512-5bL4WWWmlI4uGZVScANhHJV7Mjp93ec2gNeUHDqqLaMZhp51S0NgD25oqj/k0LqBn1cdU2MvzNpk/ObMmVv5cQ==} + peerDependencies: + dayjs: ^1.8.17 + peerDependenciesMeta: + dayjs: + optional: true + dependencies: + '@date-io/core': 2.13.1 + dayjs: 1.10.8 + dev: false + + /@date-io/luxon/2.13.1: + resolution: {integrity: sha512-yG+uM7lXfwLyKKEwjvP8oZ7qblpmfl9gxQYae55ifbwiTs0CoCTkYkxEaQHGkYtTqGTzLqcb0O9Pzx6vgWg+yg==} + peerDependencies: + luxon: ^1.21.3 || ^2.x + peerDependenciesMeta: + luxon: + optional: true + dependencies: + '@date-io/core': 2.13.1 + dev: false + + /@date-io/moment/2.13.1: + resolution: {integrity: sha512-XX1X/Tlvl3TdqQy2j0ZUtEJV6Rl8tOyc5WOS3ki52He28Uzme4Ro/JuPWTMBDH63weSWIZDlbR7zBgp3ZA2y1A==} + peerDependencies: + moment: ^2.24.0 + peerDependenciesMeta: + moment: + optional: true + dependencies: + '@date-io/core': 2.13.1 + dev: false + + /@emotion/babel-plugin/11.7.2_@babel+core@7.17.5: + resolution: {integrity: sha512-6mGSCWi9UzXut/ZAN6lGFu33wGR3SJisNl3c0tvlmb8XChH1b2SUvxvnOh7hvLpqyRdHHU9AiazV3Cwbk5SXKQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-module-imports': 7.16.7 + '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.5 + '@babel/runtime': 7.17.2 + '@emotion/hash': 0.8.0 + '@emotion/memoize': 0.7.5 + '@emotion/serialize': 1.0.2 + babel-plugin-macros: 2.8.0 + convert-source-map: 1.8.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.0.13 + dev: false + + /@emotion/cache/11.7.1: + resolution: {integrity: sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==} + dependencies: + '@emotion/memoize': 0.7.5 + '@emotion/sheet': 1.1.0 + '@emotion/utils': 1.1.0 + '@emotion/weak-memoize': 0.2.5 + stylis: 4.0.13 + dev: false + + /@emotion/css/11.7.1_@babel+core@7.17.5: + resolution: {integrity: sha512-RUUgPlMZunlc7SE5A6Hg+VWRzb2cU6O9xlV78KCFgcnl25s7Qz/20oQg71iKudpLqk7xj0vhbJlwcJJMT0BOZg==} + peerDependencies: + '@babel/core': ^7.0.0 + peerDependenciesMeta: + '@babel/core': + optional: true + dependencies: + '@babel/core': 7.17.5 + '@emotion/babel-plugin': 11.7.2_@babel+core@7.17.5 + '@emotion/cache': 11.7.1 + '@emotion/serialize': 1.0.2 + '@emotion/sheet': 1.1.0 + '@emotion/utils': 1.1.0 + dev: false + + /@emotion/hash/0.8.0: + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + dev: false + + /@emotion/is-prop-valid/1.1.2: + resolution: {integrity: sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ==} + dependencies: + '@emotion/memoize': 0.7.5 + dev: false + + /@emotion/memoize/0.7.5: + resolution: {integrity: sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==} + dev: false + + /@emotion/react/11.8.1_7c3ecd89bd75b61b41f2029715ea2305: + resolution: {integrity: sha512-XGaie4nRxmtP1BZYBXqC5JGqMYF2KRKKI7vjqNvQxyRpekVAZhb6QqrElmZCAYXH1L90lAelADSVZC4PFsrJ8Q==} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/core': 7.17.5 + '@babel/runtime': 7.17.2 + '@emotion/babel-plugin': 11.7.2_@babel+core@7.17.5 + '@emotion/cache': 11.7.1 + '@emotion/serialize': 1.0.2 + '@emotion/sheet': 1.1.0 + '@emotion/utils': 1.1.0 + '@emotion/weak-memoize': 0.2.5 + '@types/react': 17.0.39 + hoist-non-react-statics: 3.3.2 + react: 17.0.2 + dev: false + + /@emotion/serialize/1.0.2: + resolution: {integrity: sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A==} + dependencies: + '@emotion/hash': 0.8.0 + '@emotion/memoize': 0.7.5 + '@emotion/unitless': 0.7.5 + '@emotion/utils': 1.1.0 + csstype: 3.0.10 + dev: false + + /@emotion/sheet/1.1.0: + resolution: {integrity: sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==} + dev: false + + /@emotion/styled/11.8.1_c697ad3c4ddb0545c7a1d619984abba5: + resolution: {integrity: sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ==} + peerDependencies: + '@babel/core': ^7.0.0 + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/core': 7.17.5 + '@babel/runtime': 7.17.2 + '@emotion/babel-plugin': 11.7.2_@babel+core@7.17.5 + '@emotion/is-prop-valid': 1.1.2 + '@emotion/react': 11.8.1_7c3ecd89bd75b61b41f2029715ea2305 + '@emotion/serialize': 1.0.2 + '@emotion/utils': 1.1.0 + '@types/react': 17.0.39 + react: 17.0.2 + dev: false + + /@emotion/unitless/0.7.5: + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + dev: false + + /@emotion/utils/1.1.0: + resolution: {integrity: sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ==} + dev: false + + /@emotion/weak-memoize/0.2.5: + resolution: {integrity: sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==} + dev: false + + /@eslint/eslintrc/1.2.0: + resolution: {integrity: sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.3 + espree: 9.3.1 + globals: 13.12.1 + ignore: 4.0.6 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@hapi/hoek/9.2.1: + resolution: {integrity: sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==} + dev: false + + /@hapi/topo/5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + dependencies: + '@hapi/hoek': 9.2.1 + dev: false + + /@hookform/resolvers/2.8.8_react-hook-form@7.27.1: + resolution: {integrity: sha512-meAEDur1IJBfKyTo9yPYAuzjIfrxA7m9Ov+1nxaW/YupsqMeseWifoUjWK03+hz/RJizsVQAaUjVxFEkyu0GWg==} + peerDependencies: + react-hook-form: ^7.0.0 + dependencies: + react-hook-form: 7.27.1_react@17.0.2 + dev: false + + /@humanwhocodes/config-array/0.9.5: + resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.3 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@istanbuljs/load-nyc-config/1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + /@istanbuljs/schema/0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + /@jest/console/27.5.1: + resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 17.0.21 + chalk: 4.1.2 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + + /@jest/core/27.5.1: + resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 27.5.1 + '@jest/reporters': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.21 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.8.1 + exit: 0.1.2 + graceful-fs: 4.2.9 + jest-changed-files: 27.5.1 + jest-config: 27.5.1 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-resolve-dependencies: 27.5.1 + jest-runner: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + jest-watcher: 27.5.1 + micromatch: 4.0.4 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /@jest/environment/27.5.1: + resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.21 + jest-mock: 27.5.1 + + /@jest/fake-timers/27.5.1: + resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@sinonjs/fake-timers': 8.1.0 + '@types/node': 17.0.21 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + /@jest/globals/27.5.1: + resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/types': 27.5.1 + expect: 27.5.1 + + /@jest/reporters/27.2.2: + resolution: {integrity: sha512-ufwZ8XoLChEfPffDeVGroYbhbcYPom3zKDiv4Flhe97rr/o2IfUXoWkDUDoyJ3/V36RFIMjokSu0IJ/pbFtbHg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 27.5.1 + '@jest/test-result': 27.2.2 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.0 + graceful-fs: 4.2.9 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 4.0.3 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.4 + jest-haste-map: 27.5.1 + jest-resolve: 27.2.2 + jest-util: 27.2.0 + jest-worker: 27.5.1 + slash: 3.0.0 + source-map: 0.6.1 + string-length: 4.0.2 + terminal-link: 2.1.1 + v8-to-istanbul: 8.1.1 + transitivePeerDependencies: + - supports-color + + /@jest/reporters/27.5.1: + resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.21 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.0 + graceful-fs: 4.2.9 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.1.0 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.4 + jest-haste-map: 27.5.1 + jest-resolve: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + slash: 3.0.0 + source-map: 0.6.1 + string-length: 4.0.2 + terminal-link: 2.1.1 + v8-to-istanbul: 8.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/source-map/27.5.1: + resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.9 + source-map: 0.6.1 + + /@jest/test-result/27.2.2: + resolution: {integrity: sha512-yENoDEoWlEFI7l5z7UYyJb/y5Q8RqbPd4neAVhKr6l+vVaQOPKf8V/IseSMJI9+urDUIxgssA7RGNyCRhGjZvw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/console': 27.5.1 + '@jest/types': 27.5.1 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 + + /@jest/test-result/27.5.1: + resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/console': 27.5.1 + '@jest/types': 27.5.1 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 + + /@jest/test-sequencer/27.5.1: + resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/test-result': 27.5.1 + graceful-fs: 4.2.9 + jest-haste-map: 27.5.1 + jest-runtime: 27.5.1 + transitivePeerDependencies: + - supports-color + + /@jest/transform/27.5.1: + resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@babel/core': 7.17.5 + '@jest/types': 27.5.1 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.8.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.9 + jest-haste-map: 27.5.1 + jest-regex-util: 27.5.1 + jest-util: 27.5.1 + micromatch: 4.0.4 + pirates: 4.0.5 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + + /@jest/types/27.5.1: + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 17.0.21 + '@types/yargs': 16.0.4 + chalk: 4.1.2 + + /@jridgewell/resolve-uri/3.0.5: + resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==} + engines: {node: '>=6.0.0'} + + /@jridgewell/sourcemap-codec/1.4.11: + resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==} + + /@jridgewell/trace-mapping/0.3.4: + resolution: {integrity: sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==} + dependencies: + '@jridgewell/resolve-uri': 3.0.5 + '@jridgewell/sourcemap-codec': 1.4.11 + + /@manypkg/find-root/1.1.0: + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + dependencies: + '@babel/runtime': 7.17.2 + '@types/node': 12.20.46 + find-up: 4.1.0 + fs-extra: 8.1.0 + dev: false + + /@manypkg/get-packages/1.1.3: + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + dependencies: + '@babel/runtime': 7.17.2 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 + dev: false + + /@mapbox/node-pre-gyp/1.0.8: + resolution: {integrity: sha512-CMGKi28CF+qlbXh26hDe6NxCd7amqeAzEqnS6IHeO6LoaKyM/n+Xw3HT1COdq8cuioOdlKdqn/hCmqPUOMOywg==} + hasBin: true + dependencies: + detect-libc: 1.0.3 + https-proxy-agent: 5.0.0 + make-dir: 3.1.0 + node-fetch: 2.6.7 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.3.5 + tar: 6.1.11 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@monaco-editor/loader/1.2.0_monaco-editor@0.32.1: + resolution: {integrity: sha512-cJVCG/T/KxXgzYnjKqyAgsKDbH9mGLjcXxN6AmwumBwa2rVFkwvGcUj1RJtD0ko4XqLqJxwqsN/Z/KURB5f1OQ==} + peerDependencies: + monaco-editor: '>= 0.21.0 < 1' + dependencies: + monaco-editor: 0.32.1 + state-local: 1.0.7 + dev: false + + /@monaco-editor/react/4.3.1_e62f1489d5efe674a41c3f8d6971effe: + resolution: {integrity: sha512-f+0BK1PP/W5I50hHHmwf11+Ea92E5H1VZXs+wvKplWUWOfyMa1VVwqkJrXjRvbcqHL+XdIGYWhWNdi4McEvnZg==} + peerDependencies: + monaco-editor: '>= 0.25.0 < 1' + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@monaco-editor/loader': 1.2.0_monaco-editor@0.32.1 + monaco-editor: 0.32.1 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + dev: false + + /@mui/base/5.0.0-alpha.70_b8fdba992ce7d797017dc07106486496: + resolution: {integrity: sha512-8UZWhz1JYuQnPkAbC37cl4aL1JyNWZ08wDXlp57W7fYQp5xFpBP/7p56AcWg2qG9CNJP0IlFg2Wp4md1v2l4iA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^16.8.6 || ^17.0.0 + react: ^17.0.0 + react-dom: ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.17.2 + '@emotion/is-prop-valid': 1.1.2 + '@mui/utils': 5.4.4_react@17.0.2 + '@popperjs/core': 2.11.2 + '@types/react': 17.0.39 + clsx: 1.1.1 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-is: 17.0.2 + dev: false + + /@mui/icons-material/5.4.4_dcbd3996b57a9fdc9dc26f211d7c87b5: + resolution: {integrity: sha512-7zoRpjO8vsd+bPvXq6rtXu0V8Saj70X09dtTQogZmxQKabrYW3g7+Yym7SCRA7IYVF3ysz2AvdQrGD1P/sGepg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@mui/material': ^5.0.0 + '@types/react': ^16.8.6 || ^17.0.0 + react: ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.17.2 + '@mui/material': 5.4.4_a557939b8cd577a0014b488227bec235 + '@types/react': 17.0.39 + react: 17.0.2 + dev: false + + /@mui/lab/5.0.0-alpha.71_5b6d988b6072fb9391c09edac80acc5a: + resolution: {integrity: sha512-ScGfSsiYa2XZl+TYEgDFoCv1DoXoWNQwyJBbDlapacEw10wGmY6sgMkCjsPhpuabgC5FVOaV5k30OxG7cZKXJQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@mui/material': ^5.0.0 + '@types/react': ^16.8.6 || ^17.0.0 + date-fns: ^2.25.0 + dayjs: ^1.10.7 + luxon: ^1.28.0 || ^2.0.0 + moment: ^2.29.1 + react: ^17.0.0 + react-dom: ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + date-fns: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + dependencies: + '@babel/runtime': 7.17.2 + '@date-io/date-fns': 2.13.1 + '@date-io/dayjs': 2.13.1_dayjs@1.10.8 + '@date-io/luxon': 2.13.1 + '@date-io/moment': 2.13.1 + '@mui/base': 5.0.0-alpha.70_b8fdba992ce7d797017dc07106486496 + '@mui/material': 5.4.4_a557939b8cd577a0014b488227bec235 + '@mui/system': 5.4.4_c6213411fad5ab06c1404c7945e6b2f5 + '@mui/utils': 5.4.4_react@17.0.2 + '@types/react': 17.0.39 + clsx: 1.1.1 + dayjs: 1.10.8 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-is: 17.0.2 + react-transition-group: 4.4.2_react-dom@17.0.2+react@17.0.2 + rifm: 0.12.1_react@17.0.2 + transitivePeerDependencies: + - '@emotion/react' + - '@emotion/styled' + dev: false + + /@mui/material/5.4.4_a557939b8cd577a0014b488227bec235: + resolution: {integrity: sha512-VDJC7GzO1HTFqfMe2zwvaW/sRhABBJXFkKEv5gO3uXx7x9fdwJHQr4udU7NWZCUdOcx9Y0h3BsAILLefYq+WPw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^16.8.6 || ^17.0.0 + react: ^17.0.0 + react-dom: ^17.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.17.2 + '@emotion/react': 11.8.1_7c3ecd89bd75b61b41f2029715ea2305 + '@emotion/styled': 11.8.1_c697ad3c4ddb0545c7a1d619984abba5 + '@mui/base': 5.0.0-alpha.70_b8fdba992ce7d797017dc07106486496 + '@mui/system': 5.4.4_c6213411fad5ab06c1404c7945e6b2f5 + '@mui/types': 7.1.2_@types+react@17.0.39 + '@mui/utils': 5.4.4_react@17.0.2 + '@types/react': 17.0.39 + '@types/react-transition-group': 4.4.4 + clsx: 1.1.1 + csstype: 3.0.10 + hoist-non-react-statics: 3.3.2 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-is: 17.0.2 + react-transition-group: 4.4.2_react-dom@17.0.2+react@17.0.2 + dev: false + + /@mui/private-theming/5.4.4_a0c521d4794c7ad97f5f4c1c4a7d5818: + resolution: {integrity: sha512-V/gxttr6736yJoU9q+4xxXsa0K/w9Hn9pg99zsOHt7i/O904w2CX5NHh5WqDXtoUzVcayLF0RB17yr6l79CE+A==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^16.8.6 || ^17.0.0 + react: ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.17.2 + '@mui/utils': 5.4.4_react@17.0.2 + '@types/react': 17.0.39 + prop-types: 15.8.1 + react: 17.0.2 + dev: false + + /@mui/styled-engine/5.4.4_08a40c758e6456be63daae44ab99bf23: + resolution: {integrity: sha512-AKx3rSgB6dmt5f7iP4K18mLFlE5/9EfJe/5EH9Pyqez8J/CPkTgYhJ/Va6qtlrcunzpui+uG/vfuf04yAZekSg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + react: ^17.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + dependencies: + '@babel/runtime': 7.17.2 + '@emotion/cache': 11.7.1 + '@emotion/react': 11.8.1_7c3ecd89bd75b61b41f2029715ea2305 + '@emotion/styled': 11.8.1_c697ad3c4ddb0545c7a1d619984abba5 + prop-types: 15.8.1 + react: 17.0.2 + dev: false + + /@mui/system/5.4.4_c6213411fad5ab06c1404c7945e6b2f5: + resolution: {integrity: sha512-Zjbztq2o/VRuRRCWjG44juRrPKYLQMqtQpMHmMttGu5BnvK6PAPW3WOY0r1JCAwLhbd8Kug9nyhGQYKETjo+tQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^16.8.6 || ^17.0.0 + react: ^17.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.17.2 + '@emotion/react': 11.8.1_7c3ecd89bd75b61b41f2029715ea2305 + '@emotion/styled': 11.8.1_c697ad3c4ddb0545c7a1d619984abba5 + '@mui/private-theming': 5.4.4_a0c521d4794c7ad97f5f4c1c4a7d5818 + '@mui/styled-engine': 5.4.4_08a40c758e6456be63daae44ab99bf23 + '@mui/types': 7.1.2_@types+react@17.0.39 + '@mui/utils': 5.4.4_react@17.0.2 + '@types/react': 17.0.39 + clsx: 1.1.1 + csstype: 3.0.10 + prop-types: 15.8.1 + react: 17.0.2 + dev: false + + /@mui/types/7.1.2_@types+react@17.0.39: + resolution: {integrity: sha512-SD7O1nVzqG+ckQpFjDhXPZjRceB8HQFHEvdLLrPhlJy4lLbwEBbxK74Tj4t6Jgk0fTvLJisuwOutrtYe9P/xBQ==} + peerDependencies: + '@types/react': '*' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 17.0.39 + dev: false + + /@mui/utils/5.4.4_react@17.0.2: + resolution: {integrity: sha512-hfYIXEuhc2mXMGN5nUPis8beH6uE/zl3uMWJcyHX0/LN/+QxO9zhYuV6l8AsAaphHFyS/fBv0SW3Nid7jw5hKQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + react: ^17.0.0 + dependencies: + '@babel/runtime': 7.17.2 + '@types/prop-types': 15.7.4 + '@types/react-is': 17.0.3 + prop-types: 15.8.1 + react: 17.0.2 + react-is: 17.0.2 + dev: false + + /@nestjs/axios/0.0.6_8b36610a93f76db1b35891575c63ff52: + resolution: {integrity: sha512-RgtKUziiEPRtWS3KJNDqq0Epw9ffFdIKAtcj6cXnWeJvgHLwnDkw2rUsmHpDYrhszG+8bc4H8sDygRKwNPPAQA==} + peerDependencies: + '@nestjs/common': ^7.0.0 || ^8.0.0 + reflect-metadata: ^0.1.12 + rxjs: ^6.0.0 || ^7.0.0 + dependencies: + '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + axios: 0.26.0 + reflect-metadata: 0.1.13 + rxjs: 7.5.4 + transitivePeerDependencies: + - debug + dev: false + + /@nestjs/common/8.4.0_6686f1d73a399753b561a58a608807ad: + resolution: {integrity: sha512-uvm1Ccw0qRka/Gd5Mo5A2MQo9ItwewPes1fE2SBboennPojoiJ4A3iKirtlPuxsL+HQ4oD5eO02OsDyLYL2z6w==} + peerDependencies: + cache-manager: '*' + class-transformer: '*' + class-validator: '*' + reflect-metadata: ^0.1.12 + rxjs: ^7.1.0 + peerDependenciesMeta: + cache-manager: + optional: true + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + axios: 0.26.0 + cache-manager: 3.6.0 + class-transformer: 0.5.1 + class-validator: 0.13.2 + iterare: 1.2.1 + reflect-metadata: 0.1.13 + rxjs: 7.5.4 + tslib: 2.3.1 + uuid: 8.3.2 + transitivePeerDependencies: + - debug + dev: false + + /@nestjs/config/1.2.0_8b36610a93f76db1b35891575c63ff52: + resolution: {integrity: sha512-GGZOj2g6EMZ23orsQqeD2Vs5E2ZrmAiB0qCGvERv+5nQmZjY4nKkisG4awQsym1uotmmzgtsd9lOiKqTIFONhA==} + peerDependencies: + '@nestjs/common': ^7.0.0 || ^8.0.0 + reflect-metadata: ^0.1.13 + rxjs: ^6.0.0 || ^7.2.0 + dependencies: + '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + dotenv: 16.0.0 + dotenv-expand: 8.0.1 + lodash: 4.17.21 + reflect-metadata: 0.1.13 + rxjs: 7.5.4 + uuid: 8.3.2 + dev: false + + /@nestjs/core/8.4.0_2e10c1a16efb48b2968dca34c1adcfc4: + resolution: {integrity: sha512-aur62kcyQz81D0GvM038t2JFelxPm9ABt11o5qO5ovTJ5mismZheckwyPA3WHg9wec6skr9v8kBVdZUbjFQJQQ==} + requiresBuild: true + peerDependencies: + '@nestjs/common': ^8.0.0 + '@nestjs/microservices': ^8.0.0 + '@nestjs/platform-express': ^8.0.0 + '@nestjs/websockets': ^8.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 + dependencies: + '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + '@nestjs/platform-express': 8.4.0_31e7036b193d6d3c9cadab18cbb4af84 + '@nuxtjs/opencollective': 0.3.2 + fast-safe-stringify: 2.1.1 + iterare: 1.2.1 + object-hash: 3.0.0 + path-to-regexp: 3.2.0 + reflect-metadata: 0.1.13 + rxjs: 7.5.4 + tslib: 2.3.1 + uuid: 8.3.2 + transitivePeerDependencies: + - encoding + dev: false + + /@nestjs/jwt/8.0.0_@nestjs+common@8.4.0: + resolution: {integrity: sha512-fz2LQgYY2zmuD8S+8UE215anwKyXlnB/1FwJQLVR47clNfMeFMK8WCxmn6xdPhF5JKuV1crO6FVabb1qWzDxqQ==} + peerDependencies: + '@nestjs/common': ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + '@types/jsonwebtoken': 8.5.4 + jsonwebtoken: 8.5.1 + dev: false + + /@nestjs/mapped-types/1.0.1_7c37dec5f311cf2dfddc0f9a032e50d3: + resolution: {integrity: sha512-NFvofzSinp00j5rzUd4tf+xi9od6383iY0JP7o0Bnu1fuItAUkWBgc4EKuIQ3D+c2QI3i9pG1kDWAeY27EMGtg==} + peerDependencies: + '@nestjs/common': ^7.0.8 || ^8.0.0 + class-transformer: ^0.2.0 || ^0.3.0 || ^0.4.0 || ^0.5.0 + class-validator: ^0.11.1 || ^0.12.0 || ^0.13.0 + reflect-metadata: ^0.1.12 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + class-transformer: 0.5.1 + class-validator: 0.13.2 + reflect-metadata: 0.1.13 + dev: false + + /@nestjs/passport/8.2.1_7279ab1fdcd161f1ce2d9179e8fa21f7: + resolution: {integrity: sha512-HXEKMLX1x865+lsJB4srwKHBciDNAhWY1Ha+xbxYRbk7J5leGDoHJAmeqe+Wb3NDn5nkboggLV87t0q2mbYc8w==} + peerDependencies: + '@nestjs/common': ^6.0.0 || ^7.0.0 || ^8.0.0 + passport: ^0.4.0 || ^0.5.0 + dependencies: + '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + passport: 0.5.2 + dev: false + + /@nestjs/platform-express/8.4.0_31e7036b193d6d3c9cadab18cbb4af84: + resolution: {integrity: sha512-vuMKBsjkqNjXPWI79r+509o2HARZwr8oTcu8pmOFRc21TI5M1DC6roK3Wk5gxSxF0V/bgtrjqe26ARZtlWBaAQ==} + peerDependencies: + '@nestjs/common': ^8.0.0 + '@nestjs/core': ^8.0.0 + dependencies: + '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + '@nestjs/core': 8.4.0_2e10c1a16efb48b2968dca34c1adcfc4 + body-parser: 1.19.2 + cors: 2.8.5 + express: 4.17.3 + multer: 1.4.4 + tslib: 2.3.1 + dev: false + + /@nestjs/schedule/1.0.2_1ce925e2290a1cea9e3700e8a60baeb5: + resolution: {integrity: sha512-GGRehpSm0nCthYNxAGdTzondPrRvurtKnkQCzIb3Tccqq6PhfS2QiHMwDaCel5/4jhYbR/lZR9UsVr6KSJc2Xg==} + peerDependencies: + '@nestjs/common': ^6.10.11 || ^7.0.0 || ^8.0.0 + '@nestjs/core': ^7.0.0 || ^8.0.0 + reflect-metadata: ^0.1.12 + dependencies: + '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + '@nestjs/core': 8.4.0_2e10c1a16efb48b2968dca34c1adcfc4 + cron: 1.7.2 + reflect-metadata: 0.1.13 + uuid: 8.3.2 + dev: false + + /@nestjs/schematics/8.0.7_typescript@4.5.5: + resolution: {integrity: sha512-7k+eMMBUwvXFp6vwZ5byiLBEQKzjMyIJwO46ginoFugt2AXrOt0iUhR3BKFuWDBZaYQ1l4az86UGw5ohgH3wow==} + peerDependencies: + typescript: ^3.4.5 || ^4.3.5 + dependencies: + '@angular-devkit/core': 13.2.4 + '@angular-devkit/schematics': 13.2.4 + fs-extra: 10.0.1 + jsonc-parser: 3.0.0 + pluralize: 8.0.0 + typescript: 4.5.5 + transitivePeerDependencies: + - chokidar + dev: true + + /@nestjs/serve-static/2.2.2_31e7036b193d6d3c9cadab18cbb4af84: + resolution: {integrity: sha512-3Mr+Q/npS3N7iGoF3Wd6Lj9QcjMGxbNrSqupi5cviM0IKrZ1BHl5qekW95rWYNATAVqoTmjGROAq+nKKpuUagQ==} + peerDependencies: + '@nestjs/common': ^6.0.0 || ^7.0.0 || ^8.0.0 + '@nestjs/core': ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + '@nestjs/core': 8.4.0_2e10c1a16efb48b2968dca34c1adcfc4 + path-to-regexp: 0.1.7 + dev: false + + /@nestjs/testing/8.4.0_5038ecb39d0fed2140e79e9371a95289: + resolution: {integrity: sha512-Gk9OW4RpiIGDOROHS7O271uJEpIddQP94zlkPOVOu3HPUxntfKbmDU4cDaCqC0PQ9Jtj71C0H1j9RS8ituYLAw==} + peerDependencies: + '@nestjs/common': ^8.0.0 + '@nestjs/core': ^8.0.0 + '@nestjs/microservices': ^8.0.0 + '@nestjs/platform-express': ^8.0.0 + peerDependenciesMeta: + '@nestjs/microservices': + optional: true + '@nestjs/platform-express': + optional: true + dependencies: + optional: 0.1.4 + '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + '@nestjs/core': 8.4.0_2e10c1a16efb48b2968dca34c1adcfc4 + '@nestjs/platform-express': 8.4.0_31e7036b193d6d3c9cadab18cbb4af84 + tslib: 2.3.1 + dev: true + + /@nestjs/typeorm/8.0.3_3917dd1d6231e97e428aeb9078dfff90: + resolution: {integrity: sha512-tf9rTXP6LeFInkwd+tktQhtLRsKp4RRYImprqT8gcHcJDx+xMP1IygnXELOKwF5vo2/mnhrGtBlRQ/iiS6170g==} + peerDependencies: + '@nestjs/common': ^8.0.0 + '@nestjs/core': ^8.0.0 + reflect-metadata: ^0.1.13 + rxjs: ^7.2.0 + typeorm: ^0.2.34 + dependencies: + '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + '@nestjs/core': 8.4.0_2e10c1a16efb48b2968dca34c1adcfc4 + reflect-metadata: 0.1.13 + rxjs: 7.5.4 + typeorm: 0.2.44_pg@8.7.3 + uuid: 8.3.2 + dev: false + + /@next/bundle-analyzer/12.1.0: + resolution: {integrity: sha512-pOtWRWaKQXff8A80Ex3E67EH8XuERHxBPn8cQgKzfhRKQwoTEareHe2nWJO1uXTQm6m7ZRhmhb4+uwp+UvmITQ==} + dependencies: + webpack-bundle-analyzer: 4.3.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@next/env/12.1.0: + resolution: {integrity: sha512-nrIgY6t17FQ9xxwH3jj0a6EOiQ/WDHUos35Hghtr+SWN/ntHIQ7UpuvSi0vaLzZVHQWaDupKI+liO5vANcDeTQ==} + dev: false + + /@next/eslint-plugin-next/12.1.0: + resolution: {integrity: sha512-WFiyvSM2G5cQmh32t/SiQuJ+I2O+FHVlK/RFw5b1565O2kEM/36EXncjt88Pa+X5oSc+1SS+tWxowWJd1lqI+g==} + dependencies: + glob: 7.1.7 + + /@next/swc-android-arm64/12.1.0: + resolution: {integrity: sha512-/280MLdZe0W03stA69iL+v6I+J1ascrQ6FrXBlXGCsGzrfMaGr7fskMa0T5AhQIVQD4nA/46QQWxG//DYuFBcA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-arm64/12.1.0: + resolution: {integrity: sha512-R8vcXE2/iONJ1Unf5Ptqjk6LRW3bggH+8drNkkzH4FLEQkHtELhvcmJwkXcuipyQCsIakldAXhRbZmm3YN1vXg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64/12.1.0: + resolution: {integrity: sha512-ieAz0/J0PhmbZBB8+EA/JGdhRHBogF8BWaeqR7hwveb6SYEIJaDNQy0I+ZN8gF8hLj63bEDxJAs/cEhdnTq+ug==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm-gnueabihf/12.1.0: + resolution: {integrity: sha512-njUd9hpl6o6A5d08dC0cKAgXKCzm5fFtgGe6i0eko8IAdtAPbtHxtpre3VeSxdZvuGFh+hb0REySQP9T1ttkog==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu/12.1.0: + resolution: {integrity: sha512-OqangJLkRxVxMhDtcb7Qn1xjzFA3s50EIxY7mljbSCLybU+sByPaWAHY4px97ieOlr2y4S0xdPKkQ3BCAwyo6Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl/12.1.0: + resolution: {integrity: sha512-hB8cLSt4GdmOpcwRe2UzI5UWn6HHO/vLkr5OTuNvCJ5xGDwpPXelVkYW/0+C3g5axbDW2Tym4S+MQCkkH9QfWA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu/12.1.0: + resolution: {integrity: sha512-OKO4R/digvrVuweSw/uBM4nSdyzsBV5EwkUeeG4KVpkIZEe64ZwRpnFB65bC6hGwxIBnTv5NMSnJ+0K/WmG78A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl/12.1.0: + resolution: {integrity: sha512-JohhgAHZvOD3rQY7tlp7NlmvtvYHBYgY0x5ZCecUT6eCCcl9lv6iV3nfu82ErkxNk1H893fqH0FUpznZ/H3pSw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc/12.1.0: + resolution: {integrity: sha512-T/3gIE6QEfKIJ4dmJk75v9hhNiYZhQYAoYm4iVo1TgcsuaKLFa+zMPh4056AHiG6n9tn2UQ1CFE8EoybEsqsSw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc/12.1.0: + resolution: {integrity: sha512-iwnKgHJdqhIW19H9PRPM9j55V6RdcOo6rX+5imx832BCWzkDbyomWnlzBfr6ByUYfhohb8QuH4hSGEikpPqI0Q==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc/12.1.0: + resolution: {integrity: sha512-aBvcbMwuanDH4EMrL2TthNJy+4nP59Bimn8egqv6GHMVj0a44cU6Au4PjOhLNqEh9l+IpRGBqMTzec94UdC5xg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.13.0 + + /@nrwl/cli/13.8.3: + resolution: {integrity: sha512-6+OTs9aF5GzZUSmPziCThdPw2yXqhEw6JjYjOU9OUMZP1+6nPv7mCZkl9W2f6LEm9hAWIxHC1DsUjzWhdL1VGQ==} + hasBin: true + dependencies: + '@nrwl/tao': 13.8.3 + chalk: 4.1.0 + enquirer: 2.3.6 + v8-compile-cache: 2.3.0 + yargs-parser: 20.0.0 + + /@nrwl/cypress/13.8.3_24000b73eec5d29b6bb8cada87d1d304: + resolution: {integrity: sha512-dNz15s0vGJZfYBe9I8pqvpcxPDhMBrER4QEjfB2U2iecNA8/mqYSuh7Xdf/B0m2n3XyGnO1dSkClA191euhUlQ==} + peerDependencies: + cypress: '>= 3 < 10' + peerDependenciesMeta: + cypress: + optional: true + dependencies: + '@cypress/webpack-preprocessor': 5.11.1_a30ff5fb365c4033bcdb0d3efc4c23d0 + '@nrwl/devkit': 13.8.3 + '@nrwl/linter': 13.8.3_eslint@8.10.0+typescript@4.5.5 + '@nrwl/workspace': 13.8.3_dd26a5c7f44cc79875cab41b61b7f609 + chalk: 4.1.0 + cypress: 9.5.1 + enhanced-resolve: 5.9.1 + fork-ts-checker-webpack-plugin: 6.2.10 + rxjs: 6.6.7 + ts-loader: 9.2.7_typescript@4.5.5+webpack@5.69.1 + tsconfig-paths: 3.12.0 + tsconfig-paths-webpack-plugin: 3.5.2 + tslib: 2.3.1 + webpack-node-externals: 3.0.0 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - babel-loader + - bufferutil + - canvas + - eslint + - node-notifier + - prettier + - supports-color + - ts-node + - typescript + - utf-8-validate + - webpack + dev: true + + /@nrwl/cypress/13.8.3_da26b4dd7b815fa7d469bb9eff9a2d98: + resolution: {integrity: sha512-dNz15s0vGJZfYBe9I8pqvpcxPDhMBrER4QEjfB2U2iecNA8/mqYSuh7Xdf/B0m2n3XyGnO1dSkClA191euhUlQ==} + peerDependencies: + cypress: '>= 3 < 10' + peerDependenciesMeta: + cypress: + optional: true + dependencies: + '@cypress/webpack-preprocessor': 5.11.1_a30ff5fb365c4033bcdb0d3efc4c23d0 + '@nrwl/devkit': 13.8.3 + '@nrwl/linter': 13.8.3_cf61cd7a017ff3260d3a4a02722a5fd2 + '@nrwl/workspace': 13.8.3_6483ebbabbf01faeed49f09ed04973a1 + chalk: 4.1.0 + cypress: 9.5.1 + enhanced-resolve: 5.9.1 + fork-ts-checker-webpack-plugin: 6.2.10 + rxjs: 6.6.7 + ts-loader: 9.2.7_typescript@4.5.5+webpack@5.69.1 + tsconfig-paths: 3.12.0 + tsconfig-paths-webpack-plugin: 3.5.2 + tslib: 2.3.1 + webpack-node-externals: 3.0.0 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - babel-loader + - bufferutil + - canvas + - eslint + - node-notifier + - prettier + - supports-color + - ts-node + - typescript + - utf-8-validate + - webpack + + /@nrwl/devkit/13.8.3: + resolution: {integrity: sha512-XPmG9mSvPsJnqJ1mQ6ufnoh0Ow2p8SM1U9V2gHBo3y5mBI+VVBSFrLuDBYbMAPFtHN7nt9ANjqtxD1+G+DKWtw==} + dependencies: + '@nrwl/tao': 13.8.3 + ejs: 3.1.6 + ignore: 5.2.0 + rxjs: 6.6.7 + semver: 7.3.4 + tslib: 2.3.1 + + /@nrwl/eslint-plugin-nx/13.8.3_830aac973cd7f79836871ffcdef90c4e: + resolution: {integrity: sha512-fiDGULPfFYFkjIORBCFTkzpUQNlW48/32C3xWVbZlmmnO1KJ5ql3QyQSaDpaentE5nASM8TbgXeVMRqhYkZbOw==} + peerDependencies: + '@typescript-eslint/parser': ~5.10.0 + eslint-config-prettier: ^8.1.0 + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + '@nrwl/devkit': 13.8.3 + '@nrwl/workspace': 13.8.3_dd26a5c7f44cc79875cab41b61b7f609 + '@swc-node/register': 1.4.2 + '@typescript-eslint/experimental-utils': 5.10.2_eslint@8.10.0+typescript@4.5.5 + '@typescript-eslint/parser': 5.10.2_eslint@8.10.0+typescript@4.5.5 + chalk: 4.1.0 + confusing-browser-globals: 1.0.11 + eslint-config-prettier: 8.4.0_eslint@8.10.0 + tsconfig-paths: 3.12.0 + optionalDependencies: + '@swc/core-linux-arm64-gnu': 1.2.147 + '@swc/core-linux-arm64-musl': 1.2.147 + '@swc/core-linux-x64-gnu': 1.2.147 + '@swc/core-linux-x64-musl': 1.2.147 + transitivePeerDependencies: + - bufferutil + - canvas + - eslint + - node-notifier + - prettier + - supports-color + - ts-node + - typescript + - utf-8-validate + dev: true + + /@nrwl/jest/13.8.3: + resolution: {integrity: sha512-9w+eRoRvYF6+Jz6IetnVeLb/NV62KQHC6ipvMik8nLeRp7DS34KDbCHys2MlZOVKk/I6vrbmLEDkrvVP8XIFsg==} + dependencies: + '@jest/reporters': 27.2.2 + '@jest/test-result': 27.2.2 + '@nrwl/devkit': 13.8.3 + chalk: 4.1.0 + identity-obj-proxy: 3.0.0 + jest-config: 27.2.2 + jest-resolve: 27.2.2 + jest-util: 27.2.0 + resolve.exports: 1.1.0 + rxjs: 6.5.5 + tslib: 2.3.1 + transitivePeerDependencies: + - bufferutil + - canvas + - node-notifier + - supports-color + - ts-node + - utf-8-validate + dev: true + + /@nrwl/jest/13.8.3_ts-node@9.1.1: + resolution: {integrity: sha512-9w+eRoRvYF6+Jz6IetnVeLb/NV62KQHC6ipvMik8nLeRp7DS34KDbCHys2MlZOVKk/I6vrbmLEDkrvVP8XIFsg==} + dependencies: + '@jest/reporters': 27.2.2 + '@jest/test-result': 27.2.2 + '@nrwl/devkit': 13.8.3 + chalk: 4.1.0 + identity-obj-proxy: 3.0.0 + jest-config: 27.2.2_ts-node@9.1.1 + jest-resolve: 27.2.2 + jest-util: 27.2.0 + resolve.exports: 1.1.0 + rxjs: 6.5.5 + tslib: 2.3.1 + transitivePeerDependencies: + - bufferutil + - canvas + - node-notifier + - supports-color + - ts-node + - utf-8-validate + + /@nrwl/js/13.8.3_6483ebbabbf01faeed49f09ed04973a1: + resolution: {integrity: sha512-fHwwZa6ZZFMsH+VHFNgXop0L9UQ8CKjeaQsdXYmG1Dxh/90zQ0f3nzNFDTrsQDhJPWu45VfiAKaD1AIpRb+Jcg==} + dependencies: + '@nrwl/devkit': 13.8.3 + '@nrwl/jest': 13.8.3_ts-node@9.1.1 + '@nrwl/linter': 13.8.3_cf61cd7a017ff3260d3a4a02722a5fd2 + '@nrwl/workspace': 13.8.3_6483ebbabbf01faeed49f09ed04973a1 + '@parcel/watcher': 2.0.4 + chalk: 4.1.0 + fast-glob: 3.2.11 + fs-extra: 9.1.0 + ignore: 5.2.0 + js-tokens: 4.0.0 + minimatch: 3.0.4 + source-map-support: 0.5.19 + tree-kill: 1.2.2 + transitivePeerDependencies: + - bufferutil + - canvas + - eslint + - node-notifier + - prettier + - supports-color + - ts-node + - typescript + - utf-8-validate + + /@nrwl/js/13.8.3_dd26a5c7f44cc79875cab41b61b7f609: + resolution: {integrity: sha512-fHwwZa6ZZFMsH+VHFNgXop0L9UQ8CKjeaQsdXYmG1Dxh/90zQ0f3nzNFDTrsQDhJPWu45VfiAKaD1AIpRb+Jcg==} + dependencies: + '@nrwl/devkit': 13.8.3 + '@nrwl/jest': 13.8.3 + '@nrwl/linter': 13.8.3_eslint@8.10.0+typescript@4.5.5 + '@nrwl/workspace': 13.8.3_dd26a5c7f44cc79875cab41b61b7f609 + '@parcel/watcher': 2.0.4 + chalk: 4.1.0 + fast-glob: 3.2.11 + fs-extra: 9.1.0 + ignore: 5.2.0 + js-tokens: 4.0.0 + minimatch: 3.0.4 + source-map-support: 0.5.19 + tree-kill: 1.2.2 + transitivePeerDependencies: + - bufferutil + - canvas + - eslint + - node-notifier + - prettier + - supports-color + - ts-node + - typescript + - utf-8-validate + dev: true + + /@nrwl/linter/13.8.3_cf61cd7a017ff3260d3a4a02722a5fd2: + resolution: {integrity: sha512-1C60ic0VwHrTPEMbUkDmu5e5hHRL6/XORA6hKiKDAhSYczPX9qNdTHuCaS0paSHRfc0YT4s20/jC/gtqy+UbEA==} + peerDependencies: + eslint: ^8.0.0 + peerDependenciesMeta: + eslint: + optional: true + dependencies: + '@nrwl/devkit': 13.8.3 + '@nrwl/jest': 13.8.3_ts-node@9.1.1 + '@phenomnomnominal/tsquery': 4.1.1_typescript@4.5.5 + eslint: 8.10.0 + tmp: 0.2.1 + tslib: 2.3.1 + transitivePeerDependencies: + - bufferutil + - canvas + - node-notifier + - supports-color + - ts-node + - typescript + - utf-8-validate + + /@nrwl/linter/13.8.3_eslint@8.10.0+typescript@4.5.5: + resolution: {integrity: sha512-1C60ic0VwHrTPEMbUkDmu5e5hHRL6/XORA6hKiKDAhSYczPX9qNdTHuCaS0paSHRfc0YT4s20/jC/gtqy+UbEA==} + peerDependencies: + eslint: ^8.0.0 + peerDependenciesMeta: + eslint: + optional: true + dependencies: + '@nrwl/devkit': 13.8.3 + '@nrwl/jest': 13.8.3 + '@phenomnomnominal/tsquery': 4.1.1_typescript@4.5.5 + eslint: 8.10.0 + tmp: 0.2.1 + tslib: 2.3.1 + transitivePeerDependencies: + - bufferutil + - canvas + - node-notifier + - supports-color + - ts-node + - typescript + - utf-8-validate + dev: true + + /@nrwl/nest/13.8.3_dd26a5c7f44cc79875cab41b61b7f609: + resolution: {integrity: sha512-aqeWNitSIekjgyprYHv+CWv9A4bqmaeKZKJ/a8eDbvlzdAc9xzMI150ILYhuywfyUAl4dOVH+X9MEhUbYcCMEg==} + dependencies: + '@nestjs/schematics': 8.0.7_typescript@4.5.5 + '@nrwl/devkit': 13.8.3 + '@nrwl/jest': 13.8.3 + '@nrwl/linter': 13.8.3_eslint@8.10.0+typescript@4.5.5 + '@nrwl/node': 13.8.3_dd26a5c7f44cc79875cab41b61b7f609 + transitivePeerDependencies: + - '@swc/core' + - bufferutil + - canvas + - chokidar + - esbuild + - eslint + - node-notifier + - prettier + - supports-color + - ts-node + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + dev: true + + /@nrwl/next/13.8.3_4d9e8dcc474fdc8626effc4c33c30895: + resolution: {integrity: sha512-t2cqHHJ1/dYshtrqy5Ti5pPD7MCc25gQ6QSVIeBHJZwcnrXnef503jvZaEYW4Rv8AtdCLau7eVP4UreG402Idw==} + peerDependencies: + next: ^12.1.0 + dependencies: + '@babel/plugin-proposal-decorators': 7.17.2_@babel+core@7.17.5 + '@nrwl/cypress': 13.8.3_da26b4dd7b815fa7d469bb9eff9a2d98 + '@nrwl/devkit': 13.8.3 + '@nrwl/jest': 13.8.3_ts-node@9.1.1 + '@nrwl/linter': 13.8.3_cf61cd7a017ff3260d3a4a02722a5fd2 + '@nrwl/react': 13.8.3_60766f2d381da41b5bffcae680adbe8f + '@nrwl/web': 13.8.3_1f607a691b0adf275d8775b9f637bb54 + '@nrwl/workspace': 13.8.3_6483ebbabbf01faeed49f09ed04973a1 + '@svgr/webpack': 6.2.1 + chalk: 4.1.0 + eslint-config-next: 12.1.0_4c2038871e8233f2b143838d68f90b16 + fs-extra: 9.1.0 + next: 12.1.0_b8b2418670651b634ff05a91b7cd94fe + ts-node: 9.1.1_typescript@4.5.5 + tsconfig-paths: 3.12.0 + url-loader: 4.1.1_webpack@5.69.1 + webpack-merge: 5.8.0 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - '@parcel/css' + - '@swc/core' + - '@types/babel__core' + - '@types/node' + - '@types/webpack' + - babel-loader + - bufferutil + - canvas + - clean-css + - csso + - cypress + - debug + - esbuild + - eslint + - fibers + - file-loader + - html-webpack-plugin + - node-notifier + - node-sass + - prettier + - sass-embedded + - sockjs-client + - supports-color + - type-fest + - typescript + - uglify-js + - utf-8-validate + - webpack + - webpack-cli + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: false + + /@nrwl/node/13.8.3_dd26a5c7f44cc79875cab41b61b7f609: + resolution: {integrity: sha512-tNf0+FcuXyttBwK47VDAn4NQCrLFAtL+f2jq0k6let1ve+Jq7VgWRGIZMpupMIaeJ/0HqWKuytGyFPzOIaCC6w==} + dependencies: + '@nrwl/devkit': 13.8.3 + '@nrwl/jest': 13.8.3_ts-node@9.1.1 + '@nrwl/linter': 13.8.3_cf61cd7a017ff3260d3a4a02722a5fd2 + '@nrwl/workspace': 13.8.3_6483ebbabbf01faeed49f09ed04973a1 + chalk: 4.1.0 + copy-webpack-plugin: 9.1.0_webpack@5.69.1 + enhanced-resolve: 5.9.1 + fork-ts-checker-webpack-plugin: 6.2.10 + fs-extra: 9.1.0 + glob: 7.1.4 + license-webpack-plugin: 4.0.0_webpack@5.69.1 + rxjs: 6.5.5 + rxjs-for-await: 0.0.2_rxjs@6.5.5 + source-map-support: 0.5.19 + terser-webpack-plugin: 5.3.1_webpack@5.69.1 + tree-kill: 1.2.2 + ts-loader: 9.2.7_typescript@4.5.5+webpack@5.69.1 + ts-node: 9.1.1_typescript@4.5.5 + tsconfig-paths: 3.12.0 + tsconfig-paths-webpack-plugin: 3.5.2 + tslib: 2.3.1 + webpack: 5.69.1 + webpack-merge: 5.8.0 + webpack-node-externals: 3.0.0 + transitivePeerDependencies: + - '@swc/core' + - bufferutil + - canvas + - esbuild + - eslint + - node-notifier + - prettier + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + dev: true + + /@nrwl/nx-cloud/13.1.6: + resolution: {integrity: sha512-p/Iybpvixywm2iSFb6tcNde8BAIYFbzowhsNwDOuEVy7s9y9v/bEvCdT14VF6SxWrcGylyXo8A98Yyg0hsr0zQ==} + hasBin: true + dependencies: + axios: 0.21.4 + chalk: 4.1.0 + node-machine-id: 1.1.12 + rxjs: 6.5.5 + strip-json-comments: 3.1.1 + tar: 6.1.11 + transitivePeerDependencies: + - debug + dev: true + + /@nrwl/react/13.8.3_60766f2d381da41b5bffcae680adbe8f: + resolution: {integrity: sha512-KM0aaqcgiJdwpzIL2S069m2OoRfT4+ODA7qEXMArENgtghfH+tJrkwaBsIyAmZRkp7P9s/8SMVmwRMc6A3lljw==} + dependencies: + '@babel/core': 7.17.5 + '@babel/preset-react': 7.16.7_@babel+core@7.17.5 + '@nrwl/cypress': 13.8.3_da26b4dd7b815fa7d469bb9eff9a2d98 + '@nrwl/devkit': 13.8.3 + '@nrwl/jest': 13.8.3_ts-node@9.1.1 + '@nrwl/js': 13.8.3_6483ebbabbf01faeed49f09ed04973a1 + '@nrwl/linter': 13.8.3_cf61cd7a017ff3260d3a4a02722a5fd2 + '@nrwl/storybook': 13.8.3_da26b4dd7b815fa7d469bb9eff9a2d98 + '@nrwl/web': 13.8.3_1f607a691b0adf275d8775b9f637bb54 + '@nrwl/workspace': 13.8.3_6483ebbabbf01faeed49f09ed04973a1 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.4_cf5ddbf54e6d4e29f22f092083b50cac + '@storybook/node-logger': 6.1.20 + '@svgr/webpack': 6.2.1 + chalk: 4.1.0 + eslint-plugin-import: 2.25.4_eslint@8.10.0 + eslint-plugin-jsx-a11y: 6.5.1_eslint@8.10.0 + eslint-plugin-react: 7.29.2_eslint@8.10.0 + eslint-plugin-react-hooks: 4.3.0_eslint@8.10.0 + react-refresh: 0.10.0 + semver: 7.3.4 + url-loader: 4.1.1_webpack@5.69.1 + webpack: 5.69.1 + webpack-merge: 5.8.0 + transitivePeerDependencies: + - '@babel/preset-env' + - '@parcel/css' + - '@swc/core' + - '@types/babel__core' + - '@types/node' + - '@types/webpack' + - babel-loader + - bufferutil + - canvas + - clean-css + - csso + - cypress + - debug + - esbuild + - eslint + - fibers + - file-loader + - html-webpack-plugin + - node-notifier + - node-sass + - prettier + - sass-embedded + - sockjs-client + - supports-color + - ts-node + - type-fest + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: false + + /@nrwl/react/13.8.3_e19de17ca33262dc923842ef0b997165: + resolution: {integrity: sha512-KM0aaqcgiJdwpzIL2S069m2OoRfT4+ODA7qEXMArENgtghfH+tJrkwaBsIyAmZRkp7P9s/8SMVmwRMc6A3lljw==} + dependencies: + '@babel/core': 7.17.5 + '@babel/preset-react': 7.16.7_@babel+core@7.17.5 + '@nrwl/cypress': 13.8.3_24000b73eec5d29b6bb8cada87d1d304 + '@nrwl/devkit': 13.8.3 + '@nrwl/jest': 13.8.3 + '@nrwl/js': 13.8.3_dd26a5c7f44cc79875cab41b61b7f609 + '@nrwl/linter': 13.8.3_eslint@8.10.0+typescript@4.5.5 + '@nrwl/storybook': 13.8.3_24000b73eec5d29b6bb8cada87d1d304 + '@nrwl/web': 13.8.3_1f607a691b0adf275d8775b9f637bb54 + '@nrwl/workspace': 13.8.3_dd26a5c7f44cc79875cab41b61b7f609 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.4_cf5ddbf54e6d4e29f22f092083b50cac + '@storybook/node-logger': 6.1.20 + '@svgr/webpack': 6.2.1 + chalk: 4.1.0 + eslint-plugin-import: 2.25.4_eslint@8.10.0 + eslint-plugin-jsx-a11y: 6.5.1_eslint@8.10.0 + eslint-plugin-react: 7.29.2_eslint@8.10.0 + eslint-plugin-react-hooks: 4.3.0_eslint@8.10.0 + react-refresh: 0.10.0 + semver: 7.3.4 + url-loader: 4.1.1_webpack@5.69.1 + webpack: 5.69.1 + webpack-merge: 5.8.0 + transitivePeerDependencies: + - '@babel/preset-env' + - '@parcel/css' + - '@swc/core' + - '@types/babel__core' + - '@types/node' + - '@types/webpack' + - babel-loader + - bufferutil + - canvas + - clean-css + - csso + - cypress + - debug + - esbuild + - eslint + - fibers + - file-loader + - html-webpack-plugin + - node-notifier + - node-sass + - prettier + - sass-embedded + - sockjs-client + - supports-color + - ts-node + - type-fest + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + + /@nrwl/storybook/13.8.3_24000b73eec5d29b6bb8cada87d1d304: + resolution: {integrity: sha512-SO4FYNagEI7SZxVepvQ7T5lBQeGsQDWkn9TikovgZQzK6Yxtab+fDQho4I5C5rD9jaWiy1PiiKsN+siqFrhlvA==} + dependencies: + '@nrwl/cypress': 13.8.3_24000b73eec5d29b6bb8cada87d1d304 + '@nrwl/devkit': 13.8.3 + '@nrwl/linter': 13.8.3_eslint@8.10.0+typescript@4.5.5 + '@nrwl/workspace': 13.8.3_dd26a5c7f44cc79875cab41b61b7f609 + core-js: 3.21.1 + semver: 7.3.4 + ts-loader: 9.2.7_typescript@4.5.5+webpack@5.69.1 + tsconfig-paths-webpack-plugin: 3.5.2 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - babel-loader + - bufferutil + - canvas + - cypress + - eslint + - node-notifier + - prettier + - supports-color + - ts-node + - typescript + - utf-8-validate + - webpack + dev: true + + /@nrwl/storybook/13.8.3_da26b4dd7b815fa7d469bb9eff9a2d98: + resolution: {integrity: sha512-SO4FYNagEI7SZxVepvQ7T5lBQeGsQDWkn9TikovgZQzK6Yxtab+fDQho4I5C5rD9jaWiy1PiiKsN+siqFrhlvA==} + dependencies: + '@nrwl/cypress': 13.8.3_da26b4dd7b815fa7d469bb9eff9a2d98 + '@nrwl/devkit': 13.8.3 + '@nrwl/linter': 13.8.3_cf61cd7a017ff3260d3a4a02722a5fd2 + '@nrwl/workspace': 13.8.3_6483ebbabbf01faeed49f09ed04973a1 + core-js: 3.21.1 + semver: 7.3.4 + ts-loader: 9.2.7_typescript@4.5.5+webpack@5.69.1 + tsconfig-paths-webpack-plugin: 3.5.2 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - babel-loader + - bufferutil + - canvas + - cypress + - eslint + - node-notifier + - prettier + - supports-color + - ts-node + - typescript + - utf-8-validate + - webpack + dev: false + + /@nrwl/tao/13.8.3: + resolution: {integrity: sha512-zLM2uP398iLkpuTODfAaA1K7NeTGLrkVCdE7GkasrIg9dzd82Fx6k7kZnGhfVAVgfZpbXo8twKg0vdhxlJNWyA==} + hasBin: true + dependencies: + chalk: 4.1.0 + enquirer: 2.3.6 + fast-glob: 3.2.7 + fs-extra: 9.1.0 + ignore: 5.2.0 + jsonc-parser: 3.0.0 + nx: 13.8.3 + rxjs: 6.5.5 + rxjs-for-await: 0.0.2_rxjs@6.5.5 + semver: 7.3.4 + tmp: 0.2.1 + tslib: 2.3.1 + yargs-parser: 20.0.0 + + /@nrwl/web/13.8.3_1f607a691b0adf275d8775b9f637bb54: + resolution: {integrity: sha512-YaIN4giAuYnyMQ16yHmCfXKIkG/aE315ze4YGjgOfSsAuNRAFY2yG0mkWJuJF5cDuJTSP9zoxumf/A4y40/C8Q==} + dependencies: + '@babel/core': 7.17.5 + '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-proposal-decorators': 7.17.2_@babel+core@7.17.5 + '@babel/plugin-transform-regenerator': 7.16.7_@babel+core@7.17.5 + '@babel/plugin-transform-runtime': 7.17.0_@babel+core@7.17.5 + '@babel/preset-env': 7.16.11_@babel+core@7.17.5 + '@babel/preset-typescript': 7.16.7_@babel+core@7.17.5 + '@babel/runtime': 7.17.2 + '@nrwl/cypress': 13.8.3_da26b4dd7b815fa7d469bb9eff9a2d98 + '@nrwl/devkit': 13.8.3 + '@nrwl/jest': 13.8.3_ts-node@9.1.1 + '@nrwl/js': 13.8.3_6483ebbabbf01faeed49f09ed04973a1 + '@nrwl/linter': 13.8.3_cf61cd7a017ff3260d3a4a02722a5fd2 + '@nrwl/workspace': 13.8.3_6483ebbabbf01faeed49f09ed04973a1 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.4_a75fef66002f57592d74eaa39462898b + '@rollup/plugin-babel': 5.3.1_@babel+core@7.17.5+rollup@2.68.0 + '@rollup/plugin-commonjs': 20.0.0_rollup@2.68.0 + '@rollup/plugin-image': 2.1.1_rollup@2.68.0 + '@rollup/plugin-json': 4.1.0_rollup@2.68.0 + '@rollup/plugin-node-resolve': 13.1.3_rollup@2.68.0 + autoprefixer: 10.4.2_postcss@8.4.7 + babel-loader: 8.2.3_9351ded4f79a023849d74b5df047d562 + babel-plugin-const-enum: 1.2.0_@babel+core@7.17.5 + babel-plugin-macros: 2.8.0 + babel-plugin-transform-async-to-promises: 0.8.18 + babel-plugin-transform-typescript-metadata: 0.3.2 + browserslist: 4.19.3 + bytes: 3.1.2 + caniuse-lite: 1.0.30001312 + chalk: 4.1.0 + chokidar: 3.5.3 + copy-webpack-plugin: 9.1.0_webpack@5.69.1 + core-js: 3.21.1 + css-loader: 6.6.0_webpack@5.69.1 + css-minimizer-webpack-plugin: 3.4.1_webpack@5.69.1 + enhanced-resolve: 5.9.1 + file-loader: 6.2.0_webpack@5.69.1 + fork-ts-checker-webpack-plugin: 6.2.10 + fs-extra: 9.1.0 + http-server: 14.1.0 + identity-obj-proxy: 3.0.0 + ignore: 5.2.0 + less: 3.12.2 + less-loader: 10.2.0_less@3.12.2+webpack@5.69.1 + license-webpack-plugin: 4.0.0_webpack@5.69.1 + loader-utils: 1.2.3 + mini-css-extract-plugin: 2.4.7_webpack@5.69.1 + parse5: 4.0.0 + parse5-html-rewriting-stream: 6.0.1 + postcss: 8.4.7 + postcss-import: 14.0.2_postcss@8.4.7 + postcss-loader: 6.2.1_postcss@8.4.7+webpack@5.69.1 + raw-loader: 4.0.2_webpack@5.69.1 + react-refresh: 0.10.0 + rollup: 2.68.0 + rollup-plugin-copy: 3.4.0 + rollup-plugin-peer-deps-external: 2.2.4_rollup@2.68.0 + rollup-plugin-postcss: 4.0.2_postcss@8.4.7+ts-node@9.1.1 + rollup-plugin-typescript2: 0.31.2_47929e0ef4b9f0e1df65701c23a02bee + rxjs: 6.5.5 + rxjs-for-await: 0.0.2_rxjs@6.5.5 + sass: 1.49.9 + sass-loader: 12.6.0_sass@1.49.9+webpack@5.69.1 + semver: 7.3.4 + source-map: 0.7.3 + source-map-loader: 3.0.1_webpack@5.69.1 + style-loader: 3.3.1_webpack@5.69.1 + stylus: 0.55.0 + stylus-loader: 6.2.0_stylus@0.55.0+webpack@5.69.1 + terser-webpack-plugin: 5.3.1_webpack@5.69.1 + ts-loader: 9.2.7_typescript@4.5.5+webpack@5.69.1 + ts-node: 9.1.1_typescript@4.5.5 + tsconfig-paths: 3.12.0 + tsconfig-paths-webpack-plugin: 3.5.2 + tslib: 2.3.1 + webpack: 5.69.1 + webpack-dev-server: 4.7.4_webpack@5.69.1 + webpack-merge: 5.8.0 + webpack-sources: 3.2.3 + webpack-subresource-integrity: 5.1.0_webpack@5.69.1 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@types/babel__core' + - '@types/node' + - '@types/webpack' + - bufferutil + - canvas + - clean-css + - csso + - cypress + - debug + - esbuild + - eslint + - fibers + - html-webpack-plugin + - node-notifier + - node-sass + - prettier + - sass-embedded + - sockjs-client + - supports-color + - type-fest + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + - webpack-hot-middleware + - webpack-plugin-serve + + /@nrwl/workspace/13.8.3_6483ebbabbf01faeed49f09ed04973a1: + resolution: {integrity: sha512-B2LpbJjxT+WqW0PMxzdy8rmyY0woQytOi4BazPzpcFqaO7zO5/XvLF7txhcvYgRn8n6o0lPsMD0P0Pgeri8oaQ==} + peerDependencies: + prettier: ^2.5.1 + peerDependenciesMeta: + prettier: + optional: true + dependencies: + '@nrwl/cli': 13.8.3 + '@nrwl/devkit': 13.8.3 + '@nrwl/jest': 13.8.3_ts-node@9.1.1 + '@nrwl/linter': 13.8.3_cf61cd7a017ff3260d3a4a02722a5fd2 + '@parcel/watcher': 2.0.4 + chalk: 4.1.0 + chokidar: 3.5.3 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + dotenv: 10.0.0 + enquirer: 2.3.6 + figures: 3.2.0 + flat: 5.0.2 + fs-extra: 9.1.0 + glob: 7.1.4 + ignore: 5.2.0 + minimatch: 3.0.4 + npm-run-path: 4.0.1 + open: 8.4.0 + prettier: 2.5.1 + rxjs: 6.5.5 + semver: 7.3.4 + tmp: 0.2.1 + tslib: 2.3.1 + yargs: 15.4.1 + yargs-parser: 20.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - eslint + - node-notifier + - supports-color + - ts-node + - typescript + - utf-8-validate + + /@nrwl/workspace/13.8.3_dd26a5c7f44cc79875cab41b61b7f609: + resolution: {integrity: sha512-B2LpbJjxT+WqW0PMxzdy8rmyY0woQytOi4BazPzpcFqaO7zO5/XvLF7txhcvYgRn8n6o0lPsMD0P0Pgeri8oaQ==} + peerDependencies: + prettier: ^2.5.1 + peerDependenciesMeta: + prettier: + optional: true + dependencies: + '@nrwl/cli': 13.8.3 + '@nrwl/devkit': 13.8.3 + '@nrwl/jest': 13.8.3 + '@nrwl/linter': 13.8.3_eslint@8.10.0+typescript@4.5.5 + '@parcel/watcher': 2.0.4 + chalk: 4.1.0 + chokidar: 3.5.3 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + dotenv: 10.0.0 + enquirer: 2.3.6 + figures: 3.2.0 + flat: 5.0.2 + fs-extra: 9.1.0 + glob: 7.1.4 + ignore: 5.2.0 + minimatch: 3.0.4 + npm-run-path: 4.0.1 + open: 8.4.0 + prettier: 2.5.1 + rxjs: 6.5.5 + semver: 7.3.4 + tmp: 0.2.1 + tslib: 2.3.1 + yargs: 15.4.1 + yargs-parser: 20.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - eslint + - node-notifier + - supports-color + - ts-node + - typescript + - utf-8-validate + dev: true + + /@nuxtjs/opencollective/0.3.2: + resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + dependencies: + chalk: 4.1.2 + consola: 2.15.3 + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + dev: false + + /@parcel/watcher/2.0.4: + resolution: {integrity: sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==} + engines: {node: '>= 10.0.0'} + requiresBuild: true + dependencies: + node-addon-api: 3.2.1 + node-gyp-build: 4.3.0 + + /@pdf-lib/standard-fonts/1.0.0: + resolution: {integrity: sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==} + dependencies: + pako: 1.0.11 + dev: false + + /@pdf-lib/upng/1.0.1: + resolution: {integrity: sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ==} + dependencies: + pako: 1.0.11 + dev: false + + /@phenomnomnominal/tsquery/4.1.1_typescript@4.5.5: + resolution: {integrity: sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ==} + peerDependencies: + typescript: ^3 || ^4 + dependencies: + esquery: 1.4.0 + typescript: 4.5.5 + + /@pmmmwh/react-refresh-webpack-plugin/0.5.4_a75fef66002f57592d74eaa39462898b: + resolution: {integrity: sha512-zZbZeHQDnoTlt2AF+diQT0wsSXpvWiaIOZwBRdltNFhG1+I3ozyaw7U/nBiUwyJ0D+zwdXp0E3bWOl38Ag2BMw==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <3.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + dependencies: + ansi-html-community: 0.0.8 + common-path-prefix: 3.0.0 + core-js-pure: 3.21.1 + error-stack-parser: 2.0.7 + find-up: 5.0.0 + html-entities: 2.3.2 + loader-utils: 2.0.2 + react-refresh: 0.10.0 + schema-utils: 3.1.1 + source-map: 0.7.3 + webpack: 5.69.1 + webpack-dev-server: 4.7.4_webpack@5.69.1 + + /@pmmmwh/react-refresh-webpack-plugin/0.5.4_cf5ddbf54e6d4e29f22f092083b50cac: + resolution: {integrity: sha512-zZbZeHQDnoTlt2AF+diQT0wsSXpvWiaIOZwBRdltNFhG1+I3ozyaw7U/nBiUwyJ0D+zwdXp0E3bWOl38Ag2BMw==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <3.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + dependencies: + ansi-html-community: 0.0.8 + common-path-prefix: 3.0.0 + core-js-pure: 3.21.1 + error-stack-parser: 2.0.7 + find-up: 5.0.0 + html-entities: 2.3.2 + loader-utils: 2.0.2 + react-refresh: 0.10.0 + schema-utils: 3.1.1 + source-map: 0.7.3 + webpack: 5.69.1 + + /@polka/url/1.0.0-next.21: + resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} + dev: false + + /@popperjs/core/2.11.2: + resolution: {integrity: sha512-92FRmppjjqz29VMJ2dn+xdyXZBrMlE42AV6Kq6BwjWV7CNUW1hs2FtxSNLQE+gJhaZ6AAmYuO9y8dshhcBl7vA==} + dev: false + + /@react-dnd/asap/4.0.0: + resolution: {integrity: sha512-0XhqJSc6pPoNnf8DhdsPHtUhRzZALVzYMTzRwV4VI6DJNJ/5xxfL9OQUwb8IH5/2x7lSf7nAZrnzUD+16VyOVQ==} + dev: false + + /@react-dnd/invariant/3.0.0: + resolution: {integrity: sha512-keberJRIqPX15IK3SWS/iO1t/kGETiL1oczKrDitAaMnQ+kpHf81l3MrRmFjvfqcnApE+izEvwM6GsyoIcpsVA==} + dev: false + + /@react-dnd/shallowequal/3.0.0: + resolution: {integrity: sha512-1ELWQdJB2UrCXTKK5cCD9uGLLIwECLIEdttKA255owdpchtXohIjZBTlFJszwYi2ZKe2Do+QvUzsGyGCMNwbdw==} + dev: false + + /@redux-saga/core/1.1.3: + resolution: {integrity: sha512-8tInBftak8TPzE6X13ABmEtRJGjtK17w7VUs7qV17S8hCO5S3+aUTWZ/DBsBJPdE8Z5jOPwYALyvofgq1Ws+kg==} + dependencies: + '@babel/runtime': 7.17.2 + '@redux-saga/deferred': 1.1.2 + '@redux-saga/delay-p': 1.1.2 + '@redux-saga/is': 1.1.2 + '@redux-saga/symbols': 1.1.2 + '@redux-saga/types': 1.1.0 + redux: 4.1.2 + typescript-tuple: 2.2.1 + dev: false + + /@redux-saga/deferred/1.1.2: + resolution: {integrity: sha512-908rDLHFN2UUzt2jb4uOzj6afpjgJe3MjICaUNO3bvkV/kN/cNeI9PMr8BsFXB/MR8WTAZQq/PlTq8Kww3TBSQ==} + dev: false + + /@redux-saga/delay-p/1.1.2: + resolution: {integrity: sha512-ojc+1IoC6OP65Ts5+ZHbEYdrohmIw1j9P7HS9MOJezqMYtCDgpkoqB5enAAZrNtnbSL6gVCWPHaoaTY5KeO0/g==} + dependencies: + '@redux-saga/symbols': 1.1.2 + dev: false + + /@redux-saga/is/1.1.2: + resolution: {integrity: sha512-OLbunKVsCVNTKEf2cH4TYyNbbPgvmZ52iaxBD4I1fTif4+MTXMa4/Z07L83zW/hTCXwpSZvXogqMqLfex2Tg6w==} + dependencies: + '@redux-saga/symbols': 1.1.2 + '@redux-saga/types': 1.1.0 + dev: false + + /@redux-saga/symbols/1.1.2: + resolution: {integrity: sha512-EfdGnF423glv3uMwLsGAtE6bg+R9MdqlHEzExnfagXPrIiuxwr3bdiAwz3gi+PsrQ3yBlaBpfGLtDG8rf3LgQQ==} + dev: false + + /@redux-saga/types/1.1.0: + resolution: {integrity: sha512-afmTuJrylUU/0OtqzaRkbyYFFNgCF73Bvel/sw90pvGrWIZ+vyoIJqA6eMSoA6+nb443kTmulmBtC9NerXboNg==} + dev: false + + /@reduxjs/toolkit/1.8.0_react-redux@7.2.6+react@17.0.2: + resolution: {integrity: sha512-cdfHWfcvLyhBUDicoFwG1u32JqvwKDxLxDd7zSmSoFw/RhYLOygIRtmaMjPRUUHmVmmAGAvquLLsKKU/677kSQ==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || 18.0.0-beta + react-redux: ^7.2.1 || ^8.0.0-beta + peerDependenciesMeta: + react: + optional: true + react-redux: + optional: true + dependencies: + immer: 9.0.12 + react: 17.0.2 + react-redux: 7.2.6_react-dom@17.0.2+react@17.0.2 + redux: 4.1.2 + redux-thunk: 2.4.1_redux@4.1.2 + reselect: 4.1.5 + dev: false + + /@rollup/plugin-babel/5.3.1_@babel+core@7.17.5+rollup@2.68.0: + resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} + engines: {node: '>= 10.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-module-imports': 7.16.7 + '@rollup/pluginutils': 3.1.0_rollup@2.68.0 + rollup: 2.68.0 + + /@rollup/plugin-commonjs/20.0.0_rollup@2.68.0: + resolution: {integrity: sha512-5K0g5W2Ol8hAcTHqcTBHiA7M58tfmYi1o9KxeJuuRNpGaTa5iLjcyemBitCBcKXaHamOBBEH2dGom6v6Unmqjg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^2.38.3 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.68.0 + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 7.2.0 + is-reference: 1.2.1 + magic-string: 0.25.7 + resolve: 1.22.0 + rollup: 2.68.0 + + /@rollup/plugin-image/2.1.1_rollup@2.68.0: + resolution: {integrity: sha512-AgP4U85zuQJdUopLUCM+hTf45RepgXeTb8EJsleExVy99dIoYpt3ZlDYJdKmAc2KLkNntCDg6BPJvgJU3uGF+g==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.68.0 + mini-svg-data-uri: 1.4.3 + rollup: 2.68.0 + + /@rollup/plugin-json/4.1.0_rollup@2.68.0: + resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.68.0 + rollup: 2.68.0 + + /@rollup/plugin-node-resolve/13.1.3_rollup@2.68.0: + resolution: {integrity: sha512-BdxNk+LtmElRo5d06MGY4zoepyrXX1tkzX2hrnPEZ53k78GuOMWLqmJDGIIOPwVRIFZrLQOo+Yr6KtCuLIA0AQ==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^2.42.0 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.68.0 + '@types/resolve': 1.17.1 + builtin-modules: 3.2.0 + deepmerge: 4.2.2 + is-module: 1.0.0 + resolve: 1.22.0 + rollup: 2.68.0 + + /@rollup/pluginutils/3.1.0_rollup@2.68.0: + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.68.0 + + /@rollup/pluginutils/4.1.2: + resolution: {integrity: sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + + /@rushstack/eslint-patch/1.1.0: + resolution: {integrity: sha512-JLo+Y592QzIE+q7Dl2pMUtt4q8SKYI5jDrZxrozEQxnGVOyYE+GWK9eLkwTaeN9DDctlaRAQ3TBmzZ1qdLE30A==} + + /@sideway/address/4.1.3: + resolution: {integrity: sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ==} + dependencies: + '@hapi/hoek': 9.2.1 + dev: false + + /@sideway/formula/3.0.0: + resolution: {integrity: sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==} + dev: false + + /@sideway/pinpoint/2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + dev: false + + /@sinonjs/commons/1.8.3: + resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} + dependencies: + type-detect: 4.0.8 + + /@sinonjs/fake-timers/8.1.0: + resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} + dependencies: + '@sinonjs/commons': 1.8.3 + + /@sqltools/formatter/1.2.3: + resolution: {integrity: sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg==} + dev: false + + /@storybook/node-logger/6.1.20: + resolution: {integrity: sha512-Z6337htb1mxIccvCx2Ai0v9LPDlBlmXzeWhap3q2Y6hg8g1p4+0W5Y6bG9RmXqJoXLaT1trO8uAXgGO7AN92yg==} + dependencies: + '@types/npmlog': 4.1.4 + chalk: 4.1.2 + core-js: 3.21.1 + npmlog: 4.1.2 + pretty-hrtime: 1.0.3 + + /@svgr/babel-plugin-add-jsx-attribute/6.0.0_@babel+core@7.17.5: + resolution: {integrity: sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + + /@svgr/babel-plugin-remove-jsx-attribute/6.0.0_@babel+core@7.17.5: + resolution: {integrity: sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + + /@svgr/babel-plugin-remove-jsx-empty-expression/6.0.0_@babel+core@7.17.5: + resolution: {integrity: sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + + /@svgr/babel-plugin-replace-jsx-attribute-value/6.0.0_@babel+core@7.17.5: + resolution: {integrity: sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + + /@svgr/babel-plugin-svg-dynamic-title/6.0.0_@babel+core@7.17.5: + resolution: {integrity: sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + + /@svgr/babel-plugin-svg-em-dimensions/6.0.0_@babel+core@7.17.5: + resolution: {integrity: sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + + /@svgr/babel-plugin-transform-react-native-svg/6.0.0_@babel+core@7.17.5: + resolution: {integrity: sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + + /@svgr/babel-plugin-transform-svg-component/6.2.0_@babel+core@7.17.5: + resolution: {integrity: sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + + /@svgr/babel-preset/6.2.0_@babel+core@7.17.5: + resolution: {integrity: sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@svgr/babel-plugin-add-jsx-attribute': 6.0.0_@babel+core@7.17.5 + '@svgr/babel-plugin-remove-jsx-attribute': 6.0.0_@babel+core@7.17.5 + '@svgr/babel-plugin-remove-jsx-empty-expression': 6.0.0_@babel+core@7.17.5 + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.0.0_@babel+core@7.17.5 + '@svgr/babel-plugin-svg-dynamic-title': 6.0.0_@babel+core@7.17.5 + '@svgr/babel-plugin-svg-em-dimensions': 6.0.0_@babel+core@7.17.5 + '@svgr/babel-plugin-transform-react-native-svg': 6.0.0_@babel+core@7.17.5 + '@svgr/babel-plugin-transform-svg-component': 6.2.0_@babel+core@7.17.5 + + /@svgr/core/6.2.1: + resolution: {integrity: sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA==} + engines: {node: '>=10'} + dependencies: + '@svgr/plugin-jsx': 6.2.1_@svgr+core@6.2.1 + camelcase: 6.3.0 + cosmiconfig: 7.0.1 + transitivePeerDependencies: + - supports-color + + /@svgr/hast-util-to-babel-ast/6.2.1: + resolution: {integrity: sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ==} + engines: {node: '>=10'} + dependencies: + '@babel/types': 7.17.0 + entities: 3.0.1 + + /@svgr/plugin-jsx/6.2.1_@svgr+core@6.2.1: + resolution: {integrity: sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': ^6.0.0 + dependencies: + '@babel/core': 7.17.5 + '@svgr/babel-preset': 6.2.0_@babel+core@7.17.5 + '@svgr/core': 6.2.1 + '@svgr/hast-util-to-babel-ast': 6.2.1 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + + /@svgr/plugin-svgo/6.2.0_@svgr+core@6.2.1: + resolution: {integrity: sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': ^6.0.0 + dependencies: + '@svgr/core': 6.2.1 + cosmiconfig: 7.0.1 + deepmerge: 4.2.2 + svgo: 2.8.0 + + /@svgr/webpack/6.2.1: + resolution: {integrity: sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.17.5 + '@babel/plugin-transform-react-constant-elements': 7.17.6_@babel+core@7.17.5 + '@babel/preset-env': 7.16.11_@babel+core@7.17.5 + '@babel/preset-react': 7.16.7_@babel+core@7.17.5 + '@babel/preset-typescript': 7.16.7_@babel+core@7.17.5 + '@svgr/core': 6.2.1 + '@svgr/plugin-jsx': 6.2.1_@svgr+core@6.2.1 + '@svgr/plugin-svgo': 6.2.0_@svgr+core@6.2.1 + transitivePeerDependencies: + - supports-color + + /@swc-node/core/1.8.2: + resolution: {integrity: sha512-IoJ7tGHQ6JOMSmFe4VhP64uLmFKMNasS0QEgUrLFQ0h/dTvpQMynnoGBEJoPL6LfsebZ/q4uKqbpWrth6/yrAA==} + engines: {node: '>= 10'} + dependencies: + '@swc/core': 1.2.147 + dev: true + + /@swc-node/register/1.4.2: + resolution: {integrity: sha512-wLZz0J7BTO//1Eq7e4eBQjKF380Hr2eVemz849msQSKcVM1D7UJUt/dP2TinEVGx++/BXJ/0q37i6n9Iw0EM0w==} + dependencies: + '@swc-node/core': 1.8.2 + '@swc-node/sourcemap-support': 0.1.11 + chalk: 4.1.2 + debug: 4.3.3 + pirates: 4.0.5 + tslib: 2.3.1 + typescript: 4.5.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@swc-node/sourcemap-support/0.1.11: + resolution: {integrity: sha512-b+Mn3oQl+7nUSt7hPzIbY9B30YhcFo1PT4kd9P4QmD6raycmIealOAhAdZID/JevphzsOXHQB4OqJm7Yi5tMcA==} + dependencies: + source-map-support: 0.5.21 + dev: true + + /@swc/core-android-arm-eabi/1.2.147: + resolution: {integrity: sha512-WOCTic99tAlki8WO6FhaP+5uZQyTMoz50utb4+eqvKX3QKoNcVbjXrPr9m3dj+OP2LHXGebo8F4lT5gAhjsIAw==} + engines: {node: '>=10'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@swc/core-android-arm64/1.2.147: + resolution: {integrity: sha512-cqfOZKR31k4HCy2qDUnpE1fZ+d9xqEicxxtpeAik580DBXZ0GAgFqwtjY5FLhTPhiXZBZnoZ61NtwL2jxfDj2w==} + engines: {node: '>=10'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@swc/core-darwin-arm64/1.2.147: + resolution: {integrity: sha512-k4vWk67QVARnk0NaxYAWC01Aa2oYLQegqOGFllnasZcu/T/mq8H6HWHXH9efkyGNQ5S1hkgunLC2ZMcD80Tsng==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@swc/core-darwin-x64/1.2.147: + resolution: {integrity: sha512-Q7mRrgFbH7JXFAvQYqZlG0HIPy5jwAp/VGuPF9P9VPu+gZl+4oSBBCaU2cQW9FdNpdQhPJVBjq3T1Z0qK2x2ww==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@swc/core-freebsd-x64/1.2.147: + resolution: {integrity: sha512-DrCOvyRWNrpwOEqEOALwsiDJcG9Ll+EuwscefJCUPWI1nXMX4JyPVBkKG55LVrerBq/+Gqqpc3pOSjBj5BZJhg==} + engines: {node: '>=10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm-gnueabihf/1.2.147: + resolution: {integrity: sha512-LVM/el40J+iHswbztd/GOcNuUDNwvu0vgAf9K8G9e7zNrMu3Mb0LIF2Ee9/LYk/iRWe+W1x0AsyBWCR0DNcyeA==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-gnu/1.2.147: + resolution: {integrity: sha512-rPiDrgbjx7idgQ64aJ6TE58uahvGE2oGTA7il2RmtD5pxFK0E3QN569eJvmzBagrlU848ntB0LjazAGw3rqP9g==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-musl/1.2.147: + resolution: {integrity: sha512-TilrlBVkRyXrHNlTJ2WPTped+eC9R0RGu6sxzkNzcMY1DDXYDUy+Z+clotFU7t286hQy46gEdKTofsNIRzwt0g==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-gnu/1.2.147: + resolution: {integrity: sha512-Trp8xOc1jSlSryEqOqNhzffZxSLIpSgTCKQZTrpyrelP0egA0hvxZun6Nb7sF97G3GI0MKg6SPP0FZo6gvI3kw==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-musl/1.2.147: + resolution: {integrity: sha512-m1Zz8DIz7somKDoJFjxrCemTlF3OtfNbRH/o9l81CaoRXTT26FmVoIP0k9tVwA6K/qybXey3XH3TX75hjwH+pw==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-arm64-msvc/1.2.147: + resolution: {integrity: sha512-8e2lMEBWsv2+dY0m/9hIOJjc6wf6vl++E4D7SVNYYjZQ+m/npYO5/PSrbnGLONz4Zsz94i/nJIECjaNHIJCiNw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-ia32-msvc/1.2.147: + resolution: {integrity: sha512-YzFhcBhFruZpFVbBXr2K5rglcVe9Lx/BQ9HDes3+NkQAB8K4EeunPtqBN67YgkdDqKTGORqkMWRtWMSTECJZqQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-x64-msvc/1.2.147: + resolution: {integrity: sha512-csRYCQVL0jJtDtJX3K7u0yqFkyq/APQGHPaPMxcTMGQllEY4yX93RyAHDGVVp1PdjQ+GSWnp2i+jcF3DnjYNIQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core/1.2.147: + resolution: {integrity: sha512-FXHgp2/vbiHjOCHLxaxAblLTAw8/sCe2wEfE/BmSAdHapm/ynEAWt6+5tN0t6rVs835lCJswBK1YVsRQvnNxYA==} + engines: {node: '>=10'} + hasBin: true + optionalDependencies: + '@swc/core-android-arm-eabi': 1.2.147 + '@swc/core-android-arm64': 1.2.147 + '@swc/core-darwin-arm64': 1.2.147 + '@swc/core-darwin-x64': 1.2.147 + '@swc/core-freebsd-x64': 1.2.147 + '@swc/core-linux-arm-gnueabihf': 1.2.147 + '@swc/core-linux-arm64-gnu': 1.2.147 + '@swc/core-linux-arm64-musl': 1.2.147 + '@swc/core-linux-x64-gnu': 1.2.147 + '@swc/core-linux-x64-musl': 1.2.147 + '@swc/core-win32-arm64-msvc': 1.2.147 + '@swc/core-win32-ia32-msvc': 1.2.147 + '@swc/core-win32-x64-msvc': 1.2.147 + dev: true + + /@testing-library/dom/8.11.3: + resolution: {integrity: sha512-9LId28I+lx70wUiZjLvi1DB/WT2zGOxUh46glrSNMaWVx849kKAluezVzZrXJfTKKoQTmEOutLes/bHg4Bj3aA==} + engines: {node: '>=12'} + dependencies: + '@babel/code-frame': 7.16.7 + '@babel/runtime': 7.17.2 + '@types/aria-query': 4.2.2 + aria-query: 5.0.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.13 + lz-string: 1.4.4 + pretty-format: 27.5.1 + dev: true + + /@testing-library/react-hooks/7.0.2_fc2bb8a5b006d3f25c5f84ea777e678d: + resolution: {integrity: sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg==} + engines: {node: '>=12'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + react-test-renderer: '>=16.9.0' + peerDependenciesMeta: + react-dom: + optional: true + react-test-renderer: + optional: true + dependencies: + '@babel/runtime': 7.17.2 + '@types/react': 17.0.39 + '@types/react-dom': 17.0.11 + '@types/react-test-renderer': 17.0.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-error-boundary: 3.1.4_react@17.0.2 + react-test-renderer: 17.0.2_react@17.0.2 + dev: true + + /@testing-library/react/12.1.3_react-dom@17.0.2+react@17.0.2: + resolution: {integrity: sha512-oCULRXWRrBtC9m6G/WohPo1GLcLesH7T4fuKzRAKn1CWVu9BzXtqLXDDTA6KhFNNtRwLtfSMr20HFl+Qrdrvmg==} + engines: {node: '>=12'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.17.2 + '@testing-library/dom': 8.11.3 + '@types/react-dom': 17.0.11 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + dev: true + + /@tootallnate/once/1.1.2: + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + + /@trysound/sax/0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + /@types/aria-query/4.2.2: + resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} + dev: true + + /@types/babel__core/7.1.18: + resolution: {integrity: sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==} + dependencies: + '@babel/parser': 7.17.3 + '@babel/types': 7.17.0 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.14.2 + + /@types/babel__generator/7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + dependencies: + '@babel/types': 7.17.0 + + /@types/babel__template/7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + dependencies: + '@babel/parser': 7.17.3 + '@babel/types': 7.17.0 + + /@types/babel__traverse/7.14.2: + resolution: {integrity: sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==} + dependencies: + '@babel/types': 7.17.0 + + /@types/bcrypt/5.0.0: + resolution: {integrity: sha512-agtcFKaruL8TmcvqbndlqHPSJgsolhf/qPWchFlgnW1gECTN/nKbFcoFnvKAQRFfKbh+BO6A3SWdJu9t+xF3Lw==} + dependencies: + '@types/node': 17.0.21 + dev: true + + /@types/body-parser/1.19.2: + resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + dependencies: + '@types/connect': 3.4.35 + '@types/node': 17.0.21 + + /@types/bonjour/3.5.10: + resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==} + dependencies: + '@types/node': 17.0.21 + + /@types/cache-manager/3.4.3: + resolution: {integrity: sha512-71aBXoFYXZW4TnDHHH8gExw2lS28BZaWeKefgsiJI7QYZeJfUEbMKw6CQtzGjlYQcGIWwB76hcCrkVA3YHSvsw==} + dev: true + + /@types/connect-history-api-fallback/1.3.5: + resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==} + dependencies: + '@types/express-serve-static-core': 4.17.28 + '@types/node': 17.0.21 + + /@types/connect/3.4.35: + resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + dependencies: + '@types/node': 17.0.21 + + /@types/cookie-parser/1.4.2: + resolution: {integrity: sha512-uwcY8m6SDQqciHsqcKDGbo10GdasYsPCYkH3hVegj9qAah6pX5HivOnOuI3WYmyQMnOATV39zv/Ybs0bC/6iVg==} + dependencies: + '@types/express': 4.17.13 + dev: true + + /@types/debug/4.1.7: + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + dependencies: + '@types/ms': 0.7.31 + dev: false + + /@types/downloadjs/1.4.3: + resolution: {integrity: sha512-MjJepFle/tLtT2/jmDNth6ZnwWzEhm40L+olE5HKR70ISUCfgT55eqreeHldAzFLY2HDUGsn8zgyto8KygN0CA==} + dev: true + + /@types/eslint-scope/3.7.3: + resolution: {integrity: sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==} + dependencies: + '@types/eslint': 8.4.1 + '@types/estree': 0.0.51 + + /@types/eslint/8.4.1: + resolution: {integrity: sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==} + dependencies: + '@types/estree': 0.0.51 + '@types/json-schema': 7.0.9 + + /@types/estree/0.0.39: + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + + /@types/estree/0.0.51: + resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} + + /@types/express-serve-static-core/4.17.28: + resolution: {integrity: sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==} + dependencies: + '@types/node': 17.0.21 + '@types/qs': 6.9.7 + '@types/range-parser': 1.2.4 + + /@types/express/4.17.13: + resolution: {integrity: sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==} + dependencies: + '@types/body-parser': 1.19.2 + '@types/express-serve-static-core': 4.17.28 + '@types/qs': 6.9.7 + '@types/serve-static': 1.13.10 + + /@types/fs-extra/8.1.2: + resolution: {integrity: sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==} + dependencies: + '@types/node': 17.0.21 + + /@types/glob/7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + dependencies: + '@types/minimatch': 3.0.5 + '@types/node': 17.0.21 + + /@types/graceful-fs/4.1.5: + resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} + dependencies: + '@types/node': 17.0.21 + + /@types/hast/2.3.4: + resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /@types/hoist-non-react-statics/3.3.1: + resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} + dependencies: + '@types/react': 17.0.39 + hoist-non-react-statics: 3.3.2 + dev: false + + /@types/http-proxy/1.17.8: + resolution: {integrity: sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==} + dependencies: + '@types/node': 17.0.21 + + /@types/is-ci/3.0.0: + resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} + dependencies: + ci-info: 3.3.0 + dev: false + + /@types/istanbul-lib-coverage/2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + + /@types/istanbul-lib-report/3.0.0: + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + + /@types/istanbul-reports/3.0.1: + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + dependencies: + '@types/istanbul-lib-report': 3.0.0 + + /@types/jest/27.4.1: + resolution: {integrity: sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==} + dependencies: + jest-matcher-utils: 27.5.1 + pretty-format: 27.5.1 + dev: true + + /@types/json-schema/7.0.9: + resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} + + /@types/json5/0.0.29: + resolution: {integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4=} + + /@types/jsonwebtoken/8.5.4: + resolution: {integrity: sha512-4L8msWK31oXwdtC81RmRBAULd0ShnAHjBuKT9MRQpjP0piNrZdXyTRcKY9/UIfhGeKIT4PvF5amOOUbbT/9Wpg==} + dependencies: + '@types/node': 17.0.21 + dev: false + + /@types/jsonwebtoken/8.5.8: + resolution: {integrity: sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A==} + dependencies: + '@types/node': 17.0.21 + dev: true + + /@types/lodash/4.14.179: + resolution: {integrity: sha512-uwc1x90yCKqGcIOAT6DwOSuxnrAbpkdPsUOZtwrXb4D/6wZs+6qG7QnIawDuZWg0sWpxl+ltIKCaLoMlna678w==} + dev: true + + /@types/mdast/3.0.10: + resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /@types/mdurl/1.0.2: + resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} + dev: false + + /@types/mime/1.3.2: + resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} + + /@types/minimatch/3.0.5: + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + + /@types/minimist/1.2.2: + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + dev: false + + /@types/ms/0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + dev: false + + /@types/multer/1.4.7: + resolution: {integrity: sha512-/SNsDidUFCvqqcWDwxv2feww/yqhNeTRL5CVoL3jU4Goc4kKEL10T7Eye65ZqPNi4HRx8sAEX59pV1aEH7drNA==} + dependencies: + '@types/express': 4.17.13 + dev: true + + /@types/node/12.20.46: + resolution: {integrity: sha512-cPjLXj8d6anFPzFvOPxS3fvly3Shm5nTfl6g8X5smexixbuGUf7hfr21J5tX9JW+UPStp/5P5R8qrKL5IyVJ+A==} + dev: false + + /@types/node/14.18.12: + resolution: {integrity: sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==} + dev: true + + /@types/node/17.0.21: + resolution: {integrity: sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==} + + /@types/nodemailer/6.4.4: + resolution: {integrity: sha512-Ksw4t7iliXeYGvIQcSIgWQ5BLuC/mljIEbjf615svhZL10PE9t+ei8O9gDaD3FPCasUJn9KTLwz2JFJyiiyuqw==} + dependencies: + '@types/node': 17.0.21 + dev: true + + /@types/normalize-package-data/2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + dev: false + + /@types/npmlog/4.1.4: + resolution: {integrity: sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==} + + /@types/parse-json/4.0.0: + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + + /@types/passport-jwt/3.0.6: + resolution: {integrity: sha512-cmAAMIRTaEwpqxlrZyiEY9kdibk94gP5KTF8AT1Ra4rWNZYHNMreqhKUEeC5WJtuN5SJZjPQmV+XO2P5PlnvNQ==} + dependencies: + '@types/express': 4.17.13 + '@types/jsonwebtoken': 8.5.8 + '@types/passport-strategy': 0.2.35 + dev: true + + /@types/passport-local/1.0.34: + resolution: {integrity: sha512-PSc07UdYx+jhadySxxIYWuv6sAnY5e+gesn/5lkPKfBeGuIYn9OPR+AAEDq73VRUh6NBTpvE/iPE62rzZUslog==} + dependencies: + '@types/express': 4.17.13 + '@types/passport': 1.0.7 + '@types/passport-strategy': 0.2.35 + dev: true + + /@types/passport-strategy/0.2.35: + resolution: {integrity: sha512-o5D19Jy2XPFoX2rKApykY15et3Apgax00RRLf0RUotPDUsYrQa7x4howLYr9El2mlUApHmCMv5CZ1IXqKFQ2+g==} + dependencies: + '@types/express': 4.17.13 + '@types/passport': 1.0.7 + dev: true + + /@types/passport/1.0.7: + resolution: {integrity: sha512-JtswU8N3kxBYgo+n9of7C97YQBT+AYPP2aBfNGTzABqPAZnK/WOAaKfh3XesUYMZRrXFuoPc2Hv0/G/nQFveHw==} + dependencies: + '@types/express': 4.17.13 + dev: true + + /@types/prettier/2.4.4: + resolution: {integrity: sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==} + + /@types/prop-types/15.7.4: + resolution: {integrity: sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==} + + /@types/qs/6.9.7: + resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} + + /@types/range-parser/1.2.4: + resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} + + /@types/react-beautiful-dnd/13.1.2: + resolution: {integrity: sha512-+OvPkB8CdE/bGdXKyIhc/Lm2U7UAYCCJgsqmopFmh9gbAudmslkI8eOrPDjg4JhwSE6wytz4a3/wRjKtovHVJg==} + dependencies: + '@types/react': 17.0.39 + dev: true + + /@types/react-dom/17.0.11: + resolution: {integrity: sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==} + dependencies: + '@types/react': 17.0.39 + dev: true + + /@types/react-is/17.0.3: + resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} + dependencies: + '@types/react': 17.0.39 + dev: false + + /@types/react-redux/7.1.23: + resolution: {integrity: sha512-D02o3FPfqQlfu2WeEYwh3x2otYd2Dk1o8wAfsA0B1C2AJEFxE663Ozu7JzuWbznGgW248NaOF6wsqCGNq9d3qw==} + dependencies: + '@types/hoist-non-react-statics': 3.3.1 + '@types/react': 17.0.39 + hoist-non-react-statics: 3.3.2 + redux: 4.1.2 + dev: false + + /@types/react-test-renderer/17.0.1: + resolution: {integrity: sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw==} + dependencies: + '@types/react': 17.0.39 + dev: true + + /@types/react-transition-group/4.4.4: + resolution: {integrity: sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==} + dependencies: + '@types/react': 17.0.39 + dev: false + + /@types/react/17.0.39: + resolution: {integrity: sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug==} + dependencies: + '@types/prop-types': 15.7.4 + '@types/scheduler': 0.16.2 + csstype: 3.0.10 + + /@types/resolve/1.17.1: + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + dependencies: + '@types/node': 17.0.21 + + /@types/retry/0.12.1: + resolution: {integrity: sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==} + + /@types/scheduler/0.16.2: + resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} + + /@types/semver/6.2.3: + resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} + dev: false + + /@types/serve-index/1.9.1: + resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==} + dependencies: + '@types/express': 4.17.13 + + /@types/serve-static/1.13.10: + resolution: {integrity: sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==} + dependencies: + '@types/mime': 1.3.2 + '@types/node': 17.0.21 + + /@types/sinonjs__fake-timers/8.1.1: + resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} + dev: true + + /@types/sizzle/2.3.3: + resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} + dev: true + + /@types/sockjs/0.3.33: + resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} + dependencies: + '@types/node': 17.0.21 + + /@types/stack-utils/2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + + /@types/tailwindcss/3.0.9: + resolution: {integrity: sha512-uZjNKNjlA6cr6py/GWsDjevJb/Bl0fmaMNUdIpNMW3TJGJzxN9O6uFWx97LiSK7ithWNrrDSytq1FdvHpgSvWg==} + dev: true + + /@types/unist/2.0.6: + resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + dev: false + + /@types/uuid/8.3.4: + resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} + dev: true + + /@types/webfontloader/1.6.34: + resolution: {integrity: sha512-yNIPDl3P1yK/ag9C8CdleEhWrtU1myGr3cxb0yEBN/tkCYoGP5PbQa53mQCXcOLFAvBFzJJQfuEahOZ0ARakqw==} + dev: true + + /@types/ws/8.5.2: + resolution: {integrity: sha512-VXI82ykONr5tacHEojnErTQk+KQSoYbW1NB6iz6wUwrNd+BqfkfggQNoNdCqhJSzbNumShPERbM+Pc5zpfhlbw==} + dependencies: + '@types/node': 17.0.21 + + /@types/yargs-parser/20.2.1: + resolution: {integrity: sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==} + + /@types/yargs/16.0.4: + resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} + dependencies: + '@types/yargs-parser': 20.2.1 + + /@types/yauzl/2.9.2: + resolution: {integrity: sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==} + requiresBuild: true + dependencies: + '@types/node': 17.0.21 + dev: true + optional: true + + /@types/zen-observable/0.8.3: + resolution: {integrity: sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==} + dev: false + + /@typescript-eslint/eslint-plugin/5.12.1_226e0cd99c07ccb7b6d7a783a15c23f5: + resolution: {integrity: sha512-M499lqa8rnNK7mUv74lSFFttuUsubIRdAbHcVaP93oFcKkEmHmLqy2n7jM9C8DVmFMYK61ExrZU6dLYhQZmUpw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.10.2_eslint@8.10.0+typescript@4.5.5 + '@typescript-eslint/scope-manager': 5.12.1 + '@typescript-eslint/type-utils': 5.12.1_eslint@8.10.0+typescript@4.5.5 + '@typescript-eslint/utils': 5.12.1_eslint@8.10.0+typescript@4.5.5 + debug: 4.3.3 + eslint: 8.10.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.0 + regexpp: 3.2.0 + semver: 7.3.5 + tsutils: 3.21.0_typescript@4.5.5 + typescript: 4.5.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/experimental-utils/5.10.2_eslint@8.10.0+typescript@4.5.5: + resolution: {integrity: sha512-stRnIlxDduzxtaVLtEohESoXI1k7J6jvJHGyIkOT2pvXbg5whPM6f9tzJ51bJJxaJTdmvwgVFDNCopFRb2F5Gw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.10.2_eslint@8.10.0+typescript@4.5.5 + eslint: 8.10.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser/5.10.2_eslint@8.10.0+typescript@4.5.5: + resolution: {integrity: sha512-JaNYGkaQVhP6HNF+lkdOr2cAs2wdSZBoalE22uYWq8IEv/OVH0RksSGydk+sW8cLoSeYmC+OHvRyv2i4AQ7Czg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.10.2 + '@typescript-eslint/types': 5.10.2 + '@typescript-eslint/typescript-estree': 5.10.2_typescript@4.5.5 + debug: 4.3.3 + eslint: 8.10.0 + typescript: 4.5.5 + transitivePeerDependencies: + - supports-color + + /@typescript-eslint/scope-manager/5.10.2: + resolution: {integrity: sha512-39Tm6f4RoZoVUWBYr3ekS75TYgpr5Y+X0xLZxXqcZNDWZdJdYbKd3q2IR4V9y5NxxiPu/jxJ8XP7EgHiEQtFnw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.10.2 + '@typescript-eslint/visitor-keys': 5.10.2 + + /@typescript-eslint/scope-manager/5.12.1: + resolution: {integrity: sha512-J0Wrh5xS6XNkd4TkOosxdpObzlYfXjAFIm9QxYLCPOcHVv1FyyFCPom66uIh8uBr0sZCrtS+n19tzufhwab8ZQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.12.1 + '@typescript-eslint/visitor-keys': 5.12.1 + dev: true + + /@typescript-eslint/type-utils/5.12.1_eslint@8.10.0+typescript@4.5.5: + resolution: {integrity: sha512-Gh8feEhsNLeCz6aYqynh61Vsdy+tiNNkQtc+bN3IvQvRqHkXGUhYkUi+ePKzP0Mb42se7FDb+y2SypTbpbR/Sg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/utils': 5.12.1_eslint@8.10.0+typescript@4.5.5 + debug: 4.3.3 + eslint: 8.10.0 + tsutils: 3.21.0_typescript@4.5.5 + typescript: 4.5.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types/5.10.2: + resolution: {integrity: sha512-Qfp0qk/5j2Rz3p3/WhWgu4S1JtMcPgFLnmAKAW061uXxKSa7VWKZsDXVaMXh2N60CX9h6YLaBoy9PJAfCOjk3w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /@typescript-eslint/types/5.12.1: + resolution: {integrity: sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree/5.10.2_typescript@4.5.5: + resolution: {integrity: sha512-WHHw6a9vvZls6JkTgGljwCsMkv8wu8XU8WaYKeYhxhWXH/atZeiMW6uDFPLZOvzNOGmuSMvHtZKd6AuC8PrwKQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.10.2 + '@typescript-eslint/visitor-keys': 5.10.2 + debug: 4.3.3 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.5 + tsutils: 3.21.0_typescript@4.5.5 + typescript: 4.5.5 + transitivePeerDependencies: + - supports-color + + /@typescript-eslint/typescript-estree/5.12.1_typescript@4.5.5: + resolution: {integrity: sha512-ahOdkIY9Mgbza7L9sIi205Pe1inCkZWAHE1TV1bpxlU4RZNPtXaDZfiiFWcL9jdxvW1hDYZJXrFm+vlMkXRbBw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.12.1 + '@typescript-eslint/visitor-keys': 5.12.1 + debug: 4.3.3 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.5 + tsutils: 3.21.0_typescript@4.5.5 + typescript: 4.5.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils/5.10.2_eslint@8.10.0+typescript@4.5.5: + resolution: {integrity: sha512-vuJaBeig1NnBRkf7q9tgMLREiYD7zsMrsN1DA3wcoMDvr3BTFiIpKjGiYZoKPllfEwN7spUjv7ZqD+JhbVjEPg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.9 + '@typescript-eslint/scope-manager': 5.10.2 + '@typescript-eslint/types': 5.10.2 + '@typescript-eslint/typescript-estree': 5.10.2_typescript@4.5.5 + eslint: 8.10.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.10.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils/5.12.1_eslint@8.10.0+typescript@4.5.5: + resolution: {integrity: sha512-Qq9FIuU0EVEsi8fS6pG+uurbhNTtoYr4fq8tKjBupsK5Bgbk2I32UGm0Sh+WOyjOPgo/5URbxxSNV6HYsxV4MQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.9 + '@typescript-eslint/scope-manager': 5.12.1 + '@typescript-eslint/types': 5.12.1 + '@typescript-eslint/typescript-estree': 5.12.1_typescript@4.5.5 + eslint: 8.10.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.10.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys/5.10.2: + resolution: {integrity: sha512-zHIhYGGGrFJvvyfwHk5M08C5B5K4bewkm+rrvNTKk1/S15YHR+SA/QUF8ZWscXSfEaB8Nn2puZj+iHcoxVOD/Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.10.2 + eslint-visitor-keys: 3.3.0 + + /@typescript-eslint/visitor-keys/5.12.1: + resolution: {integrity: sha512-l1KSLfupuwrXx6wc0AuOmC7Ko5g14ZOQ86wJJqRbdLbXLK02pK/DPiDDqCc7BqqiiA04/eAA6ayL0bgOrAkH7A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.12.1 + eslint-visitor-keys: 3.3.0 + dev: true + + /@webassemblyjs/ast/1.11.1: + resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + + /@webassemblyjs/floating-point-hex-parser/1.11.1: + resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} + + /@webassemblyjs/helper-api-error/1.11.1: + resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} + + /@webassemblyjs/helper-buffer/1.11.1: + resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} + + /@webassemblyjs/helper-numbers/1.11.1: + resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.1 + '@webassemblyjs/helper-api-error': 1.11.1 + '@xtuc/long': 4.2.2 + + /@webassemblyjs/helper-wasm-bytecode/1.11.1: + resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} + + /@webassemblyjs/helper-wasm-section/1.11.1: + resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + + /@webassemblyjs/ieee754/1.11.1: + resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} + dependencies: + '@xtuc/ieee754': 1.2.0 + + /@webassemblyjs/leb128/1.11.1: + resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} + dependencies: + '@xtuc/long': 4.2.2 + + /@webassemblyjs/utf8/1.11.1: + resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} + + /@webassemblyjs/wasm-edit/1.11.1: + resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/helper-wasm-section': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/wasm-opt': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + '@webassemblyjs/wast-printer': 1.11.1 + + /@webassemblyjs/wasm-gen/1.11.1: + resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/ieee754': 1.11.1 + '@webassemblyjs/leb128': 1.11.1 + '@webassemblyjs/utf8': 1.11.1 + + /@webassemblyjs/wasm-opt/1.11.1: + resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + + /@webassemblyjs/wasm-parser/1.11.1: + resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-api-error': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/ieee754': 1.11.1 + '@webassemblyjs/leb128': 1.11.1 + '@webassemblyjs/utf8': 1.11.1 + + /@webassemblyjs/wast-printer/1.11.1: + resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@xtuc/long': 4.2.2 + + /@xtuc/ieee754/1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + /@xtuc/long/4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + /@yarn-tool/resolve-package/1.0.45_@types+node@17.0.21: + resolution: {integrity: sha512-xnfY8JceApkSTliZtr7X6yl1wZYhGbRp0beBMi1OtmvTVTm/ZSt3881Fw1M3ZwhHqr7OEfl8828LJK2q62BvoQ==} + dependencies: + pkg-dir: 5.0.0 + tslib: 2.3.1 + upath2: 3.1.12_@types+node@17.0.21 + transitivePeerDependencies: + - '@types/node' + + /abab/2.0.5: + resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==} + + /abbrev/1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: false + + /abort-controller/3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 + dev: false + + /accepts/1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.34 + negotiator: 0.6.3 + + /acorn-globals/6.0.0: + resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + + /acorn-import-assertions/1.8.0_acorn@8.7.0: + resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.7.0 + + /acorn-jsx/5.3.2_acorn@8.7.0: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.7.0 + dev: true + + /acorn-node/1.8.2: + resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + xtend: 4.0.2 + dev: false + + /acorn-walk/7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + + /acorn-walk/8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: false + + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + /acorn/8.7.0: + resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} + engines: {node: '>=0.4.0'} + hasBin: true + + /agent-base/6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.3 + transitivePeerDependencies: + - supports-color + + /aggregate-error/3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + /ajv-formats/2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.9.0 + + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + + /ajv-keywords/5.1.0_ajv@8.10.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + dependencies: + ajv: 8.10.0 + fast-deep-equal: 3.1.3 + + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + /ajv/8.10.0: + resolution: {integrity: sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==} + 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.9.0: + resolution: {integrity: sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + /ansi-colors/4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} + + /ansi-escapes/4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + + /ansi-html-community/0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + + /ansi-regex/2.1.1: + resolution: {integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8=} + engines: {node: '>=0.10.0'} + + /ansi-regex/5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-regex/6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles/5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + /any-promise/1.3.0: + resolution: {integrity: sha1-q8av7tzqUugJzcA3au0845Y10X8=} + dev: false + + /anymatch/3.1.2: + resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + /app-root-path/3.0.0: + resolution: {integrity: sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==} + engines: {node: '>= 6.0.0'} + dev: false + + /append-field/1.0.0: + resolution: {integrity: sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=} + dev: false + + /aproba/1.2.0: + resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} + + /aproba/2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + dev: false + + /arch/2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + dev: true + + /are-we-there-yet/1.1.7: + resolution: {integrity: sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==} + dependencies: + delegates: 1.0.0 + readable-stream: 2.3.7 + + /are-we-there-yet/2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.0 + dev: false + + /arg/4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + /arg/5.0.1: + resolution: {integrity: sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==} + dev: false + + /argparse/1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + /aria-query/4.2.2: + resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==} + engines: {node: '>=6.0'} + dependencies: + '@babel/runtime': 7.17.2 + '@babel/runtime-corejs3': 7.17.2 + + /aria-query/5.0.0: + resolution: {integrity: sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==} + engines: {node: '>=6.0'} + dev: true + + /array-flatten/1.1.1: + resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} + + /array-flatten/2.1.2: + resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} + + /array-includes/3.1.4: + resolution: {integrity: sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.19.1 + get-intrinsic: 1.1.1 + is-string: 1.0.7 + + /array-union/2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + /array.prototype.flat/1.2.5: + resolution: {integrity: sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.19.1 + + /array.prototype.flatmap/1.2.5: + resolution: {integrity: sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.19.1 + + /arrify/1.0.1: + resolution: {integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=} + engines: {node: '>=0.10.0'} + dev: false + + /arrify/2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + dev: false + + /asn1/0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /assert-plus/1.0.0: + resolution: {integrity: sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=} + engines: {node: '>=0.8'} + dev: true + + /ast-types-flow/0.0.7: + resolution: {integrity: sha1-9wtzXGvKGlycItmCw+Oef+ujva0=} + + /astral-regex/2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + + /async/0.9.2: + resolution: {integrity: sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=} + + /async/2.6.3: + resolution: {integrity: sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==} + dependencies: + lodash: 4.17.21 + + /async/3.2.0: + resolution: {integrity: sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==} + dev: false + + /async/3.2.3: + resolution: {integrity: sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==} + dev: true + + /asynckit/0.4.0: + resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} + + /at-least-node/1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + /atob/2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + + /autoprefixer/10.4.2_postcss@8.4.7: + resolution: {integrity: sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.19.3 + caniuse-lite: 1.0.30001312 + fraction.js: 4.1.3 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + + /aws-sign2/0.7.0: + resolution: {integrity: sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=} + dev: true + + /aws4/1.11.0: + resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} + dev: true + + /axe-core/4.4.1: + resolution: {integrity: sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==} + engines: {node: '>=4'} + + /axios/0.21.4: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + dependencies: + follow-redirects: 1.14.9 + transitivePeerDependencies: + - debug + dev: true + + /axios/0.26.0: + resolution: {integrity: sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==} + dependencies: + follow-redirects: 1.14.9 + transitivePeerDependencies: + - debug + dev: false + + /axobject-query/2.2.0: + resolution: {integrity: sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==} + + /babel-jest/27.5.1_@babel+core@7.17.5: + resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.17.5 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__core': 7.1.18 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 27.5.1_@babel+core@7.17.5 + chalk: 4.1.2 + graceful-fs: 4.2.9 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + /babel-loader/8.2.3_9351ded4f79a023849d74b5df047d562: + resolution: {integrity: sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.17.5 + find-cache-dir: 3.3.2 + loader-utils: 1.4.0 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 5.69.1 + + /babel-plugin-const-enum/1.2.0_@babel+core@7.17.5: + resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.5 + '@babel/traverse': 7.17.3 + transitivePeerDependencies: + - supports-color + + /babel-plugin-dynamic-import-node/2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} + dependencies: + object.assign: 4.1.2 + + /babel-plugin-istanbul/6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.16.7 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.1.0 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + /babel-plugin-jest-hoist/27.5.1: + resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@babel/template': 7.16.7 + '@babel/types': 7.17.0 + '@types/babel__core': 7.1.18 + '@types/babel__traverse': 7.14.2 + + /babel-plugin-macros/2.8.0: + resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} + dependencies: + '@babel/runtime': 7.17.2 + cosmiconfig: 6.0.0 + resolve: 1.22.0 + + /babel-plugin-polyfill-corejs2/0.3.1_@babel+core@7.17.5: + resolution: {integrity: sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.17.0 + '@babel/core': 7.17.5 + '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.17.5 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + + /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.17.5: + resolution: {integrity: sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.17.5 + core-js-compat: 3.21.1 + transitivePeerDependencies: + - supports-color + + /babel-plugin-polyfill-regenerator/0.3.1_@babel+core@7.17.5: + resolution: {integrity: sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.5 + '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.17.5 + transitivePeerDependencies: + - supports-color + + /babel-plugin-transform-async-to-promises/0.8.18: + resolution: {integrity: sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw==} + + /babel-plugin-transform-typescript-metadata/0.3.2: + resolution: {integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==} + dependencies: + '@babel/helper-plugin-utils': 7.16.7 + + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.17.5: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.17.5 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.5 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.17.5 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.17.5 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.17.5 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.5 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.17.5 + + /babel-preset-jest/27.5.1_@babel+core@7.17.5: + resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.17.5 + babel-plugin-jest-hoist: 27.5.1 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.5 + + /bail/2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + dev: false + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /base64-js/1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + /basic-auth/2.0.1: + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} + engines: {node: '>= 0.8'} + dependencies: + safe-buffer: 5.1.2 + + /batch/0.6.1: + resolution: {integrity: sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=} + + /bcrypt-pbkdf/1.0.2: + resolution: {integrity: sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=} + dependencies: + tweetnacl: 0.14.5 + dev: true + + /bcrypt/5.0.1: + resolution: {integrity: sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==} + engines: {node: '>= 10.0.0'} + requiresBuild: true + dependencies: + '@mapbox/node-pre-gyp': 1.0.8 + node-addon-api: 3.2.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /better-path-resolve/1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + dependencies: + is-windows: 1.0.2 + dev: false + + /big-integer/1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} + dev: false + + /big.js/5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + /bignumber.js/9.0.2: + resolution: {integrity: sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==} + dev: false + + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + /bl/4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /blob-util/2.0.2: + resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} + dev: true + + /bluebird/3.7.1: + resolution: {integrity: sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==} + + /bluebird/3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + /blueimp-md5/2.19.0: + resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} + dev: false + + /body-parser/1.19.2: + resolution: {integrity: sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + content-type: 1.0.4 + debug: 2.6.9 + depd: 1.1.2 + http-errors: 1.8.1 + iconv-lite: 0.4.24 + on-finished: 2.3.0 + qs: 6.9.7 + raw-body: 2.4.3 + type-is: 1.6.18 + + /bonjour/3.5.0: + resolution: {integrity: sha1-jokKGD2O6aI5OzhExpGkK897yfU=} + dependencies: + array-flatten: 2.1.2 + deep-equal: 1.1.1 + dns-equal: 1.0.0 + dns-txt: 2.0.2 + multicast-dns: 6.2.3 + multicast-dns-service-types: 1.1.0 + + /boolbase/1.0.0: + resolution: {integrity: sha1-aN/1++YMUes3cl6p4+0xDcwed24=} + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /breakword/1.0.5: + resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} + dependencies: + wcwidth: 1.0.1 + dev: false + + /broadcast-channel/3.7.0: + resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==} + dependencies: + '@babel/runtime': 7.17.2 + detect-node: 2.1.0 + js-sha3: 0.8.0 + microseconds: 0.2.0 + nano-time: 1.0.0 + oblivious-set: 1.0.0 + rimraf: 3.0.2 + unload: 2.2.0 + dev: false + + /browser-process-hrtime/1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + + /browserslist/4.19.3: + resolution: {integrity: sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001312 + electron-to-chromium: 1.4.75 + escalade: 3.1.1 + node-releases: 2.0.2 + picocolors: 1.0.0 + + /bs-logger/0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + dependencies: + fast-json-stable-stringify: 2.1.0 + dev: true + + /bser/2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + + /buffer-crc32/0.2.13: + resolution: {integrity: sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=} + dev: true + + /buffer-equal-constant-time/1.0.1: + resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=} + dev: false + + /buffer-from/1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + /buffer-indexof/1.1.1: + resolution: {integrity: sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==} + + /buffer-writer/2.0.0: + resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} + engines: {node: '>=4'} + dev: false + + /buffer/5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /buffer/6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + + /builtin-modules/3.2.0: + resolution: {integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==} + engines: {node: '>=6'} + + /busboy/0.2.14: + resolution: {integrity: sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=} + engines: {node: '>=0.8.0'} + dependencies: + dicer: 0.2.5 + readable-stream: 1.1.14 + dev: false + + /bytes/3.0.0: + resolution: {integrity: sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=} + engines: {node: '>= 0.8'} + + /bytes/3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + /cache-manager/3.6.0: + resolution: {integrity: sha512-D4GJZhyYgprYM30ZEPOn9kkdwdPUumX3ujbNbl7FYjcRViRvAgY53k6pO/82wNsm7c4aHVgXfR12/3huA47qnA==} + dependencies: + async: 3.2.0 + lodash: 4.17.21 + lru-cache: 6.0.0 + dev: false + + /cachedir/2.3.0: + resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} + engines: {node: '>=6'} + dev: true + + /call-bind/1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.1.1 + + /callsites/3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + /camelcase-css/2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: false + + /camelcase-keys/6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + dev: false + + /camelcase/5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + /camelcase/6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + /caniuse-api/3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + dependencies: + browserslist: 4.19.3 + caniuse-lite: 1.0.30001312 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + + /caniuse-lite/1.0.30001312: + resolution: {integrity: sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==} + + /caseless/0.12.0: + resolution: {integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=} + dev: true + + /ccount/2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + dev: false + + /chalk/2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk/3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: false + + /chalk/4.1.0: + resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /chalk/4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /char-regex/1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + /character-entities/2.0.1: + resolution: {integrity: sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ==} + dev: false + + /charcodes/0.2.0: + resolution: {integrity: sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==} + engines: {node: '>=6'} + + /chardet/0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: false + + /check-more-types/2.24.0: + resolution: {integrity: sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=} + engines: {node: '>= 0.8.0'} + dev: true + + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.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.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + + /chownr/2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + /chrome-trace-event/1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + + /ci-info/3.3.0: + resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} + + /cjs-module-lexer/1.2.2: + resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} + + /class-transformer/0.5.1: + resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} + dev: false + + /class-validator/0.13.2: + resolution: {integrity: sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==} + dependencies: + libphonenumber-js: 1.9.49 + validator: 13.7.0 + dev: false + + /clean-stack/2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + /cli-cursor/3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + + /cli-highlight/2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + dependencies: + chalk: 4.1.2 + highlight.js: 10.7.3 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.0 + dev: false + + /cli-spinners/2.6.1: + resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} + engines: {node: '>=6'} + + /cli-table3/0.6.1: + resolution: {integrity: sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==} + engines: {node: 10.* || >= 12.*} + dependencies: + string-width: 4.2.3 + optionalDependencies: + colors: 1.4.0 + dev: true + + /cli-truncate/2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: true + + /cliui/6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + /cliui/7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + /clone-deep/4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + + /clone/1.0.4: + resolution: {integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4=} + engines: {node: '>=0.8'} + + /clsx/1.1.1: + resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==} + engines: {node: '>=6'} + dev: false + + /co/4.6.0: + resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + /code-point-at/1.1.0: + resolution: {integrity: sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=} + engines: {node: '>=0.10.0'} + + /collect-v8-coverage/1.0.1: + resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name/1.1.3: + resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /color-support/1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + dev: false + + /colord/2.9.2: + resolution: {integrity: sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==} + + /colorette/1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + + /colorette/2.0.16: + resolution: {integrity: sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==} + + /colors/1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + requiresBuild: true + dev: true + optional: true + + /combined-stream/1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + + /comma-separated-tokens/2.0.2: + resolution: {integrity: sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==} + dev: false + + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + /commander/5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + dev: true + + /commander/6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + dev: false + + /commander/7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + /commander/8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + dev: true + + /common-path-prefix/3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + + /common-tags/1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + dev: true + + /commondir/1.0.1: + resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=} + + /compressible/2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /compression/1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + + /concat-map/0.0.1: + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + + /concat-stream/1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.7 + typedarray: 0.0.6 + dev: false + + /concat-with-sourcemaps/1.1.0: + resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==} + dependencies: + source-map: 0.6.1 + + /confusing-browser-globals/1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + dev: true + + /connect-history-api-fallback/1.6.0: + resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} + engines: {node: '>=0.8'} + + /consola/2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + dev: false + + /console-control-strings/1.1.0: + resolution: {integrity: sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=} + + /content-disposition/0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + + /content-type/1.0.4: + resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} + engines: {node: '>= 0.6'} + + /convert-source-map/1.8.0: + resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} + dependencies: + safe-buffer: 5.1.2 + + /cookie-parser/1.4.6: + resolution: {integrity: sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==} + engines: {node: '>= 0.8.0'} + dependencies: + cookie: 0.4.1 + cookie-signature: 1.0.6 + dev: false + + /cookie-signature/1.0.6: + resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} + + /cookie/0.4.1: + resolution: {integrity: sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==} + engines: {node: '>= 0.6'} + dev: false + + /cookie/0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + + /copy-webpack-plugin/9.1.0_webpack@5.69.1: + resolution: {integrity: sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.1.0 + dependencies: + fast-glob: 3.2.11 + glob-parent: 6.0.2 + globby: 11.1.0 + normalize-path: 3.0.0 + schema-utils: 3.1.1 + serialize-javascript: 6.0.0 + webpack: 5.69.1 + + /core-js-compat/3.21.1: + resolution: {integrity: sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==} + dependencies: + browserslist: 4.19.3 + semver: 7.0.0 + + /core-js-pure/3.21.1: + resolution: {integrity: sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==} + requiresBuild: true + + /core-js/3.21.1: + resolution: {integrity: sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==} + requiresBuild: true + + /core-util-is/1.0.2: + resolution: {integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=} + dev: true + + /core-util-is/1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + /cors/2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: false + + /corser/2.0.1: + resolution: {integrity: sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=} + engines: {node: '>= 0.4.0'} + + /cosmiconfig/6.0.0: + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + /cosmiconfig/7.0.1: + resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + /create-require/1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + /cron/1.7.2: + resolution: {integrity: sha512-+SaJ2OfeRvfQqwXQ2kgr0Y5pzBR/lijf5OpnnaruwWnmI799JfWr2jN2ItOV9s3A/+TFOt6mxvKzQq5F0Jp6VQ==} + dependencies: + moment-timezone: 0.5.34 + dev: false + + /cross-spawn/5.1.0: + resolution: {integrity: sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=} + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + dev: false + + /cross-spawn/7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /css-box-model/1.2.1: + resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==} + dependencies: + tiny-invariant: 1.2.0 + dev: false + + /css-declaration-sorter/6.1.4_postcss@8.4.7: + resolution: {integrity: sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw==} + engines: {node: '>= 10'} + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.4.7 + timsort: 0.3.0 + + /css-loader/6.6.0_webpack@5.69.1: + resolution: {integrity: sha512-FK7H2lisOixPT406s5gZM1S3l8GrfhEBT3ZiL2UX1Ng1XWs0y2GPllz/OTyvbaHe12VgQrIXIzuEGVlbUhodqg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + icss-utils: 5.1.0_postcss@8.4.7 + postcss: 8.4.7 + postcss-modules-extract-imports: 3.0.0_postcss@8.4.7 + postcss-modules-local-by-default: 4.0.0_postcss@8.4.7 + postcss-modules-scope: 3.0.0_postcss@8.4.7 + postcss-modules-values: 4.0.0_postcss@8.4.7 + postcss-value-parser: 4.2.0 + semver: 7.3.5 + webpack: 5.69.1 + + /css-minimizer-webpack-plugin/3.4.1_webpack@5.69.1: + resolution: {integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@parcel/css': '*' + clean-css: '*' + csso: '*' + esbuild: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@parcel/css': + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + dependencies: + cssnano: 5.1.0_postcss@8.4.7 + jest-worker: 27.5.1 + postcss: 8.4.7 + schema-utils: 4.0.0 + serialize-javascript: 6.0.0 + source-map: 0.6.1 + webpack: 5.69.1 + + /css-select/4.2.1: + resolution: {integrity: sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==} + dependencies: + boolbase: 1.0.0 + css-what: 5.1.0 + domhandler: 4.3.0 + domutils: 2.8.0 + nth-check: 2.0.1 + + /css-tree/1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + + /css-what/5.1.0: + resolution: {integrity: sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==} + engines: {node: '>= 6'} + + /css/3.0.0: + resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==} + dependencies: + inherits: 2.0.4 + source-map: 0.6.1 + source-map-resolve: 0.6.0 + + /cssesc/3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + /cssnano-preset-default/5.2.0_postcss@8.4.7: + resolution: {integrity: sha512-3N5Vcptj2pqVKpHVqH6ezOJvqikR2PdLTbTrsrhF61FbLRQuujAqZ2sKN5rvcMsb7hFjrNnjZT8CGEkxoN/Pwg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + css-declaration-sorter: 6.1.4_postcss@8.4.7 + cssnano-utils: 3.1.0_postcss@8.4.7 + postcss: 8.4.7 + postcss-calc: 8.2.4_postcss@8.4.7 + postcss-colormin: 5.3.0_postcss@8.4.7 + postcss-convert-values: 5.1.0_postcss@8.4.7 + postcss-discard-comments: 5.1.0_postcss@8.4.7 + postcss-discard-duplicates: 5.1.0_postcss@8.4.7 + postcss-discard-empty: 5.1.0_postcss@8.4.7 + postcss-discard-overridden: 5.1.0_postcss@8.4.7 + postcss-merge-longhand: 5.1.0_postcss@8.4.7 + postcss-merge-rules: 5.1.0_postcss@8.4.7 + postcss-minify-font-values: 5.1.0_postcss@8.4.7 + postcss-minify-gradients: 5.1.0_postcss@8.4.7 + postcss-minify-params: 5.1.0_postcss@8.4.7 + postcss-minify-selectors: 5.2.0_postcss@8.4.7 + postcss-normalize-charset: 5.1.0_postcss@8.4.7 + postcss-normalize-display-values: 5.1.0_postcss@8.4.7 + postcss-normalize-positions: 5.1.0_postcss@8.4.7 + postcss-normalize-repeat-style: 5.1.0_postcss@8.4.7 + postcss-normalize-string: 5.1.0_postcss@8.4.7 + postcss-normalize-timing-functions: 5.1.0_postcss@8.4.7 + postcss-normalize-unicode: 5.1.0_postcss@8.4.7 + postcss-normalize-url: 5.1.0_postcss@8.4.7 + postcss-normalize-whitespace: 5.1.0_postcss@8.4.7 + postcss-ordered-values: 5.1.0_postcss@8.4.7 + postcss-reduce-initial: 5.1.0_postcss@8.4.7 + postcss-reduce-transforms: 5.1.0_postcss@8.4.7 + postcss-svgo: 5.1.0_postcss@8.4.7 + postcss-unique-selectors: 5.1.0_postcss@8.4.7 + + /cssnano-utils/3.1.0_postcss@8.4.7: + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + + /cssnano/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-wWxave1wMlThGg4ueK98jFKaNqXnQd1nVZpSkQ9XvR+YymlzP1ofWqES1JkHtI250LksP9z5JH+oDcrKDJezAg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.2.0_postcss@8.4.7 + lilconfig: 2.0.4 + postcss: 8.4.7 + yaml: 1.10.2 + + /csso/4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + + /cssom/0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + + /cssom/0.4.4: + resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + + /cssstyle/2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + dependencies: + cssom: 0.3.8 + + /csstype/3.0.10: + resolution: {integrity: sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==} + + /csv-generate/3.4.3: + resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} + dev: false + + /csv-parse/4.16.3: + resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} + dev: false + + /csv-stringify/5.6.5: + resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} + dev: false + + /csv/5.5.3: + resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} + engines: {node: '>= 0.1.90'} + dependencies: + csv-generate: 3.4.3 + csv-parse: 4.16.3 + csv-stringify: 5.6.5 + stream-transform: 2.1.3 + dev: false + + /csvtojson/2.0.10: + resolution: {integrity: sha512-lUWFxGKyhraKCW8Qghz6Z0f2l/PqB1W3AO0HKJzGIQ5JRSlR651ekJDiGJbBT4sRNNv5ddnSGVEnsxP9XRCVpQ==} + engines: {node: '>=4.0.0'} + hasBin: true + dependencies: + bluebird: 3.7.2 + lodash: 4.17.21 + strip-bom: 2.0.0 + dev: false + + /cypress/9.5.1: + resolution: {integrity: sha512-H7lUWB3Svr44gz1rNnj941xmdsCljXoJa2cDneAltjI9leKLMQLm30x6jLlpQ730tiVtIbW5HdUmBzPzwzfUQg==} + engines: {node: '>=12.0.0'} + hasBin: true + requiresBuild: true + dependencies: + '@cypress/request': 2.88.10 + '@cypress/xvfb': 1.2.4 + '@types/node': 14.18.12 + '@types/sinonjs__fake-timers': 8.1.1 + '@types/sizzle': 2.3.3 + arch: 2.2.0 + blob-util: 2.0.2 + bluebird: 3.7.2 + buffer: 5.7.1 + cachedir: 2.3.0 + chalk: 4.1.2 + check-more-types: 2.24.0 + cli-cursor: 3.1.0 + cli-table3: 0.6.1 + commander: 5.1.0 + common-tags: 1.8.2 + dayjs: 1.10.8 + debug: 4.3.3_supports-color@8.1.1 + enquirer: 2.3.6 + eventemitter2: 6.4.5 + execa: 4.1.0 + executable: 4.1.1 + extract-zip: 2.0.1_supports-color@8.1.1 + figures: 3.2.0 + fs-extra: 9.1.0 + getos: 3.2.1 + is-ci: 3.0.1 + is-installed-globally: 0.4.0 + lazy-ass: 1.6.0 + listr2: 3.14.0_enquirer@2.3.6 + lodash: 4.17.21 + log-symbols: 4.1.0 + minimist: 1.2.5 + ospath: 1.2.2 + pretty-bytes: 5.6.0 + proxy-from-env: 1.0.0 + request-progress: 3.0.0 + semver: 7.3.5 + supports-color: 8.1.1 + tmp: 0.2.1 + untildify: 4.0.0 + yauzl: 2.10.0 + dev: true + + /damerau-levenshtein/1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + /dashdash/1.14.1: + resolution: {integrity: sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + dev: true + + /data-urls/2.0.0: + resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} + engines: {node: '>=10'} + dependencies: + abab: 2.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + + /dayjs/1.10.8: + resolution: {integrity: sha512-wbNwDfBHHur9UOzNUjeKUOJ0fCb0a52Wx0xInmQ7Y8FstyajiV1NmK1e00cxsr9YrE9r7yAChE0VvpuY5Rnlow==} + + /debug/2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + dependencies: + ms: 2.0.0 + + /debug/3.1.0: + resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + dependencies: + ms: 2.0.0 + + /debug/3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + dependencies: + ms: 2.1.3 + + /debug/4.3.3: + resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /debug/4.3.3_supports-color@8.1.1: + resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 8.1.1 + dev: true + + /decamelize-keys/1.1.0: + resolution: {integrity: sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=} + engines: {node: '>=0.10.0'} + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + dev: false + + /decamelize/1.2.0: + resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} + engines: {node: '>=0.10.0'} + + /decimal.js/10.3.1: + resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} + + /decode-named-character-reference/1.0.1: + resolution: {integrity: sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==} + dependencies: + character-entities: 2.0.1 + dev: false + + /decode-uri-component/0.2.0: + resolution: {integrity: sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=} + engines: {node: '>=0.10'} + + /dedent/0.7.0: + resolution: {integrity: sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=} + + /deep-equal/1.1.1: + resolution: {integrity: sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==} + dependencies: + is-arguments: 1.1.1 + is-date-object: 1.0.5 + is-regex: 1.1.4 + object-is: 1.1.5 + object-keys: 1.1.1 + regexp.prototype.flags: 1.4.1 + + /deep-is/0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + /deepmerge/4.2.2: + resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + engines: {node: '>=0.10.0'} + + /default-gateway/6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + dependencies: + execa: 5.1.1 + + /defaults/1.0.3: + resolution: {integrity: sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=} + dependencies: + clone: 1.0.4 + + /define-lazy-prop/2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + /define-properties/1.1.3: + resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} + engines: {node: '>= 0.4'} + dependencies: + object-keys: 1.1.1 + + /defined/1.0.0: + resolution: {integrity: sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=} + dev: false + + /del/6.0.0: + resolution: {integrity: sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==} + engines: {node: '>=10'} + dependencies: + globby: 11.1.0 + graceful-fs: 4.2.9 + is-glob: 4.0.3 + is-path-cwd: 2.2.0 + is-path-inside: 3.0.3 + p-map: 4.0.0 + rimraf: 3.0.2 + slash: 3.0.0 + + /delayed-stream/1.0.0: + resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} + engines: {node: '>=0.4.0'} + + /delegates/1.0.0: + resolution: {integrity: sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=} + + /depd/1.1.2: + resolution: {integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=} + engines: {node: '>= 0.6'} + + /dequal/2.0.2: + resolution: {integrity: sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==} + engines: {node: '>=6'} + dev: false + + /destroy/1.0.4: + resolution: {integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=} + + /detect-indent/6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: false + + /detect-libc/1.0.3: + resolution: {integrity: sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=} + engines: {node: '>=0.10'} + hasBin: true + dev: false + + /detect-newline/3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + /detect-node/2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + /detective/5.2.0: + resolution: {integrity: sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==} + engines: {node: '>=0.8.0'} + hasBin: true + dependencies: + acorn-node: 1.8.2 + defined: 1.0.0 + minimist: 1.2.5 + dev: false + + /dicer/0.2.5: + resolution: {integrity: sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=} + engines: {node: '>=0.8.0'} + dependencies: + readable-stream: 1.1.14 + streamsearch: 0.1.2 + dev: false + + /didyoumean/1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: false + + /diff-sequences/27.5.1: + resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + /diff/4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + /diff/5.0.0: + resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + engines: {node: '>=0.3.1'} + dev: false + + /dir-glob/3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + + /dlv/1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: false + + /dnd-core/15.1.1: + resolution: {integrity: sha512-Mtj/Sltcx7stVXzeDg4g7roTe/AmzRuIf/FYOxX6F8gULbY54w066BlErBOzQfn9RIJ3gAYLGX7wvVvoBSq7ig==} + dependencies: + '@react-dnd/asap': 4.0.0 + '@react-dnd/invariant': 3.0.0 + redux: 4.1.2 + dev: false + + /dns-equal/1.0.0: + resolution: {integrity: sha1-s55/HabrCnW6nBcySzR1PEfgZU0=} + + /dns-packet/1.3.4: + resolution: {integrity: sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==} + dependencies: + ip: 1.1.5 + safe-buffer: 5.2.1 + + /dns-txt/2.0.2: + resolution: {integrity: sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=} + dependencies: + buffer-indexof: 1.1.1 + + /doctrine/2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + + /doctrine/3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-accessibility-api/0.5.13: + resolution: {integrity: sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw==} + dev: true + + /dom-helpers/5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dependencies: + '@babel/runtime': 7.17.2 + csstype: 3.0.10 + dev: false + + /dom-serializer/1.3.2: + resolution: {integrity: sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==} + dependencies: + domelementtype: 2.2.0 + domhandler: 4.3.0 + entities: 2.2.0 + + /domelementtype/2.2.0: + resolution: {integrity: sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==} + + /domexception/2.0.1: + resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} + engines: {node: '>=8'} + dependencies: + webidl-conversions: 5.0.0 + + /domhandler/4.3.0: + resolution: {integrity: sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.2.0 + + /domutils/2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.3.2 + domelementtype: 2.2.0 + domhandler: 4.3.0 + + /dotenv-expand/8.0.1: + resolution: {integrity: sha512-j/Ih7bIERDR5PzI89Zu8ayd3tXZ6E3dbY0ljQ9Db0K87qBO8zdLsi2dIvDHMWtjC3Yxb8XixOTHAtia0fDHRpg==} + engines: {node: '>=12'} + dev: false + + /dotenv/10.0.0: + resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} + engines: {node: '>=10'} + + /dotenv/16.0.0: + resolution: {integrity: sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==} + engines: {node: '>=12'} + dev: false + + /dotenv/8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} + dev: false + + /downloadjs/1.4.7: + resolution: {integrity: sha1-9p+W+UDg0FU9rCkROYZaPNAQHjw=} + dev: false + + /duplexer/0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: false + + /ecc-jsbn/0.1.2: + resolution: {integrity: sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=} + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: true + + /ecdsa-sig-formatter/1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /ee-first/1.1.1: + resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} + + /ejs/3.1.6: + resolution: {integrity: sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.8.2 + + /electron-to-chromium/1.4.75: + resolution: {integrity: sha512-LxgUNeu3BVU7sXaKjUDD9xivocQLxFtq6wgERrutdY/yIOps3ODOZExK1jg8DTEg4U8TUCb5MLGeWFOYuxjF3Q==} + + /emittery/0.8.1: + resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} + engines: {node: '>=10'} + + /emoji-regex/8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + /emoji-regex/9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + /emojis-list/2.1.0: + resolution: {integrity: sha1-TapNnbAPmBmIDHn6RXrlsJof04k=} + engines: {node: '>= 0.10'} + + /emojis-list/3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + /encodeurl/1.0.2: + resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=} + engines: {node: '>= 0.8'} + + /end-of-stream/1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: true + + /enhanced-resolve/5.9.1: + resolution: {integrity: sha512-jdyZMwCQ5Oj4c5+BTnkxPgDZO/BJzh/ADDmKebayyzNwjVX1AFCeGkOfxNx0mHi2+8BKC5VxUYiw3TIvoT7vhw==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.9 + tapable: 2.2.1 + + /enquirer/2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.1 + + /entities/2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + /entities/3.0.1: + resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} + engines: {node: '>=0.12'} + + /errno/0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + requiresBuild: true + dependencies: + prr: 1.0.1 + optional: true + + /error-ex/1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + + /error-stack-parser/2.0.7: + resolution: {integrity: sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==} + dependencies: + stackframe: 1.2.1 + + /es-abstract/1.19.1: + resolution: {integrity: sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + get-intrinsic: 1.1.1 + get-symbol-description: 1.0.0 + has: 1.0.3 + has-symbols: 1.0.3 + internal-slot: 1.0.3 + is-callable: 1.2.4 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.1 + is-string: 1.0.7 + is-weakref: 1.0.2 + object-inspect: 1.12.0 + object-keys: 1.1.1 + object.assign: 4.1.2 + string.prototype.trimend: 1.0.4 + string.prototype.trimstart: 1.0.4 + unbox-primitive: 1.0.1 + + /es-module-lexer/0.9.3: + resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} + + /es-to-primitive/1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.4 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + /escape-html/1.0.3: + resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} + + /escape-string-regexp/1.0.5: + resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} + engines: {node: '>=0.8.0'} + + /escape-string-regexp/2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + /escape-string-regexp/4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /escape-string-regexp/5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: false + + /escodegen/2.0.0: + resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + + /eslint-config-next/12.1.0_4c2038871e8233f2b143838d68f90b16: + resolution: {integrity: sha512-tBhuUgoDITcdcM7xFvensi9I5WTI4dnvH4ETGRg1U8ZKpXrZsWQFdOKIDzR3RLP5HR3xXrLviaMM4c3zVoE/pA==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + next: '>=10.2.0' + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@next/eslint-plugin-next': 12.1.0 + '@rushstack/eslint-patch': 1.1.0 + '@typescript-eslint/parser': 5.10.2_eslint@8.10.0+typescript@4.5.5 + eslint: 8.10.0 + eslint-import-resolver-node: 0.3.6 + eslint-import-resolver-typescript: 2.5.0_8b406960a2a06af75ddac353adbd0cfd + eslint-plugin-import: 2.25.4_eslint@8.10.0 + eslint-plugin-jsx-a11y: 6.5.1_eslint@8.10.0 + eslint-plugin-react: 7.29.2_eslint@8.10.0 + eslint-plugin-react-hooks: 4.3.0_eslint@8.10.0 + next: 12.1.0_b8b2418670651b634ff05a91b7cd94fe + typescript: 4.5.5 + transitivePeerDependencies: + - supports-color + + /eslint-config-prettier/8.4.0_eslint@8.10.0: + resolution: {integrity: sha512-CFotdUcMY18nGRo5KGsnNxpznzhkopOcOo0InID+sgQssPrzjvsyKZPvOgymTFeHrFuC3Tzdf2YndhXtULK9Iw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.10.0 + dev: true + + /eslint-import-resolver-node/0.3.6: + resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} + dependencies: + debug: 3.2.7 + resolve: 1.22.0 + + /eslint-import-resolver-typescript/2.5.0_8b406960a2a06af75ddac353adbd0cfd: + resolution: {integrity: sha512-qZ6e5CFr+I7K4VVhQu3M/9xGv9/YmwsEXrsm3nimw8vWaVHRDrQRp26BgCypTxBp3vUp4o5aVEJRiy0F2DFddQ==} + engines: {node: '>=4'} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.3 + eslint: 8.10.0 + eslint-plugin-import: 2.25.4_eslint@8.10.0 + glob: 7.2.0 + is-glob: 4.0.3 + resolve: 1.22.0 + tsconfig-paths: 3.12.0 + transitivePeerDependencies: + - supports-color + + /eslint-module-utils/2.7.3: + resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} + engines: {node: '>=4'} + dependencies: + debug: 3.2.7 + find-up: 2.1.0 + + /eslint-plugin-cypress/2.12.1_eslint@8.10.0: + resolution: {integrity: sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA==} + peerDependencies: + eslint: '>= 3.2.1' + dependencies: + eslint: 8.10.0 + globals: 11.12.0 + dev: true + + /eslint-plugin-import/2.25.4_eslint@8.10.0: + resolution: {integrity: sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + dependencies: + array-includes: 3.1.4 + array.prototype.flat: 1.2.5 + debug: 2.6.9 + doctrine: 2.1.0 + eslint: 8.10.0 + eslint-import-resolver-node: 0.3.6 + eslint-module-utils: 2.7.3 + has: 1.0.3 + is-core-module: 2.8.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.5 + resolve: 1.22.0 + tsconfig-paths: 3.12.0 + + /eslint-plugin-jsx-a11y/6.5.1_eslint@8.10.0: + resolution: {integrity: sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.17.2 + aria-query: 4.2.2 + array-includes: 3.1.4 + ast-types-flow: 0.0.7 + axe-core: 4.4.1 + axobject-query: 2.2.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.10.0 + has: 1.0.3 + jsx-ast-utils: 3.2.1 + language-tags: 1.0.5 + minimatch: 3.1.2 + + /eslint-plugin-react-hooks/4.3.0_eslint@8.10.0: + resolution: {integrity: sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.10.0 + + /eslint-plugin-react/7.29.2_eslint@8.10.0: + resolution: {integrity: sha512-ypEBTKOy5liFQXZWMchJ3LN0JX1uPI6n7MN7OPHKacqXAxq5gYC30TdO7wqGYQyxD1OrzpobdHC3hDmlRWDg9w==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.4 + array.prototype.flatmap: 1.2.5 + doctrine: 2.1.0 + eslint: 8.10.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.2.1 + minimatch: 3.1.2 + object.entries: 1.1.5 + object.fromentries: 2.0.5 + object.hasown: 1.1.0 + object.values: 1.1.5 + prop-types: 15.8.1 + resolve: 2.0.0-next.3 + semver: 6.3.0 + string.prototype.matchall: 4.0.6 + + /eslint-plugin-simple-import-sort/7.0.0_eslint@8.10.0: + resolution: {integrity: sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==} + peerDependencies: + eslint: '>=5.0.0' + dependencies: + eslint: 8.10.0 + dev: true + + /eslint-plugin-unused-imports/2.0.0_20f00f54a34e817a92f71b13f07164a5: + resolution: {integrity: sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + eslint: ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.12.1_226e0cd99c07ccb7b6d7a783a15c23f5 + eslint: 8.10.0 + eslint-rule-composer: 0.3.0 + dev: true + + /eslint-rule-composer/0.3.0: + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} + dev: true + + /eslint-scope/5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + /eslint-scope/7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils/3.0.0_eslint@8.10.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.10.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys/2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys/3.3.0: + resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /eslint/8.10.0: + resolution: {integrity: sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.2.0 + '@humanwhocodes/config-array': 0.9.5 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.3 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.10.0 + eslint-visitor-keys: 3.3.0 + espree: 9.3.1 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 6.0.2 + globals: 13.12.1 + ignore: 5.2.0 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.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.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/9.3.1: + resolution: {integrity: sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.7.0 + acorn-jsx: 5.3.2_acorn@8.7.0 + eslint-visitor-keys: 3.3.0 + dev: true + + /esprima/4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + /esquery/1.4.0: + resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + + /esrecurse/4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + + /estraverse/4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + /estree-walker/0.6.1: + resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + + /estree-walker/1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + /esutils/2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + /etag/1.8.1: + resolution: {integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=} + engines: {node: '>= 0.6'} + + /event-target-shim/5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: false + + /eventemitter2/6.4.5: + resolution: {integrity: sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==} + dev: true + + /eventemitter3/4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + /events/3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + /execa/4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa/5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + /executable/4.1.1: + resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} + engines: {node: '>=4'} + dependencies: + pify: 2.3.0 + dev: true + + /exit/0.1.2: + resolution: {integrity: sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=} + engines: {node: '>= 0.8.0'} + + /expect/27.5.1: + resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + jest-get-type: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + + /express/4.17.3: + resolution: {integrity: sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.19.2 + content-disposition: 0.5.4 + content-type: 1.0.4 + cookie: 0.4.2 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 1.1.2 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.1.2 + fresh: 0.5.2 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.3.0 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.9.7 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.17.2 + serve-static: 1.14.2 + setprototypeof: 1.2.0 + statuses: 1.5.0 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + + /extend/3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + /extendable-error/0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + dev: false + + /external-editor/3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: false + + /extract-zip/2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + dependencies: + debug: 4.3.3 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.9.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extract-zip/2.0.1_supports-color@8.1.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + dependencies: + debug: 4.3.3_supports-color@8.1.1 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.9.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extsprintf/1.3.0: + resolution: {integrity: sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=} + engines: {'0': node >=0.6.0} + dev: true + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-glob/3.2.11: + resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.4 + + /fast-glob/3.2.7: + resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} + engines: {node: '>=8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.4 + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + /fast-levenshtein/2.0.6: + resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} + + /fast-safe-stringify/2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: false + + /fast-text-encoding/1.0.3: + resolution: {integrity: sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==} + dev: false + + /fastq/1.13.0: + resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + dependencies: + reusify: 1.0.4 + + /faye-websocket/0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + dependencies: + websocket-driver: 0.7.4 + + /fb-watchman/2.0.1: + resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==} + dependencies: + bser: 2.1.1 + + /fd-slicer/1.1.0: + resolution: {integrity: sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=} + dependencies: + pend: 1.2.0 + dev: true + + /figures/3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + + /file-entry-cache/6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + + /file-loader/6.2.0_webpack@5.69.1: + resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + loader-utils: 2.0.2 + schema-utils: 3.1.1 + webpack: 5.69.1 + + /filelist/1.0.2: + resolution: {integrity: sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==} + dependencies: + minimatch: 3.1.2 + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /finalhandler/1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + + /find-cache-dir/3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + + /find-root/1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + dev: false + + /find-up/2.1.0: + resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=} + engines: {node: '>=4'} + dependencies: + locate-path: 2.0.0 + + /find-up/4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + /find-up/5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + /find-yarn-workspace-root2/1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + dependencies: + micromatch: 4.0.4 + pkg-dir: 4.2.0 + dev: false + + /flat-cache/3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.5 + rimraf: 3.0.2 + dev: true + + /flat/5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + /flatted/3.2.5: + resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==} + dev: true + + /follow-redirects/1.14.9: + resolution: {integrity: sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + /forever-agent/0.6.1: + resolution: {integrity: sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=} + dev: true + + /fork-ts-checker-webpack-plugin/6.2.10: + resolution: {integrity: sha512-HveFCHWSH2WlYU1tU3PkrupvW8lNFMTfH3Jk0TfC2mtktE9ibHGcifhCsCFvj+kqlDfNIlwmNLiNqR9jnSA7OQ==} + engines: {node: '>=10', yarn: '>=1.0.0'} + dependencies: + '@babel/code-frame': 7.16.7 + '@types/json-schema': 7.0.9 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.2.2 + fs-extra: 9.1.0 + glob: 7.2.0 + memfs: 3.4.1 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.3.5 + tapable: 1.1.3 + + /form-data/2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.34 + dev: true + + /form-data/3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.34 + + /forwarded/0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + /fraction.js/4.1.3: + resolution: {integrity: sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg==} + + /fresh/0.5.2: + resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} + engines: {node: '>= 0.6'} + + /fs-extra/10.0.1: + resolution: {integrity: sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.9 + jsonfile: 6.1.0 + universalify: 2.0.0 + + /fs-extra/7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.9 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: false + + /fs-extra/8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.9 + jsonfile: 4.0.0 + universalify: 0.1.2 + + /fs-extra/9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.9 + jsonfile: 6.1.0 + universalify: 2.0.0 + + /fs-minipass/2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.1.6 + + /fs-monkey/1.0.3: + resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==} + + /fs.realpath/1.0.0: + resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + /functional-red-black-tree/1.0.1: + resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} + dev: true + + /gauge/2.7.4: + resolution: {integrity: sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=} + dependencies: + aproba: 1.2.0 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 1.0.2 + strip-ansi: 3.0.1 + wide-align: 1.1.5 + + /gauge/3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + dev: false + + /gaxios/4.3.2: + resolution: {integrity: sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q==} + engines: {node: '>=10'} + dependencies: + abort-controller: 3.0.0 + extend: 3.0.2 + https-proxy-agent: 5.0.0 + is-stream: 2.0.1 + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /gcp-metadata/4.3.1: + resolution: {integrity: sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==} + engines: {node: '>=10'} + dependencies: + gaxios: 4.3.2 + json-bigint: 1.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /generic-names/4.0.0: + resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} + dependencies: + loader-utils: 3.2.0 + + /gensync/1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + /get-caller-file/2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + /get-intrinsic/1.1.1: + resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + + /get-package-type/0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + /get-stream/5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + dev: true + + /get-stream/6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + /get-symbol-description/1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.1 + + /getos/3.2.1: + resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} + dependencies: + async: 3.2.3 + dev: true + + /getpass/0.1.7: + resolution: {integrity: sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=} + dependencies: + assert-plus: 1.0.0 + dev: true + + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + + /glob-parent/6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + + /glob-to-regexp/0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + /glob/7.1.4: + resolution: {integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /glob/7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /glob/7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /global-dirs/3.0.0: + resolution: {integrity: sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==} + engines: {node: '>=10'} + dependencies: + ini: 2.0.0 + dev: true + + /globals/11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + /globals/13.12.1: + resolution: {integrity: sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globby/10.0.1: + resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} + engines: {node: '>=8'} + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.11 + glob: 7.2.0 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 3.0.0 + + /globby/11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.11 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 3.0.0 + + /goober/2.1.8_csstype@3.0.10: + resolution: {integrity: sha512-S0C85gCzcfFCMSdjD/CxyQMt1rbf2qEg6hmDzxk2FfD7+7Ogk55m8ZFUMtqNaZM4VVX/qaU9AzSORG+Gf4ZpAQ==} + peerDependencies: + csstype: ^3.0.10 + dependencies: + csstype: 3.0.10 + dev: false + + /google-auth-library/7.14.0: + resolution: {integrity: sha512-or8r7qUqGVI3W8lVSdPh0ZpeFyQHeE73g5c0p+bLNTTUFXJ+GSeDQmZRZ2p4H8cF/RJYa4PNvi/A1ar1uVNLFA==} + engines: {node: '>=10'} + dependencies: + arrify: 2.0.1 + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + fast-text-encoding: 1.0.3 + gaxios: 4.3.2 + gcp-metadata: 4.3.1 + gtoken: 5.3.2 + jws: 4.0.0 + lru-cache: 6.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /google-p12-pem/3.1.3: + resolution: {integrity: sha512-MC0jISvzymxePDVembypNefkAQp+DRP7dBE+zNUPaIjEspIlYg0++OrsNr248V9tPbz6iqtZ7rX1hxWA5B8qBQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + node-forge: 1.2.1 + dev: false + + /googleapis-common/5.1.0: + resolution: {integrity: sha512-RXrif+Gzhq1QAzfjxulbGvAY3FPj8zq/CYcvgjzDbaBNCD6bUl+86I7mUs4DKWHGruuK26ijjR/eDpWIDgNROA==} + engines: {node: '>=10.10.0'} + dependencies: + extend: 3.0.2 + gaxios: 4.3.2 + google-auth-library: 7.14.0 + qs: 6.10.3 + url-template: 2.0.8 + uuid: 8.3.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /googleapis/95.0.0: + resolution: {integrity: sha512-ZpFZW7FDwcjQa2+xZNS2SC5sK2s46iWKA5QSFVJSK3RELQec4PYHhzKwzbeCzt4urnjYp6udPif95zXTFxbtRA==} + engines: {node: '>=10'} + dependencies: + google-auth-library: 7.14.0 + googleapis-common: 5.1.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /graceful-fs/4.2.9: + resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==} + + /grapheme-splitter/1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: false + + /gtoken/5.3.2: + resolution: {integrity: sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==} + engines: {node: '>=10'} + dependencies: + gaxios: 4.3.2 + google-p12-pem: 3.1.3 + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /gzip-size/6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + dependencies: + duplexer: 0.1.2 + dev: false + + /handle-thing/2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + + /handlebars/4.7.7: + resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.5 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.15.2 + dev: false + + /hard-rejection/2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + dev: false + + /harmony-reflect/1.6.2: + resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} + + /has-bigints/1.0.1: + resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==} + + /has-flag/3.0.0: + resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} + engines: {node: '>=4'} + + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + /has-tostringtag/1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + + /has-unicode/2.0.1: + resolution: {integrity: sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=} + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + + /hast-util-whitespace/2.0.0: + resolution: {integrity: sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==} + dev: false + + /he/1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + /highlight.js/10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + dev: false + + /hoist-non-react-statics/3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 16.13.1 + dev: false + + /hosted-git-info/2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: false + + /hotkeys-js/3.8.7: + resolution: {integrity: sha512-ckAx3EkUr5XjDwjEHDorHxRO2Kb7z6Z2Sxul4MbBkN8Nho7XDslQsgMJT+CiJ5Z4TgRxxvKHEpuLE3imzqy4Lg==} + dev: false + + /hpack.js/2.1.6: + resolution: {integrity: sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=} + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.7 + wbuf: 1.7.3 + + /html-encoding-sniffer/2.0.1: + resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} + engines: {node: '>=10'} + dependencies: + whatwg-encoding: 1.0.5 + + /html-encoding-sniffer/3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + dependencies: + whatwg-encoding: 2.0.0 + + /html-entities/2.3.2: + resolution: {integrity: sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==} + + /html-escaper/2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + /html-parse-stringify/3.0.1: + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + dependencies: + void-elements: 3.1.0 + dev: false + + /http-deceiver/1.2.7: + resolution: {integrity: sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=} + + /http-errors/1.6.3: + resolution: {integrity: sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + + /http-errors/1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + + /http-parser-js/0.5.5: + resolution: {integrity: sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==} + + /http-proxy-agent/4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.3.3 + transitivePeerDependencies: + - supports-color + + /http-proxy-middleware/2.0.3_@types+express@4.17.13: + resolution: {integrity: sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + dependencies: + '@types/express': 4.17.13 + '@types/http-proxy': 1.17.8 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.4 + transitivePeerDependencies: + - debug + + /http-proxy/1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.14.9 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + /http-server/14.1.0: + resolution: {integrity: sha512-5lYsIcZtf6pdR8tCtzAHTWrAveo4liUlJdWc7YafwK/maPgYHs+VNP6KpCClmUnSorJrARVMXqtT055zBv11Yg==} + engines: {node: '>=12'} + hasBin: 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.5 + opener: 1.5.2 + portfinder: 1.0.28 + secure-compare: 3.0.1 + union: 0.5.0 + url-join: 4.0.1 + transitivePeerDependencies: + - debug + + /http-signature/1.3.6: + resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + jsprim: 2.0.2 + sshpk: 1.17.0 + dev: true + + /https-proxy-agent/5.0.0: + resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.3 + transitivePeerDependencies: + - supports-color + + /human-id/1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + dev: false + + /human-signals/1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + dev: true + + /human-signals/2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + /husky/7.0.4: + resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} + engines: {node: '>=12'} + hasBin: true + dev: true + + /i18next-fs-backend/1.1.4: + resolution: {integrity: sha512-/MfAGMP0jHonV966uFf9PkWWuDjPYLIcsipnSO3NxpNtAgRUKLTwvm85fEmsF6hGeu0zbZiCQ3W74jwO6K9uXA==} + dev: false + + /i18next/21.6.12: + resolution: {integrity: sha512-xlGTPdu2g5PZEUIE6TA1mQ9EIAAv9nMFONzgwAIrKL/KTmYYWufQNGgOmp5Og1PvgUji+6i1whz0rMdsz1qaKw==} + dependencies: + '@babel/runtime': 7.17.2 + dev: false + + /iconv-lite/0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + + /iconv-lite/0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + + /icss-replace-symbols/1.1.0: + resolution: {integrity: sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=} + + /icss-utils/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.7 + + /identity-obj-proxy/3.0.0: + resolution: {integrity: sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=} + engines: {node: '>=4'} + dependencies: + harmony-reflect: 1.6.2 + + /ieee754/1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + /ignore/4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true + + /ignore/5.2.0: + resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} + engines: {node: '>= 4'} + + /image-size/0.5.5: + resolution: {integrity: sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=} + engines: {node: '>=0.10.0'} + hasBin: true + requiresBuild: true + optional: true + + /immer/9.0.12: + resolution: {integrity: sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==} + dev: false + + /immutable/4.0.0: + resolution: {integrity: sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==} + + /import-cwd/3.0.0: + resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} + engines: {node: '>=8'} + dependencies: + import-from: 3.0.0 + + /import-fresh/3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /import-from/3.0.0: + resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + + /import-local/3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash/0.1.4: + resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} + engines: {node: '>=0.8.19'} + + /indent-string/4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + /inflight/1.0.6: + resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits/2.0.3: + resolution: {integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=} + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ini/2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + dev: true + + /inline-style-parser/0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + dev: false + + /internal-slot/1.0.3: + resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.1.1 + has: 1.0.3 + side-channel: 1.0.4 + + /ip/1.1.5: + resolution: {integrity: sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=} + + /ipaddr.js/1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + /ipaddr.js/2.0.1: + resolution: {integrity: sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==} + engines: {node: '>= 10'} + + /is-arguments/1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + /is-arrayish/0.2.1: + resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} + + /is-bigint/1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.1 + + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + + /is-boolean-object/1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + /is-buffer/2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: false + + /is-callable/1.2.4: + resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} + engines: {node: '>= 0.4'} + + /is-ci/3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + dependencies: + ci-info: 3.3.0 + + /is-core-module/2.8.1: + resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} + dependencies: + has: 1.0.3 + + /is-date-object/1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + + /is-docker/2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + /is-extglob/2.1.1: + resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} + engines: {node: '>=0.10.0'} + + /is-fullwidth-code-point/1.0.0: + resolution: {integrity: sha1-754xOG8DGn8NZDr4L95QxFfvAMs=} + engines: {node: '>=0.10.0'} + dependencies: + number-is-nan: 1.0.1 + + /is-fullwidth-code-point/3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + /is-generator-fn/2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-installed-globally/0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + dependencies: + global-dirs: 3.0.0 + is-path-inside: 3.0.3 + dev: true + + /is-interactive/1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + + /is-module/1.0.0: + resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=} + + /is-negative-zero/2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + + /is-number-object/1.0.6: + resolution: {integrity: sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-path-cwd/2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} + + /is-path-inside/3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + /is-plain-obj/1.1.0: + resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=} + engines: {node: '>=0.10.0'} + dev: false + + /is-plain-obj/3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + + /is-plain-obj/4.0.0: + resolution: {integrity: sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==} + engines: {node: '>=12'} + dev: false + + /is-plain-object/2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + + /is-plain-object/3.0.1: + resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} + engines: {node: '>=0.10.0'} + + /is-potential-custom-element-name/1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + /is-reference/1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + dependencies: + '@types/estree': 0.0.51 + + /is-regex/1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + /is-shared-array-buffer/1.0.1: + resolution: {integrity: sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==} + + /is-stream/2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + /is-string/1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + + /is-subdir/1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + dependencies: + better-path-resolve: 1.0.0 + dev: false + + /is-symbol/1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + + /is-typedarray/1.0.0: + resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=} + + /is-unicode-supported/0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /is-utf8/0.2.1: + resolution: {integrity: sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=} + dev: false + + /is-weakref/1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + + /is-windows/1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: false + + /is-wsl/2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + + /isarray/0.0.1: + resolution: {integrity: sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=} + dev: false + + /isarray/1.0.0: + resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} + + /isexe/2.0.0: + resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} + + /isobject/3.0.1: + resolution: {integrity: sha1-TkMekrEalzFjaqH5yNHMvP2reN8=} + engines: {node: '>=0.10.0'} + + /isstream/0.1.2: + resolution: {integrity: sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=} + dev: true + + /istanbul-lib-coverage/3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + + /istanbul-lib-instrument/4.0.3: + resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.17.5 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + + /istanbul-lib-instrument/5.1.0: + resolution: {integrity: sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.17.5 + '@babel/parser': 7.17.3 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + + /istanbul-lib-report/3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 3.1.0 + supports-color: 7.2.0 + + /istanbul-lib-source-maps/4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.3 + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + /istanbul-reports/3.1.4: + resolution: {integrity: sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 + + /iterare/1.2.1: + resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} + engines: {node: '>=6'} + dev: false + + /jake/10.8.2: + resolution: {integrity: sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==} + hasBin: true + dependencies: + async: 0.9.2 + chalk: 2.4.2 + filelist: 1.0.2 + minimatch: 3.1.2 + + /jest-changed-files/27.5.1: + resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + execa: 5.1.1 + throat: 6.0.1 + dev: true + + /jest-circus/27.5.1: + resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.21 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.5 + throat: 6.0.1 + transitivePeerDependencies: + - supports-color + + /jest-cli/27.5.1: + resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.9 + import-local: 3.1.0 + jest-config: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + prompts: 2.4.2 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-config/27.2.2: + resolution: {integrity: sha512-2nhms3lp52ZpU0636bB6zIFHjDVtYxzFQIOHZjBFUeXcb6b41sEkWojbHaJ4FEIO44UbccTLa7tvNpiFCgPE7w==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + dependencies: + '@babel/core': 7.17.5 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1_@babel+core@7.17.5 + chalk: 4.1.2 + deepmerge: 4.2.2 + glob: 7.2.0 + graceful-fs: 4.2.9 + is-ci: 3.0.1 + jest-circus: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-get-type: 27.5.1 + jest-jasmine2: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.2.2 + jest-runner: 27.5.1 + jest-util: 27.2.0 + jest-validate: 27.5.1 + micromatch: 4.0.4 + pretty-format: 27.5.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + dev: true + + /jest-config/27.2.2_ts-node@9.1.1: + resolution: {integrity: sha512-2nhms3lp52ZpU0636bB6zIFHjDVtYxzFQIOHZjBFUeXcb6b41sEkWojbHaJ4FEIO44UbccTLa7tvNpiFCgPE7w==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + dependencies: + '@babel/core': 7.17.5 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1_@babel+core@7.17.5 + chalk: 4.1.2 + deepmerge: 4.2.2 + glob: 7.2.0 + graceful-fs: 4.2.9 + is-ci: 3.0.1 + jest-circus: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-get-type: 27.5.1 + jest-jasmine2: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.2.2 + jest-runner: 27.5.1 + jest-util: 27.2.0 + jest-validate: 27.5.1 + micromatch: 4.0.4 + pretty-format: 27.5.1 + ts-node: 9.1.1_typescript@4.5.5 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + /jest-config/27.5.1: + resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + dependencies: + '@babel/core': 7.17.5 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1_@babel+core@7.17.5 + chalk: 4.1.2 + ci-info: 3.3.0 + deepmerge: 4.2.2 + glob: 7.2.0 + graceful-fs: 4.2.9 + jest-circus: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-get-type: 27.5.1 + jest-jasmine2: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runner: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + micromatch: 4.0.4 + parse-json: 5.2.0 + pretty-format: 27.5.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + dev: true + + /jest-diff/27.5.1: + resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + /jest-docblock/27.5.1: + resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + detect-newline: 3.1.0 + + /jest-each/27.5.1: + resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + jest-get-type: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + + /jest-environment-jsdom/27.5.1: + resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.21 + jest-mock: 27.5.1 + jest-util: 27.5.1 + jsdom: 16.7.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + /jest-environment-node/27.5.1: + resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.21 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + /jest-get-type/27.5.1: + resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + /jest-haste-map/27.5.1: + resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/graceful-fs': 4.1.5 + '@types/node': 17.0.21 + anymatch: 3.1.2 + fb-watchman: 2.0.1 + graceful-fs: 4.2.9 + jest-regex-util: 27.5.1 + jest-serializer: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.4 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + + /jest-jasmine2/27.5.1: + resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.21 + chalk: 4.1.2 + co: 4.6.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + throat: 6.0.1 + transitivePeerDependencies: + - supports-color + + /jest-leak-detector/27.5.1: + resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + /jest-matcher-utils/27.5.1: + resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + /jest-message-util/27.5.1: + resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@babel/code-frame': 7.16.7 + '@jest/types': 27.5.1 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.9 + micromatch: 4.0.4 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.5 + + /jest-mock/27.5.1: + resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 17.0.21 + + /jest-pnp-resolver/1.2.2_jest-resolve@27.2.2: + resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 27.2.2 + + /jest-pnp-resolver/1.2.2_jest-resolve@27.5.1: + resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 27.5.1 + + /jest-regex-util/27.5.1: + resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + /jest-resolve-dependencies/27.5.1: + resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + jest-regex-util: 27.5.1 + jest-snapshot: 27.5.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve/27.2.2: + resolution: {integrity: sha512-tfbHcBs/hJTb3fPQ/3hLWR+TsLNTzzK98TU+zIAsrL9nNzWfWROwopUOmiSUqmHMZW5t9au/433kSF2/Af+tTw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + escalade: 3.1.1 + graceful-fs: 4.2.9 + jest-haste-map: 27.5.1 + jest-pnp-resolver: 1.2.2_jest-resolve@27.2.2 + jest-util: 27.2.0 + jest-validate: 27.5.1 + resolve: 1.22.0 + slash: 3.0.0 + + /jest-resolve/27.5.1: + resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + graceful-fs: 4.2.9 + jest-haste-map: 27.5.1 + jest-pnp-resolver: 1.2.2_jest-resolve@27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + resolve: 1.22.0 + resolve.exports: 1.1.0 + slash: 3.0.0 + + /jest-runner/27.5.1: + resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/console': 27.5.1 + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.21 + chalk: 4.1.2 + emittery: 0.8.1 + graceful-fs: 4.2.9 + jest-docblock: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-haste-map: 27.5.1 + jest-leak-detector: 27.5.1 + jest-message-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runtime: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + source-map-support: 0.5.21 + throat: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + /jest-runtime/27.5.1: + resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/globals': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + cjs-module-lexer: 1.2.2 + collect-v8-coverage: 1.0.1 + execa: 5.1.1 + glob: 7.2.0 + graceful-fs: 4.2.9 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + /jest-serializer/27.5.1: + resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@types/node': 17.0.21 + graceful-fs: 4.2.9 + + /jest-snapshot/27.5.1: + resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@babel/core': 7.17.5 + '@babel/generator': 7.17.3 + '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.5 + '@babel/traverse': 7.17.3 + '@babel/types': 7.17.0 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__traverse': 7.14.2 + '@types/prettier': 2.4.4 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.5 + chalk: 4.1.2 + expect: 27.5.1 + graceful-fs: 4.2.9 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + jest-haste-map: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + natural-compare: 1.4.0 + pretty-format: 27.5.1 + semver: 7.3.5 + transitivePeerDependencies: + - supports-color + + /jest-util/27.2.0: + resolution: {integrity: sha512-T5ZJCNeFpqcLBpx+Hl9r9KoxBCUqeWlJ1Htli+vryigZVJ1vuLB9j35grEBASp4R13KFkV7jM52bBGnArpJN6A==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 17.0.21 + chalk: 4.1.2 + graceful-fs: 4.2.9 + is-ci: 3.0.1 + picomatch: 2.3.1 + + /jest-util/27.5.1: + resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 17.0.21 + chalk: 4.1.2 + ci-info: 3.3.0 + graceful-fs: 4.2.9 + picomatch: 2.3.1 + + /jest-validate/27.5.1: + resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 27.5.1 + leven: 3.1.0 + pretty-format: 27.5.1 + + /jest-watcher/27.5.1: + resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.21 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest-util: 27.5.1 + string-length: 4.0.2 + dev: true + + /jest-worker/27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 17.0.21 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + /jest/27.5.1: + resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 27.5.1 + import-local: 3.1.0 + jest-cli: 27.5.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /joi/17.6.0: + resolution: {integrity: sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==} + dependencies: + '@hapi/hoek': 9.2.1 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.3 + '@sideway/formula': 3.0.0 + '@sideway/pinpoint': 2.0.0 + dev: false + + /jpeg-js/0.4.3: + resolution: {integrity: sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q==} + dev: true + + /js-sha3/0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + dev: false + + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml/3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + + /jsbn/0.1.1: + resolution: {integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM=} + dev: true + + /jsdom/16.7.0: + resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} + engines: {node: '>=10'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.5 + acorn: 8.7.0 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.3.1 + domexception: 2.0.1 + escodegen: 2.0.0 + form-data: 3.0.1 + html-encoding-sniffer: 2.0.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.0 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.0 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.0.0 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 2.0.0 + webidl-conversions: 6.1.0 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + ws: 7.5.7 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + /jsesc/0.5.0: + resolution: {integrity: sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=} + hasBin: true + + /jsesc/2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + /json-bigint/1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + dependencies: + bignumber.js: 9.0.2 + dev: false + + /json-parse-better-errors/1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + /json-parse-even-better-errors/2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + /json-schema-traverse/1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + /json-schema/0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + dev: true + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} + dev: true + + /json-stringify-safe/5.0.1: + resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} + dev: true + + /json5/1.0.1: + resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} + hasBin: true + dependencies: + minimist: 1.2.5 + + /json5/2.2.0: + resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} + engines: {node: '>=6'} + hasBin: true + dependencies: + minimist: 1.2.5 + + /jsonc-parser/3.0.0: + resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} + + /jsonfile/4.0.0: + resolution: {integrity: sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=} + optionalDependencies: + graceful-fs: 4.2.9 + + /jsonfile/6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.9 + + /jsonwebtoken/8.5.1: + resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==} + engines: {node: '>=4', npm: '>=1.4.28'} + 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.1.1 + ms: 2.1.3 + semver: 5.7.1 + dev: false + + /jsprim/2.0.2: + resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + dev: true + + /jsx-ast-utils/3.2.1: + resolution: {integrity: sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.4 + object.assign: 4.1.2 + + /jwa/1.4.1: + resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + dev: false + + /jwa/2.0.0: + resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + dev: false + + /jws/3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + dependencies: + jwa: 1.4.1 + safe-buffer: 5.2.1 + dev: false + + /jws/4.0.0: + resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} + dependencies: + jwa: 2.0.0 + safe-buffer: 5.2.1 + dev: false + + /kind-of/6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + /kleur/3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + + /kleur/4.1.4: + resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==} + engines: {node: '>=6'} + dev: false + + /klona/2.0.5: + resolution: {integrity: sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==} + engines: {node: '>= 8'} + + /language-subtag-registry/0.3.21: + resolution: {integrity: sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==} + + /language-tags/1.0.5: + resolution: {integrity: sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=} + dependencies: + language-subtag-registry: 0.3.21 + + /lazy-ass/1.6.0: + resolution: {integrity: sha1-eZllXoZGwX8In90YfRUNMyTVRRM=} + engines: {node: '> 0.8'} + dev: true + + /less-loader/10.2.0_less@3.12.2+webpack@5.69.1: + resolution: {integrity: sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + dependencies: + klona: 2.0.5 + less: 3.12.2 + webpack: 5.69.1 + + /less/3.12.2: + resolution: {integrity: sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q==} + engines: {node: '>=6'} + hasBin: true + dependencies: + tslib: 1.14.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.9 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + native-request: 1.1.0 + source-map: 0.6.1 + + /leven/3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + /levn/0.3.0: + resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + + /levn/0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /libphonenumber-js/1.9.49: + resolution: {integrity: sha512-/wEOIONcVboFky+lWlCaF7glm1FhBz11M5PHeCApA+xDdVfmhKjHktHS8KjyGxouV5CSXIr4f3GvLSpJa4qMSg==} + dev: false + + /license-webpack-plugin/4.0.0_webpack@5.69.1: + resolution: {integrity: sha512-b9iMrROrw2fTOJBZ57h0xJfT5/1Cxg4ucYbtpWoukv4Awb2TFPfDDFVHNM8w6SYQpVfB13a5tQJxgGamqwrsyw==} + peerDependencies: + webpack: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-sources: + optional: true + dependencies: + webpack: 5.69.1 + webpack-sources: 3.2.3 + + /lilconfig/2.0.4: + resolution: {integrity: sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==} + engines: {node: '>=10'} + + /lines-and-columns/1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + /listr2/3.14.0_enquirer@2.3.6: + resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} + engines: {node: '>=10.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.16 + enquirer: 2.3.6 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.0 + rxjs: 7.5.4 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /load-yaml-file/0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + dependencies: + graceful-fs: 4.2.9 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + dev: false + + /loader-runner/4.2.0: + resolution: {integrity: sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==} + engines: {node: '>=6.11.5'} + + /loader-utils/1.2.3: + resolution: {integrity: sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==} + engines: {node: '>=4.0.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 2.1.0 + json5: 1.0.1 + + /loader-utils/1.4.0: + resolution: {integrity: sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==} + engines: {node: '>=4.0.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 1.0.1 + + /loader-utils/2.0.2: + resolution: {integrity: sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.0 + + /loader-utils/3.2.0: + resolution: {integrity: sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==} + engines: {node: '>= 12.13.0'} + + /locate-path/2.0.0: + resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} + engines: {node: '>=4'} + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + + /locate-path/5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + + /locate-path/6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + + /lodash.camelcase/4.3.0: + resolution: {integrity: sha1-soqmKIorn8ZRA1x3EfZathkDMaY=} + + /lodash.debounce/4.0.8: + resolution: {integrity: sha1-gteb/zCmfEAF/9XiUVMArZyk168=} + + /lodash.includes/4.3.0: + resolution: {integrity: sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=} + dev: false + + /lodash.isboolean/3.0.3: + resolution: {integrity: sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=} + dev: false + + /lodash.isinteger/4.0.4: + resolution: {integrity: sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=} + dev: false + + /lodash.isnumber/3.0.3: + resolution: {integrity: sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=} + dev: false + + /lodash.isplainobject/4.0.6: + resolution: {integrity: sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=} + dev: false + + /lodash.isstring/4.0.1: + resolution: {integrity: sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=} + dev: false + + /lodash.memoize/4.1.2: + resolution: {integrity: sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=} + + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.once/4.1.1: + resolution: {integrity: sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=} + + /lodash.startcase/4.4.0: + resolution: {integrity: sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg=} + dev: false + + /lodash.uniq/4.5.0: + resolution: {integrity: sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=} + + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /log-symbols/4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /log-update/4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + dev: true + + /longest-streak/3.0.1: + resolution: {integrity: sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==} + dev: false + + /loose-envify/1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /lru-cache/4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: false + + /lru-cache/6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /lz-string/1.4.4: + resolution: {integrity: sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=} + hasBin: true + dev: true + + /magic-string/0.25.7: + resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==} + dependencies: + sourcemap-codec: 1.4.8 + + /make-dir/2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + pify: 4.0.1 + semver: 5.7.1 + optional: true + + /make-dir/3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.0 + + /make-error/1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + /makeerror/1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + + /map-obj/1.0.1: + resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} + engines: {node: '>=0.10.0'} + dev: false + + /map-obj/4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + dev: false + + /markdown-table/3.0.2: + resolution: {integrity: sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==} + dev: false + + /match-sorter/6.3.1: + resolution: {integrity: sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==} + dependencies: + '@babel/runtime': 7.17.2 + remove-accents: 0.4.2 + dev: false + + /md5-hex/4.0.0: + resolution: {integrity: sha512-di38zHPn4Tz8LCb5Lz8SpLb/20Hv23aPXpF4Bq1mR5r9JuCZQ/JpcDUxFfZF9Ur5GiUvqS5NQOkR+fm5cYZ0IQ==} + engines: {node: '>=12'} + dependencies: + blueimp-md5: 2.19.0 + dev: false + + /mdast-util-definitions/5.1.0: + resolution: {integrity: sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ==} + dependencies: + '@types/mdast': 3.0.10 + '@types/unist': 2.0.6 + unist-util-visit: 3.1.0 + dev: false + + /mdast-util-find-and-replace/2.1.0: + resolution: {integrity: sha512-1w1jbqAd13oU78QPBf5223+xB+37ecNtQ1JElq2feWols5oEYAl+SgNDnOZipe7NfLemoEt362yUS15/wip4mw==} + dependencies: + escape-string-regexp: 5.0.0 + unist-util-is: 5.1.1 + unist-util-visit-parents: 4.1.1 + dev: false + + /mdast-util-from-markdown/1.2.0: + resolution: {integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==} + dependencies: + '@types/mdast': 3.0.10 + '@types/unist': 2.0.6 + decode-named-character-reference: 1.0.1 + mdast-util-to-string: 3.1.0 + micromark: 3.0.10 + micromark-util-decode-numeric-character-reference: 1.0.0 + micromark-util-decode-string: 1.0.2 + micromark-util-normalize-identifier: 1.0.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + unist-util-stringify-position: 3.0.0 + uvu: 0.5.3 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-autolink-literal/1.0.2: + resolution: {integrity: sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==} + dependencies: + '@types/mdast': 3.0.10 + ccount: 2.0.1 + mdast-util-find-and-replace: 2.1.0 + micromark-util-character: 1.1.0 + dev: false + + /mdast-util-gfm-footnote/1.0.1: + resolution: {integrity: sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-to-markdown: 1.3.0 + micromark-util-normalize-identifier: 1.0.0 + dev: false + + /mdast-util-gfm-strikethrough/1.0.1: + resolution: {integrity: sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-to-markdown: 1.3.0 + dev: false + + /mdast-util-gfm-table/1.0.3: + resolution: {integrity: sha512-B/tgpJjND1qIZM2WZst+NYnb0notPE6m0J+YOe3NOHXyEmvK38ytxaOsgz4BvrRPQQcNbRrTzSHMPnBkj1fCjg==} + dependencies: + markdown-table: 3.0.2 + mdast-util-to-markdown: 1.3.0 + dev: false + + /mdast-util-gfm-task-list-item/1.0.1: + resolution: {integrity: sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-to-markdown: 1.3.0 + dev: false + + /mdast-util-gfm/2.0.0: + resolution: {integrity: sha512-wMwejlTN3EQADPFuvxe8lmGsay3+f6gSJKdAHR6KBJzpcxvsjJSILB9K6u6G7eQLC7iOTyVIHYGui9uBc9r1Tg==} + dependencies: + mdast-util-gfm-autolink-literal: 1.0.2 + mdast-util-gfm-footnote: 1.0.1 + mdast-util-gfm-strikethrough: 1.0.1 + mdast-util-gfm-table: 1.0.3 + mdast-util-gfm-task-list-item: 1.0.1 + dev: false + + /mdast-util-to-hast/12.1.1: + resolution: {integrity: sha512-qE09zD6ylVP14jV4mjLIhDBOrpFdShHZcEsYvvKGABlr9mGbV7mTlRWdoFxL/EYSTNDiC9GZXy7y8Shgb9Dtzw==} + dependencies: + '@types/hast': 2.3.4 + '@types/mdast': 3.0.10 + '@types/mdurl': 1.0.2 + mdast-util-definitions: 5.1.0 + mdurl: 1.0.1 + micromark-util-sanitize-uri: 1.0.0 + unist-builder: 3.0.0 + unist-util-generated: 2.0.0 + unist-util-position: 4.0.1 + unist-util-visit: 4.1.0 + dev: false + + /mdast-util-to-markdown/1.3.0: + resolution: {integrity: sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==} + dependencies: + '@types/mdast': 3.0.10 + '@types/unist': 2.0.6 + longest-streak: 3.0.1 + mdast-util-to-string: 3.1.0 + micromark-util-decode-string: 1.0.2 + unist-util-visit: 4.1.0 + zwitch: 2.0.2 + dev: false + + /mdast-util-to-string/3.1.0: + resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} + dev: false + + /mdn-data/2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + + /mdurl/1.0.1: + resolution: {integrity: sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=} + dev: false + + /media-typer/0.3.0: + resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} + engines: {node: '>= 0.6'} + + /memfs/3.4.1: + resolution: {integrity: sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==} + engines: {node: '>= 4.0.0'} + dependencies: + fs-monkey: 1.0.3 + + /memoize-one/5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + dev: false + + /meow/6.1.1: + resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} + engines: {node: '>=8'} + dependencies: + '@types/minimist': 1.2.2 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.0 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 2.5.0 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.13.1 + yargs-parser: 18.1.3 + dev: false + + /merge-descriptors/1.0.1: + resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} + + /merge-stream/2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /methods/1.1.2: + resolution: {integrity: sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=} + engines: {node: '>= 0.6'} + + /micromark-core-commonmark/1.0.6: + resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} + dependencies: + decode-named-character-reference: 1.0.1 + micromark-factory-destination: 1.0.0 + micromark-factory-label: 1.0.2 + micromark-factory-space: 1.0.0 + micromark-factory-title: 1.0.2 + micromark-factory-whitespace: 1.0.0 + micromark-util-character: 1.1.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.2 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.3 + dev: false + + /micromark-extension-gfm-autolink-literal/1.0.3: + resolution: {integrity: sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-sanitize-uri: 1.0.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.3 + dev: false + + /micromark-extension-gfm-footnote/1.0.3: + resolution: {integrity: sha512-bn62pC5y39rIo2g1RqZk1NhF7T7cJLuJlbevunQz41U0iPVCdVOFASe5/L1kke+DFKSgfCRhv24+o42cZ1+ADw==} + dependencies: + micromark-core-commonmark: 1.0.6 + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-normalize-identifier: 1.0.0 + micromark-util-sanitize-uri: 1.0.0 + micromark-util-symbol: 1.0.1 + uvu: 0.5.3 + dev: false + + /micromark-extension-gfm-strikethrough/1.0.4: + resolution: {integrity: sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==} + dependencies: + micromark-util-chunked: 1.0.0 + micromark-util-classify-character: 1.0.0 + micromark-util-resolve-all: 1.0.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.3 + dev: false + + /micromark-extension-gfm-table/1.0.5: + resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==} + dependencies: + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.3 + dev: false + + /micromark-extension-gfm-tagfilter/1.0.1: + resolution: {integrity: sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==} + dependencies: + micromark-util-types: 1.0.2 + dev: false + + /micromark-extension-gfm-task-list-item/1.0.3: + resolution: {integrity: sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==} + dependencies: + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.3 + dev: false + + /micromark-extension-gfm/2.0.1: + resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} + dependencies: + micromark-extension-gfm-autolink-literal: 1.0.3 + micromark-extension-gfm-footnote: 1.0.3 + micromark-extension-gfm-strikethrough: 1.0.4 + micromark-extension-gfm-table: 1.0.5 + micromark-extension-gfm-tagfilter: 1.0.1 + micromark-extension-gfm-task-list-item: 1.0.3 + micromark-util-combine-extensions: 1.0.0 + micromark-util-types: 1.0.2 + dev: false + + /micromark-factory-destination/1.0.0: + resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + dev: false + + /micromark-factory-label/1.0.2: + resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.3 + dev: false + + /micromark-factory-space/1.0.0: + resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-types: 1.0.2 + dev: false + + /micromark-factory-title/1.0.2: + resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} + dependencies: + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.3 + dev: false + + /micromark-factory-whitespace/1.0.0: + resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} + dependencies: + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + dev: false + + /micromark-util-character/1.1.0: + resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} + dependencies: + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + dev: false + + /micromark-util-chunked/1.0.0: + resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} + dependencies: + micromark-util-symbol: 1.0.1 + dev: false + + /micromark-util-classify-character/1.0.0: + resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + dev: false + + /micromark-util-combine-extensions/1.0.0: + resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} + dependencies: + micromark-util-chunked: 1.0.0 + micromark-util-types: 1.0.2 + dev: false + + /micromark-util-decode-numeric-character-reference/1.0.0: + resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} + dependencies: + micromark-util-symbol: 1.0.1 + dev: false + + /micromark-util-decode-string/1.0.2: + resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} + dependencies: + decode-named-character-reference: 1.0.1 + micromark-util-character: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.0.0 + micromark-util-symbol: 1.0.1 + dev: false + + /micromark-util-encode/1.0.1: + resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} + dev: false + + /micromark-util-html-tag-name/1.0.0: + resolution: {integrity: sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g==} + dev: false + + /micromark-util-normalize-identifier/1.0.0: + resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} + dependencies: + micromark-util-symbol: 1.0.1 + dev: false + + /micromark-util-resolve-all/1.0.0: + resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} + dependencies: + micromark-util-types: 1.0.2 + dev: false + + /micromark-util-sanitize-uri/1.0.0: + resolution: {integrity: sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-encode: 1.0.1 + micromark-util-symbol: 1.0.1 + dev: false + + /micromark-util-subtokenize/1.0.2: + resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} + dependencies: + micromark-util-chunked: 1.0.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.3 + dev: false + + /micromark-util-symbol/1.0.1: + resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} + dev: false + + /micromark-util-types/1.0.2: + resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} + dev: false + + /micromark/3.0.10: + resolution: {integrity: sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==} + dependencies: + '@types/debug': 4.1.7 + debug: 4.3.3 + decode-named-character-reference: 1.0.1 + micromark-core-commonmark: 1.0.6 + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.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.1 + 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.2 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.3 + transitivePeerDependencies: + - supports-color + dev: false + + /micromatch/4.0.4: + resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /microseconds/0.2.0: + resolution: {integrity: sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==} + dev: false + + /mime-db/1.51.0: + resolution: {integrity: sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==} + engines: {node: '>= 0.6'} + + /mime-db/1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + /mime-types/2.1.34: + resolution: {integrity: sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.51.0 + + /mime/1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + /mime/3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + dev: true + + /mimic-fn/2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + /min-indent/1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: false + + /mini-css-extract-plugin/2.4.7_webpack@5.69.1: + resolution: {integrity: sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + schema-utils: 4.0.0 + webpack: 5.69.1 + + /mini-svg-data-uri/1.4.3: + resolution: {integrity: sha512-gSfqpMRC8IxghvMcxzzmMnWpXAChSA+vy4cia33RgerMS8Fex95akUyQZPbxJJmeBGiGmK7n/1OpUX8ksRjIdA==} + hasBin: true + + /minimalistic-assert/1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + /minimatch/3.0.4: + resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} + dependencies: + brace-expansion: 1.1.11 + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimist-options/4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + dev: false + + /minimist/1.2.5: + resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} + + /minipass/3.1.6: + resolution: {integrity: sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + + /minizlib/2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.1.6 + yallist: 4.0.0 + + /mixme/0.5.4: + resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} + engines: {node: '>= 8.0.0'} + dev: false + + /mkdirp/0.5.5: + resolution: {integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==} + hasBin: true + dependencies: + minimist: 1.2.5 + + /mkdirp/1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + /moment-timezone/0.5.34: + resolution: {integrity: sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==} + dependencies: + moment: 2.29.1 + dev: false + + /moment/2.29.1: + resolution: {integrity: sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==} + dev: false + + /monaco-editor/0.32.1: + resolution: {integrity: sha512-LUt2wsUvQmEi2tfTOK+tjAPvt7eQ+K5C4rZPr6SeuyzjAuAHrIvlUloTcOiGjZW3fn3a/jFQCONrEJbNOaCqbA==} + dev: false + + /mri/1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: false + + /mrmime/1.0.0: + resolution: {integrity: sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==} + engines: {node: '>=10'} + dev: false + + /ms/2.0.0: + resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} + + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms/2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + /multer/1.4.4: + resolution: {integrity: sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==} + engines: {node: '>= 0.10.0'} + dependencies: + append-field: 1.0.0 + busboy: 0.2.14 + concat-stream: 1.6.2 + mkdirp: 0.5.5 + object-assign: 4.1.1 + on-finished: 2.4.1 + type-is: 1.6.18 + xtend: 4.0.2 + dev: false + + /multicast-dns-service-types/1.1.0: + resolution: {integrity: sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=} + + /multicast-dns/6.2.3: + resolution: {integrity: sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==} + hasBin: true + dependencies: + dns-packet: 1.3.4 + thunky: 1.1.0 + + /mz/2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: false + + /nano-time/1.0.0: + resolution: {integrity: sha1-sFVPaa2J4i0JB/ehKwmTpdlhN+8=} + dependencies: + big-integer: 1.6.51 + dev: false + + /nanoid/3.3.1: + resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /native-request/1.1.0: + resolution: {integrity: sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==} + requiresBuild: true + optional: true + + /natural-compare/1.4.0: + resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} + + /negotiator/0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + /neo-async/2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + /next-compose-plugins/2.2.1: + resolution: {integrity: sha512-OjJ+fV15FXO2uQXQagLD4C0abYErBjyjE0I0FHpOEIB8upw0hg1ldFP6cqHTJBH1cZqy96OeR3u1dJ+Ez2D4Bg==} + dev: false + + /next-i18next/10.5.0_caa633a00319350dbda42996613fe26c: + resolution: {integrity: sha512-+Xj/v5gqpEUBKKAaFCZ76+Ps6OGAaIgGowJTF67wTcmIQbHrcHMPjHwPTbnpXy7uHrH8os7i4eAfRENAv/6xwg==} + engines: {node: '>=12'} + peerDependencies: + next: '>= 10.0.0' + react: '>= 16.8.0' + dependencies: + '@babel/runtime': 7.17.2 + '@types/hoist-non-react-statics': 3.3.1 + core-js: 3.21.1 + hoist-non-react-statics: 3.3.2 + i18next: 21.6.12 + i18next-fs-backend: 1.1.4 + next: 12.1.0_b8b2418670651b634ff05a91b7cd94fe + react: 17.0.2 + react-i18next: 11.15.5_2c37a602a29bb6bd53f3de707a8cfcc5 + transitivePeerDependencies: + - react-dom + - react-native + dev: false + + /next/12.1.0_b8b2418670651b634ff05a91b7cd94fe: + resolution: {integrity: sha512-s885kWvnIlxsUFHq9UGyIyLiuD0G3BUC/xrH0CEnH5lHEWkwQcHOORgbDF0hbrW9vr/7am4ETfX4A7M6DjrE7Q==} + engines: {node: '>=12.22.0'} + hasBin: true + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^6.0.0 || ^7.0.0 + react: ^17.0.2 || ^18.0.0-0 + react-dom: ^17.0.2 || ^18.0.0-0 + sass: ^1.3.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + dependencies: + '@next/env': 12.1.0 + caniuse-lite: 1.0.30001312 + postcss: 8.4.5 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + sass: 1.49.9 + styled-jsx: 5.0.0_@babel+core@7.17.5+react@17.0.2 + use-subscription: 1.5.1_react@17.0.2 + optionalDependencies: + '@next/swc-android-arm64': 12.1.0 + '@next/swc-darwin-arm64': 12.1.0 + '@next/swc-darwin-x64': 12.1.0 + '@next/swc-linux-arm-gnueabihf': 12.1.0 + '@next/swc-linux-arm64-gnu': 12.1.0 + '@next/swc-linux-arm64-musl': 12.1.0 + '@next/swc-linux-x64-gnu': 12.1.0 + '@next/swc-linux-x64-musl': 12.1.0 + '@next/swc-win32-arm64-msvc': 12.1.0 + '@next/swc-win32-ia32-msvc': 12.1.0 + '@next/swc-win32-x64-msvc': 12.1.0 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false + + /node-addon-api/3.2.1: + resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} + + /node-fetch/2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + + /node-forge/1.2.1: + resolution: {integrity: sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==} + engines: {node: '>= 6.13.0'} + + /node-gyp-build/4.3.0: + resolution: {integrity: sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==} + hasBin: true + + /node-int64/0.4.0: + resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=} + + /node-machine-id/1.1.12: + resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} + dev: true + + /node-releases/2.0.2: + resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==} + + /node-stream-zip/1.15.0: + resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} + engines: {node: '>=0.12.0'} + dev: false + + /nodemailer/6.7.2: + resolution: {integrity: sha512-Dz7zVwlef4k5R71fdmxwR8Q39fiboGbu3xgswkzGwczUfjp873rVxt1O46+Fh0j1ORnAC6L9+heI8uUpO6DT7Q==} + engines: {node: '>=6.0.0'} + dev: false + + /nopt/5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: false + + /normalize-package-data/2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.0 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: false + + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + /normalize-range/0.1.2: + resolution: {integrity: sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=} + engines: {node: '>=0.10.0'} + + /normalize-url/6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + /npm-run-path/4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + + /npmlog/4.1.2: + resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==} + dependencies: + are-we-there-yet: 1.1.7 + console-control-strings: 1.1.0 + gauge: 2.7.4 + set-blocking: 2.0.0 + + /npmlog/5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + dev: false + + /nth-check/2.0.1: + resolution: {integrity: sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==} + dependencies: + boolbase: 1.0.0 + + /number-is-nan/1.0.1: + resolution: {integrity: sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=} + engines: {node: '>=0.10.0'} + + /nwsapi/2.2.0: + resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==} + + /nx/13.8.3: + resolution: {integrity: sha512-Y0f7xEU1r3NzxfbLiWSgRvH9sk2O4yAW4FLYMb9Bmrw5n/ZUtsofpaRuZAHJlNobhzEv0yXcGSyMYUl8NTQJlw==} + hasBin: true + dependencies: + '@nrwl/cli': 13.8.3 + + /object-assign/4.1.1: + resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} + engines: {node: '>=0.10.0'} + + /object-hash/2.2.0: + resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} + engines: {node: '>= 6'} + dev: false + + /object-hash/3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: false + + /object-inspect/1.12.0: + resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} + + /object-is/1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + + /object-keys/1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + /object.assign/4.1.2: + resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + /object.entries/1.1.5: + resolution: {integrity: sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.19.1 + + /object.fromentries/2.0.5: + resolution: {integrity: sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.19.1 + + /object.hasown/1.1.0: + resolution: {integrity: sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==} + dependencies: + define-properties: 1.1.3 + es-abstract: 1.19.1 + + /object.values/1.1.5: + resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.19.1 + + /oblivious-set/1.0.0: + resolution: {integrity: sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==} + dev: false + + /obuf/1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + + /on-finished/2.3.0: + resolution: {integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + + /on-finished/2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: false + + /on-headers/1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + /once/1.4.0: + resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} + dependencies: + wrappy: 1.0.2 + + /onetime/5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + + /open/8.4.0: + resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + /opener/1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + + /optional/0.1.4: + resolution: {integrity: sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw==} + dev: true + + /optionator/0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + 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.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + + /ora/5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /os-tmpdir/1.0.2: + resolution: {integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=} + engines: {node: '>=0.10.0'} + dev: false + + /ospath/1.2.2: + resolution: {integrity: sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=} + dev: true + + /outdent/0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + dev: false + + /p-filter/2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} + dependencies: + p-map: 2.1.0 + dev: false + + /p-finally/1.0.0: + resolution: {integrity: sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=} + engines: {node: '>=4'} + + /p-limit/1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + dependencies: + p-try: 1.0.0 + + /p-limit/2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + + /p-limit/3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + + /p-locate/2.0.0: + resolution: {integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=} + engines: {node: '>=4'} + dependencies: + p-limit: 1.3.0 + + /p-locate/4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + + /p-locate/5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + + /p-map/2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + dev: false + + /p-map/4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + + /p-queue/6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + + /p-retry/4.6.1: + resolution: {integrity: sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==} + engines: {node: '>=8'} + dependencies: + '@types/retry': 0.12.1 + retry: 0.13.1 + + /p-timeout/3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + dependencies: + p-finally: 1.0.0 + + /p-try/1.0.0: + resolution: {integrity: sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=} + engines: {node: '>=4'} + + /p-try/2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + /packet-reader/1.0.0: + resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} + dev: false + + /pako/1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: false + + /parent-module/1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + + /parse-json/5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.16.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + /parse5-html-rewriting-stream/6.0.1: + resolution: {integrity: sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==} + dependencies: + parse5: 6.0.1 + parse5-sax-parser: 6.0.1 + + /parse5-htmlparser2-tree-adapter/6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + dependencies: + parse5: 6.0.1 + dev: false + + /parse5-sax-parser/6.0.1: + resolution: {integrity: sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==} + dependencies: + parse5: 6.0.1 + + /parse5/4.0.0: + resolution: {integrity: sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==} + + /parse5/5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + dev: false + + /parse5/6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + /parseurl/1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + /passport-jwt/4.0.0: + resolution: {integrity: sha512-BwC0n2GP/1hMVjR4QpnvqA61TxenUMlmfNjYNgK0ZAs0HK4SOQkHcSv4L328blNTLtHq7DbmvyNJiH+bn6C5Mg==} + dependencies: + jsonwebtoken: 8.5.1 + passport-strategy: 1.0.0 + dev: false + + /passport-local/1.0.0: + resolution: {integrity: sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4=} + engines: {node: '>= 0.4.0'} + dependencies: + passport-strategy: 1.0.0 + dev: false + + /passport-strategy/1.0.0: + resolution: {integrity: sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ=} + engines: {node: '>= 0.4.0'} + dev: false + + /passport/0.5.2: + resolution: {integrity: sha512-w9n/Ot5I7orGD4y+7V3EFJCQEznE5RxHamUxcqLT2QoJY0f2JdN8GyHonYFvN0Vz+L6lUJfVhrk2aZz2LbuREw==} + engines: {node: '>= 0.4.0'} + dependencies: + passport-strategy: 1.0.0 + pause: 0.0.1 + dev: false + + /path-exists/3.0.0: + resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} + engines: {node: '>=4'} + + /path-exists/4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + /path-is-absolute/1.0.1: + resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} + engines: {node: '>=0.10.0'} + + /path-is-network-drive/1.0.13: + resolution: {integrity: sha512-Hg74mRN6mmXV+gTm3INjFK40ncAmC/Lo4qoQaSZ+GT3hZzlKdWQSqAjqyPeW0SvObP2W073WyYEBWY9d3wOm3A==} + dependencies: + tslib: 2.3.1 + + /path-key/3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-strip-sep/1.0.10: + resolution: {integrity: sha512-JpCy+8LAJQQTO1bQsb/84s1g+/Stm3h39aOpPRBQ/paMUGVPPZChLTOTKHoaCkc/6sKuF7yVsnq5Pe1S6xQGcA==} + dependencies: + tslib: 2.3.1 + + /path-to-regexp/0.1.7: + resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=} + + /path-to-regexp/3.2.0: + resolution: {integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==} + dev: false + + /path-type/4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + /pause/0.0.1: + resolution: {integrity: sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=} + dev: false + + /pdf-lib/1.17.1: + resolution: {integrity: sha512-V/mpyJAoTsN4cnP31vc0wfNA1+p20evqqnap0KLoRUN0Yk/p3wN52DOEsL4oBFcLdb76hlpKPtzJIgo67j/XLw==} + dependencies: + '@pdf-lib/standard-fonts': 1.0.0 + '@pdf-lib/upng': 1.0.1 + pako: 1.0.11 + tslib: 1.14.1 + dev: false + + /pend/1.2.0: + resolution: {integrity: sha1-elfrVQpng/kRUzH89GY9XI4AelA=} + dev: true + + /performance-now/2.1.0: + resolution: {integrity: sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=} + dev: true + + /pg-connection-string/2.5.0: + resolution: {integrity: sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==} + dev: false + + /pg-int8/1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + dev: false + + /pg-pool/3.5.1_pg@8.7.3: + resolution: {integrity: sha512-6iCR0wVrro6OOHFsyavV+i6KYL4lVNyYAB9RD18w66xSzN+d8b66HiwuP30Gp1SH5O9T82fckkzsRjlrhD0ioQ==} + peerDependencies: + pg: '>=8.0' + dependencies: + pg: 8.7.3 + dev: false + + /pg-protocol/1.5.0: + resolution: {integrity: sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==} + dev: false + + /pg-types/2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + dev: false + + /pg/8.7.3: + resolution: {integrity: sha512-HPmH4GH4H3AOprDJOazoIcpI49XFsHCe8xlrjHkWiapdbHK+HLtbm/GQzXYAZwmPju/kzKhjaSfMACG+8cgJcw==} + engines: {node: '>= 8.0.0'} + peerDependencies: + pg-native: '>=2.0.0' + peerDependenciesMeta: + pg-native: + optional: true + dependencies: + buffer-writer: 2.0.0 + packet-reader: 1.0.0 + pg-connection-string: 2.5.0 + pg-pool: 3.5.1_pg@8.7.3 + pg-protocol: 1.5.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + dev: false + + /pgpass/1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + dependencies: + split2: 4.1.0 + dev: false + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pify/2.3.0: + resolution: {integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw=} + engines: {node: '>=0.10.0'} + + /pify/4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + /pify/5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} + + /pirates/4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} + + /pkg-dir/4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + + /pkg-dir/5.0.0: + resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} + engines: {node: '>=10'} + dependencies: + find-up: 5.0.0 + + /playwright-core/1.19.2: + resolution: {integrity: sha512-OsL3sJZIo1UxKNWSP7zW7sk3FyUGG06YRHxHeBw51eIOxTCQRx5t+hXd0cvXashN2CHnd3hIZTs2aKa/im4hZQ==} + engines: {node: '>=12'} + hasBin: true + dependencies: + commander: 8.3.0 + debug: 4.3.3 + extract-zip: 2.0.1 + https-proxy-agent: 5.0.0 + jpeg-js: 0.4.3 + mime: 3.0.0 + pngjs: 6.0.0 + progress: 2.0.3 + proper-lockfile: 4.1.2 + proxy-from-env: 1.1.0 + rimraf: 3.0.2 + socks-proxy-agent: 6.1.1 + stack-utils: 2.0.5 + ws: 8.4.2 + yauzl: 2.10.0 + yazl: 2.5.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /playwright/1.19.2: + resolution: {integrity: sha512-2JmGWr/Iw/Uu27bZULeHgjn8doNrRVxIYdhspMuMlfKNpzwAe/sfm7wH8uey6jiZxnPL4bC5V4ACQcF4dAGWnw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + dependencies: + playwright-core: 1.19.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /pluralize/8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true + + /pngjs/6.0.0: + resolution: {integrity: sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==} + engines: {node: '>=12.13.0'} + dev: true + + /portfinder/1.0.28: + resolution: {integrity: sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==} + engines: {node: '>= 0.12.0'} + dependencies: + async: 2.6.3 + debug: 3.2.7 + mkdirp: 0.5.5 + + /postcss-calc/8.2.4_postcss@8.4.7: + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + dependencies: + postcss: 8.4.7 + postcss-selector-parser: 6.0.9 + postcss-value-parser: 4.2.0 + + /postcss-colormin/5.3.0_postcss@8.4.7: + resolution: {integrity: sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.19.3 + caniuse-api: 3.0.0 + colord: 2.9.2 + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + + /postcss-convert-values/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + + /postcss-discard-comments/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-L0IKF4jAshRyn03SkEO6ar/Ipz2oLywVbg2THf2EqqdNkBwmVMxuTR/RoAltOw4piiaLt3gCAdrbAqmTBInmhg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + + /postcss-discard-duplicates/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + + /postcss-discard-empty/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + + /postcss-discard-overridden/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + + /postcss-import/14.0.2_postcss@8.4.7: + resolution: {integrity: sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.0 + + /postcss-js/4.0.0_postcss@8.4.7: + resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.3.3 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.7 + dev: false + + /postcss-load-config/3.1.3: + resolution: {integrity: sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw==} + engines: {node: '>= 10'} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + dependencies: + lilconfig: 2.0.4 + yaml: 1.10.2 + dev: false + + /postcss-load-config/3.1.3_ts-node@9.1.1: + resolution: {integrity: sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw==} + engines: {node: '>= 10'} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + dependencies: + lilconfig: 2.0.4 + ts-node: 9.1.1_typescript@4.5.5 + yaml: 1.10.2 + + /postcss-loader/6.2.1_postcss@8.4.7+webpack@5.69.1: + resolution: {integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + dependencies: + cosmiconfig: 7.0.1 + klona: 2.0.5 + postcss: 8.4.7 + semver: 7.3.5 + webpack: 5.69.1 + + /postcss-merge-longhand/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-Gr46srN2tsLD8fudKYoHO56RG0BLQ2nsBRnSZGY04eNBPwTeWa9KeHrbL3tOLAHyB2aliikycPH2TMJG1U+W6g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.0_postcss@8.4.7 + + /postcss-merge-rules/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-NecukEJovQ0mG7h7xV8wbYAkXGTO3MPKnXvuiXzOKcxoOodfTTKYjeo8TMhAswlSkjcPIBlnKbSFcTuVSDaPyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.19.3 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0_postcss@8.4.7 + postcss: 8.4.7 + postcss-selector-parser: 6.0.9 + + /postcss-minify-font-values/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + + /postcss-minify-gradients/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-J/TMLklkONn3LuL8wCwfwU8zKC1hpS6VcxFkNUNjmVt53uKqrrykR3ov11mdUYyqVMEx67slMce0tE14cE4DTg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + colord: 2.9.2 + cssnano-utils: 3.1.0_postcss@8.4.7 + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + + /postcss-minify-params/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-q67dcts4Hct6x8+JmhBgctHkbvUsqGIg2IItenjE63iZXMbhjr7AlVZkNnKtIGt/1Wsv7p/7YzeSII6Q+KPXRg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.19.3 + cssnano-utils: 3.1.0_postcss@8.4.7 + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + + /postcss-minify-selectors/5.2.0_postcss@8.4.7: + resolution: {integrity: sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + postcss-selector-parser: 6.0.9 + + /postcss-modules-extract-imports/3.0.0_postcss@8.4.7: + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.7 + + /postcss-modules-local-by-default/4.0.0_postcss@8.4.7: + resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0_postcss@8.4.7 + postcss: 8.4.7 + postcss-selector-parser: 6.0.9 + postcss-value-parser: 4.2.0 + + /postcss-modules-scope/3.0.0_postcss@8.4.7: + resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.7 + postcss-selector-parser: 6.0.9 + + /postcss-modules-values/4.0.0_postcss@8.4.7: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0_postcss@8.4.7 + postcss: 8.4.7 + + /postcss-modules/4.3.1_postcss@8.4.7: + resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} + peerDependencies: + postcss: ^8.0.0 + dependencies: + generic-names: 4.0.0 + icss-replace-symbols: 1.1.0 + lodash.camelcase: 4.3.0 + postcss: 8.4.7 + postcss-modules-extract-imports: 3.0.0_postcss@8.4.7 + postcss-modules-local-by-default: 4.0.0_postcss@8.4.7 + postcss-modules-scope: 3.0.0_postcss@8.4.7 + postcss-modules-values: 4.0.0_postcss@8.4.7 + string-hash: 1.1.3 + + /postcss-nested/5.0.6_postcss@8.4.7: + resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.7 + postcss-selector-parser: 6.0.9 + dev: false + + /postcss-normalize-charset/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + + /postcss-normalize-display-values/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + + /postcss-normalize-positions/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + + /postcss-normalize-repeat-style/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + + /postcss-normalize-string/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + + /postcss-normalize-timing-functions/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + + /postcss-normalize-unicode/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.19.3 + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + + /postcss-normalize-url/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + + /postcss-normalize-whitespace/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-7O1FanKaJkpWFyCghFzIkLhehujV/frGkdofGLwhg5upbLyGsSfiTcZAdSzoPsSUgyPCkBkNMeWR8yVgPdQybg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + + /postcss-ordered-values/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-wU4Z4D4uOIH+BUKkYid36gGDJNQtkVJT7Twv8qH6UyfttbbJWyw4/xIPuVEkkCtQLAJ0EdsNSh8dlvqkXb49TA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.1.0_postcss@8.4.7 + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + + /postcss-reduce-initial/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.19.3 + caniuse-api: 3.0.0 + postcss: 8.4.7 + + /postcss-reduce-transforms/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + + /postcss-selector-parser/6.0.9: + resolution: {integrity: sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + /postcss-svgo/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + + /postcss-unique-selectors/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-LmUhgGobtpeVJJHuogzjLRwJlN7VH+BL5c9GKMVJSS/ejoyePZkXvNsYUtk//F6vKOGK86gfRS0xH7fXQSDtvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.7 + postcss-selector-parser: 6.0.9 + + /postcss-value-parser/4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + /postcss/8.4.5: + resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.1 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + + /postcss/8.4.7: + resolution: {integrity: sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.1 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /postgres-array/2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + dev: false + + /postgres-bytea/1.0.0: + resolution: {integrity: sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=} + engines: {node: '>=0.10.0'} + dev: false + + /postgres-date/1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + dev: false + + /postgres-interval/1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + dependencies: + xtend: 4.0.2 + dev: false + + /preferred-pm/3.0.3: + resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} + engines: {node: '>=10'} + dependencies: + find-up: 5.0.0 + find-yarn-workspace-root2: 1.2.16 + path-exists: 4.0.0 + which-pm: 2.0.0 + dev: false + + /prelude-ls/1.1.2: + resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} + engines: {node: '>= 0.8.0'} + + /prelude-ls/1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-plugin-tailwindcss/0.1.8_prettier@2.5.1: + resolution: {integrity: sha512-hwarSBCswAXa+kqYtaAkFr3Vop9o04WOyZs0qo3NyvW8L7f1rif61wRyq0+ArmVThOuRBcJF5hjGXYk86cwemg==} + engines: {node: '>=12.17.0'} + peerDependencies: + prettier: '>=2.2.0' + dependencies: + prettier: 2.5.1 + dev: true + + /prettier/1.19.1: + resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /prettier/2.5.1: + resolution: {integrity: sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /pretty-bytes/5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + dev: true + + /pretty-format/27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + /pretty-hrtime/1.0.3: + resolution: {integrity: sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=} + engines: {node: '>= 0.8'} + + /process-nextick-args/2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + /progress/2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true + + /promise.series/0.2.0: + resolution: {integrity: sha1-LMfr6Vn8OmYZwEq029yeRS2GS70=} + engines: {node: '>=0.12'} + + /prompts/2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /prop-types/15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + /proper-lockfile/4.1.2: + resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} + dependencies: + graceful-fs: 4.2.9 + retry: 0.12.0 + signal-exit: 3.0.7 + dev: true + + /property-information/6.1.1: + resolution: {integrity: sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==} + dev: false + + /proxy-addr/2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + /proxy-from-env/1.0.0: + resolution: {integrity: sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=} + dev: true + + /proxy-from-env/1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: true + + /prr/1.0.1: + resolution: {integrity: sha1-0/wRS6BplaRexok/SEzrHXj19HY=} + optional: true + + /pseudomap/1.0.2: + resolution: {integrity: sha1-8FKijacOYYkX7wqKw0wa5aaChrM=} + dev: false + + /psl/1.8.0: + resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} + + /pump/3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /punycode/2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} + + /qs/6.10.3: + resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + + /qs/6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + dev: true + + /qs/6.9.7: + resolution: {integrity: sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==} + engines: {node: '>=0.6'} + + /queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + /quick-lru/4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + dev: false + + /quick-lru/5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: false + + /raf-schd/4.0.3: + resolution: {integrity: sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==} + dev: false + + /randombytes/2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + + /range-parser/1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + /raw-body/2.4.3: + resolution: {integrity: sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 1.8.1 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + /raw-loader/4.0.2_webpack@5.69.1: + resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + loader-utils: 2.0.2 + schema-utils: 3.1.1 + webpack: 5.69.1 + + /react-beautiful-dnd/13.1.0_react-dom@17.0.2+react@17.0.2: + resolution: {integrity: sha512-aGvblPZTJowOWUNiwd6tNfEpgkX5OxmpqxHKNW/4VmvZTNTbeiq7bA3bn5T+QSF2uibXB0D1DmJsb1aC/+3cUA==} + peerDependencies: + react: ^16.8.5 || ^17.0.0 + react-dom: ^16.8.5 || ^17.0.0 + dependencies: + '@babel/runtime': 7.17.2 + css-box-model: 1.2.1 + memoize-one: 5.2.1 + raf-schd: 4.0.3 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-redux: 7.2.6_react-dom@17.0.2+react@17.0.2 + redux: 4.1.2 + use-memo-one: 1.1.2_react@17.0.2 + transitivePeerDependencies: + - react-native + dev: false + + /react-colorful/5.5.1_react-dom@17.0.2+react@17.0.2: + resolution: {integrity: sha512-M1TJH2X3RXEt12sWkpa6hLc/bbYS0H6F4rIqjQZ+RxNBstpY67d9TrFXtqdZwhpmBXcCwEi7stKqFue3ZRkiOg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + dev: false + + /react-dnd-html5-backend/15.1.2: + resolution: {integrity: sha512-mem9QbutUF+aA2YC1y47G3ECjnYV/sCYKSnu5Jd7cbg3fLMPAwbnTf/JayYdnCH5l3eg9akD9dQt+cD0UdF8QQ==} + dependencies: + dnd-core: 15.1.1 + dev: false + + /react-dnd/15.1.1_7080516a7860abf4e105335dcf1f2463: + resolution: {integrity: sha512-QLrHtPU08U4c5zop0ANeqrHXaQw2EWLMn8DQoN6/e4eSN/UbB84P49/80Qg0MEF29VLB5vikSoiFh9N8ASNmpQ==} + peerDependencies: + '@types/hoist-non-react-statics': '>= 3.3.1' + '@types/node': '>= 12' + '@types/react': '>= 16' + react: '>= 16.14' + peerDependenciesMeta: + '@types/hoist-non-react-statics': + optional: true + '@types/node': + optional: true + '@types/react': + optional: true + dependencies: + '@react-dnd/invariant': 3.0.0 + '@react-dnd/shallowequal': 3.0.0 + '@types/node': 17.0.21 + '@types/react': 17.0.39 + dnd-core: 15.1.1 + fast-deep-equal: 3.1.3 + hoist-non-react-statics: 3.3.2 + react: 17.0.2 + dev: false + + /react-dom/17.0.2_react@17.0.2: + resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} + peerDependencies: + react: 17.0.2 + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react: 17.0.2 + scheduler: 0.20.2 + dev: false + + /react-error-boundary/3.1.4_react@17.0.2: + resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + react: '>=16.13.1' + dependencies: + '@babel/runtime': 7.17.2 + react: 17.0.2 + dev: true + + /react-google-login/5.2.2_react-dom@17.0.2+react@17.0.2: + resolution: {integrity: sha512-JUngfvaSMcOuV0lFff7+SzJ2qviuNMQdqlsDJkUM145xkGPVIfqWXq9Ui+2Dr6jdJWH5KYdynz9+4CzKjI5u6g==} + peerDependencies: + react: ^16 || ^17 + react-dom: ^16 || ^17 + dependencies: + '@types/react': 17.0.39 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + dev: false + + /react-hook-form/7.27.1_react@17.0.2: + resolution: {integrity: sha512-N3a7A6zIQ8DJeThisVZGtOUabTbJw+7DHJidmB9w8m3chckv2ZWKb5MHps9d2pPJqmCDoWe53Bos56bYmJms5w==} + engines: {node: '>=12.22.0'} + peerDependencies: + react: ^16.8.0 || ^17 + dependencies: + react: 17.0.2 + dev: false + + /react-hot-toast/2.2.0_cf9e547307deef37c34d2702bfa94a69: + resolution: {integrity: sha512-248rXw13uhf/6TNDVzagX+y7R8J183rp7MwUMNkcrBRyHj/jWOggfXTGlM8zAOuh701WyVW+eUaWG2LeSufX9g==} + engines: {node: '>=10'} + peerDependencies: + react: '>=16' + react-dom: '>=16' + dependencies: + goober: 2.1.8_csstype@3.0.10 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + transitivePeerDependencies: + - csstype + dev: false + + /react-hotkeys-hook/3.4.4_react-dom@17.0.2+react@17.0.2: + resolution: {integrity: sha512-vaORq07rWgmuF3owWRhgFV/3VL8/l2q9lz0WyVEddJnWTtKW+AOgU5YgYKuwN6h6h7bCcLG3MFsJIjCrM/5DvQ==} + peerDependencies: + react: '>=16.8.1' + react-dom: '>=16.8.1' + dependencies: + hotkeys-js: 3.8.7 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + dev: false + + /react-i18next/11.15.5_2c37a602a29bb6bd53f3de707a8cfcc5: + resolution: {integrity: sha512-vBWuVEQgrhZrGKpyv8FmJ7Zs5jRQWl794Tte7yzJ0okZqqi3jd6j2pLYNg441WcREsbIOvWdiDXbY7W6E93p1A==} + peerDependencies: + i18next: '>= 19.0.0' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@babel/runtime': 7.17.2 + html-escaper: 2.0.2 + html-parse-stringify: 3.0.1 + i18next: 21.6.12 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + dev: false + + /react-icons/4.3.1_react@17.0.2: + resolution: {integrity: sha512-cB10MXLTs3gVuXimblAdI71jrJx8njrJZmNMEMC+sQu5B/BIOmlsAjskdqpn81y8UBVEGuHODd7/ci5DvoSzTQ==} + peerDependencies: + react: '*' + dependencies: + react: 17.0.2 + dev: false + + /react-is/16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + /react-is/17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + /react-markdown/8.0.0_a0c521d4794c7ad97f5f4c1c4a7d5818: + resolution: {integrity: sha512-qbrWpLny6Ef2xHqnYqtot948LXP+4FtC+MWIuaN1kvSnowM+r1qEeEHpSaU0TDBOisQuj+Qe6eFY15cNL3gLAw==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + dependencies: + '@types/hast': 2.3.4 + '@types/react': 17.0.39 + '@types/unist': 2.0.6 + comma-separated-tokens: 2.0.2 + hast-util-whitespace: 2.0.0 + prop-types: 15.8.1 + property-information: 6.1.1 + react: 17.0.2 + react-is: 17.0.2 + remark-parse: 10.0.1 + remark-rehype: 10.1.0 + space-separated-tokens: 2.0.1 + style-to-object: 0.3.0 + unified: 10.1.1 + unist-util-visit: 4.1.0 + vfile: 5.3.0 + transitivePeerDependencies: + - supports-color + dev: false + + /react-query/3.34.16_react-dom@17.0.2+react@17.0.2: + resolution: {integrity: sha512-7FvBvjgEM4YQ8nPfmAr+lJfbW95uyW/TVjFoi2GwCkF33/S8ajx45tuPHPFGWs4qYwPy1mzwxD4IQfpUDrefNQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@babel/runtime': 7.17.2 + broadcast-channel: 3.7.0 + match-sorter: 6.3.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + dev: false + + /react-redux/7.2.6_react-dom@17.0.2+react@17.0.2: + resolution: {integrity: sha512-10RPdsz0UUrRL1NZE0ejTkucnclYSgXp5q+tB5SWx2qeG2ZJQJyymgAhwKy73yiL/13btfB6fPr+rgbMAaZIAQ==} + peerDependencies: + react: ^16.8.3 || ^17 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@babel/runtime': 7.17.2 + '@types/react-redux': 7.1.23 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-is: 17.0.2 + dev: false + + /react-refresh/0.10.0: + resolution: {integrity: sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==} + engines: {node: '>=0.10.0'} + + /react-shallow-renderer/16.14.1_react@17.0.2: + resolution: {integrity: sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 + dependencies: + object-assign: 4.1.1 + react: 17.0.2 + react-is: 17.0.2 + dev: true + + /react-test-renderer/17.0.2_react@17.0.2: + resolution: {integrity: sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==} + peerDependencies: + react: 17.0.2 + dependencies: + object-assign: 4.1.1 + react: 17.0.2 + react-is: 17.0.2 + react-shallow-renderer: 16.14.1_react@17.0.2 + scheduler: 0.20.2 + dev: true + + /react-transition-group/4.4.2_react-dom@17.0.2+react@17.0.2: + resolution: {integrity: sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + dependencies: + '@babel/runtime': 7.17.2 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + dev: false + + /react-zoom-pan-pinch/2.1.3_react-dom@17.0.2+react@17.0.2: + resolution: {integrity: sha512-a5AChOWhjo0RmxsNZXGQIlNh3e3nLU6m4V6M+6dlbPNk5d+MtMxgKWyA5zpR06Lp3OZkZVF9nR8JeWSvKwck9g==} + engines: {node: '>=8', npm: '>=5'} + peerDependencies: + react: ^17.0.2 + react-dom: ^17.0.2 + dependencies: + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + dev: false + + /react/17.0.2: + resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + dev: false + + /read-cache/1.0.0: + resolution: {integrity: sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=} + dependencies: + pify: 2.3.0 + + /read-pkg-up/7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: false + + /read-pkg/5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: false + + /read-yaml-file/1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + dependencies: + graceful-fs: 4.2.9 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + dev: false + + /readable-stream/1.1.14: + resolution: {integrity: sha1-fPTFTvZI44EwhMY23SB54WbAgdk=} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + dev: false + + /readable-stream/2.3.7: + resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + /readable-stream/3.6.0: + resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + + /redent/3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: false + + /redux-persist/6.0.0_redux@4.1.2: + resolution: {integrity: sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==} + peerDependencies: + redux: '>4.0.0' + dependencies: + redux: 4.1.2 + dev: false + + /redux-saga/1.1.3: + resolution: {integrity: sha512-RkSn/z0mwaSa5/xH/hQLo8gNf4tlvT18qXDNvedihLcfzh+jMchDgaariQoehCpgRltEm4zHKJyINEz6aqswTw==} + dependencies: + '@redux-saga/core': 1.1.3 + dev: false + + /redux-thunk/2.4.1_redux@4.1.2: + resolution: {integrity: sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==} + peerDependencies: + redux: ^4 + dependencies: + redux: 4.1.2 + dev: false + + /redux/4.1.2: + resolution: {integrity: sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==} + dependencies: + '@babel/runtime': 7.17.2 + dev: false + + /reflect-metadata/0.1.13: + resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} + dev: false + + /regenerate-unicode-properties/10.0.1: + resolution: {integrity: sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + + /regenerate/1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + /regenerator-runtime/0.13.9: + resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} + + /regenerator-transform/0.14.5: + resolution: {integrity: sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==} + dependencies: + '@babel/runtime': 7.17.2 + + /regexp.prototype.flags/1.4.1: + resolution: {integrity: sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + + /regexpp/3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + + /regexpu-core/5.0.1: + resolution: {integrity: sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.0.1 + regjsgen: 0.6.0 + regjsparser: 0.8.4 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.0.0 + + /regjsgen/0.6.0: + resolution: {integrity: sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==} + + /regjsparser/0.8.4: + resolution: {integrity: sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==} + hasBin: true + dependencies: + jsesc: 0.5.0 + + /remark-gfm/3.0.1: + resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-gfm: 2.0.0 + micromark-extension-gfm: 2.0.1 + unified: 10.1.1 + dev: false + + /remark-parse/10.0.1: + resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-from-markdown: 1.2.0 + unified: 10.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-rehype/10.1.0: + resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} + dependencies: + '@types/hast': 2.3.4 + '@types/mdast': 3.0.10 + mdast-util-to-hast: 12.1.1 + unified: 10.1.1 + dev: false + + /remove-accents/0.4.2: + resolution: {integrity: sha1-CkPTqq4egNuRngeuJUsoXZ4ce7U=} + dev: false + + /request-progress/3.0.0: + resolution: {integrity: sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=} + dependencies: + throttleit: 1.0.0 + dev: true + + /require-directory/2.1.1: + resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} + engines: {node: '>=0.10.0'} + + /require-from-string/2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + /require-main-filename/2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + /requires-port/1.0.0: + resolution: {integrity: sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=} + + /reselect/4.1.5: + resolution: {integrity: sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ==} + dev: false + + /resolve-cwd/3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from/4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + /resolve-from/5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + /resolve.exports/1.1.0: + resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} + engines: {node: '>=10'} + + /resolve/1.22.0: + resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} + hasBin: true + dependencies: + is-core-module: 2.8.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /resolve/2.0.0-next.3: + resolution: {integrity: sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==} + dependencies: + is-core-module: 2.8.1 + path-parse: 1.0.7 + + /restore-cursor/3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + /retry/0.12.0: + resolution: {integrity: sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=} + engines: {node: '>= 4'} + dev: true + + /retry/0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + /reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + /rfdc/1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: true + + /rifm/0.12.1_react@17.0.2: + resolution: {integrity: sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==} + peerDependencies: + react: '>=16.8' + dependencies: + react: 17.0.2 + dev: false + + /rimraf/3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.0 + + /rollup-plugin-copy/3.4.0: + resolution: {integrity: sha512-rGUmYYsYsceRJRqLVlE9FivJMxJ7X6jDlP79fmFkL8sJs7VVMSVyA2yfyL+PGyO/vJs4A87hwhgVfz61njI+uQ==} + engines: {node: '>=8.3'} + dependencies: + '@types/fs-extra': 8.1.2 + colorette: 1.4.0 + fs-extra: 8.1.0 + globby: 10.0.1 + is-plain-object: 3.0.1 + + /rollup-plugin-peer-deps-external/2.2.4_rollup@2.68.0: + resolution: {integrity: sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g==} + peerDependencies: + rollup: '*' + dependencies: + rollup: 2.68.0 + + /rollup-plugin-postcss/4.0.2_postcss@8.4.7+ts-node@9.1.1: + resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==} + engines: {node: '>=10'} + peerDependencies: + postcss: 8.x + dependencies: + chalk: 4.1.2 + concat-with-sourcemaps: 1.1.0 + cssnano: 5.1.0_postcss@8.4.7 + import-cwd: 3.0.0 + p-queue: 6.6.2 + pify: 5.0.0 + postcss: 8.4.7 + postcss-load-config: 3.1.3_ts-node@9.1.1 + postcss-modules: 4.3.1_postcss@8.4.7 + promise.series: 0.2.0 + resolve: 1.22.0 + rollup-pluginutils: 2.8.2 + safe-identifier: 0.4.2 + style-inject: 0.3.0 + transitivePeerDependencies: + - ts-node + + /rollup-plugin-typescript2/0.31.2_47929e0ef4b9f0e1df65701c23a02bee: + resolution: {integrity: sha512-hRwEYR1C8xDGVVMFJQdEVnNAeWRvpaY97g5mp3IeLnzhNXzSVq78Ye/BJ9PAaUfN4DXa/uDnqerifMOaMFY54Q==} + peerDependencies: + rollup: '>=1.26.3' + typescript: '>=2.4.0' + dependencies: + '@rollup/pluginutils': 4.1.2 + '@yarn-tool/resolve-package': 1.0.45_@types+node@17.0.21 + find-cache-dir: 3.3.2 + fs-extra: 10.0.1 + resolve: 1.22.0 + rollup: 2.68.0 + tslib: 2.3.1 + typescript: 4.5.5 + transitivePeerDependencies: + - '@types/node' + + /rollup-pluginutils/2.8.2: + resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} + dependencies: + estree-walker: 0.6.1 + + /rollup/2.68.0: + resolution: {integrity: sha512-XrMKOYK7oQcTio4wyTz466mucnd8LzkiZLozZ4Rz0zQD+HeX4nUK4B8GrTX/2EvN2/vBF/i2WnaXboPxo0JylA==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + + /run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + + /rxjs-for-await/0.0.2_rxjs@6.5.5: + resolution: {integrity: sha512-IJ8R/ZCFMHOcDIqoABs82jal00VrZx8Xkgfe7TOKoaRPAW5nH/VFlG23bXpeGdrmtqI9UobFPgUKgCuFc7Lncw==} + peerDependencies: + rxjs: ^6.0.0 + dependencies: + rxjs: 6.5.5 + + /rxjs/6.5.5: + resolution: {integrity: sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==} + engines: {npm: '>=2.0.0'} + dependencies: + tslib: 1.14.1 + + /rxjs/6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + dependencies: + tslib: 1.14.1 + + /rxjs/7.5.4: + resolution: {integrity: sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==} + dependencies: + tslib: 2.3.1 + + /sade/1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: false + + /safe-buffer/5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + /safe-buffer/5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + /safe-identifier/0.4.2: + resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==} + + /safer-buffer/2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + /sass-loader/12.6.0_sass@1.49.9+webpack@5.69.1: + resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==} + engines: {node: '>= 12.13.0'} + 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 + dependencies: + klona: 2.0.5 + neo-async: 2.6.2 + sass: 1.49.9 + webpack: 5.69.1 + + /sass/1.49.9: + resolution: {integrity: sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==} + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + immutable: 4.0.0 + source-map-js: 1.0.2 + + /sax/1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + + /saxes/5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} + dependencies: + xmlchars: 2.2.0 + + /scheduler/0.20.2: + resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + + /schema-utils/2.7.0: + resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} + engines: {node: '>= 8.9.0'} + dependencies: + '@types/json-schema': 7.0.9 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + + /schema-utils/2.7.1: + resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} + engines: {node: '>= 8.9.0'} + dependencies: + '@types/json-schema': 7.0.9 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + + /schema-utils/3.1.1: + resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.9 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + + /schema-utils/4.0.0: + resolution: {integrity: sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==} + engines: {node: '>= 12.13.0'} + dependencies: + '@types/json-schema': 7.0.9 + ajv: 8.10.0 + ajv-formats: 2.1.1 + ajv-keywords: 5.1.0_ajv@8.10.0 + + /secure-compare/3.0.1: + resolution: {integrity: sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=} + + /select-hose/2.0.0: + resolution: {integrity: sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=} + + /selfsigned/2.0.0: + resolution: {integrity: sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==} + engines: {node: '>=10'} + dependencies: + node-forge: 1.2.1 + + /semver/5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + + /semver/6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + + /semver/7.0.0: + resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} + hasBin: true + + /semver/7.3.4: + resolution: {integrity: sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /semver/7.3.5: + resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /send/0.17.2: + resolution: {integrity: sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 1.1.2 + destroy: 1.0.4 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 1.8.1 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.3.0 + range-parser: 1.2.1 + statuses: 1.5.0 + + /serialize-javascript/6.0.0: + resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} + dependencies: + randombytes: 2.1.0 + + /serve-index/1.9.1: + resolution: {integrity: sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.34 + parseurl: 1.3.3 + + /serve-static/1.14.2: + resolution: {integrity: sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.17.2 + + /set-blocking/2.0.0: + resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} + + /setprototypeof/1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + + /setprototypeof/1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + /sha.js/2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + + /shallow-clone/3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + + /shebang-command/1.2.0: + resolution: {integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=} + engines: {node: '>=0.10.0'} + dependencies: + shebang-regex: 1.0.0 + dev: false + + /shebang-command/2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex/1.0.0: + resolution: {integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=} + engines: {node: '>=0.10.0'} + dev: false + + /shebang-regex/3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /side-channel/1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.1 + object-inspect: 1.12.0 + + /signal-exit/3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + /sirv/1.0.19: + resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.21 + mrmime: 1.0.0 + totalist: 1.1.0 + dev: false + + /sisteransi/1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + + /slash/3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + /slice-ansi/3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi/4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /smart-buffer/4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + dev: true + + /smartwrap/1.2.5: + resolution: {integrity: sha512-bzWRwHwu0RnWjwU7dFy7tF68pDAx/zMSu3g7xr9Nx5J0iSImYInglwEVExyHLxXljy6PWMjkSAbwF7t2mPnRmg==} + deprecated: Backported compatibility to node > 6 + hasBin: true + dependencies: + breakword: 1.0.5 + grapheme-splitter: 1.0.4 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + yargs: 15.4.1 + dev: false + + /sockjs/0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + + /socks-proxy-agent/6.1.1: + resolution: {integrity: sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==} + engines: {node: '>= 10'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.3 + socks: 2.6.2 + transitivePeerDependencies: + - supports-color + dev: true + + /socks/2.6.2: + resolution: {integrity: sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + dependencies: + ip: 1.1.5 + smart-buffer: 4.2.0 + dev: true + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map-loader/3.0.1_webpack@5.69.1: + resolution: {integrity: sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + abab: 2.0.5 + iconv-lite: 0.6.3 + source-map-js: 1.0.2 + webpack: 5.69.1 + + /source-map-resolve/0.6.0: + resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.0 + + /source-map-support/0.5.19: + resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + /source-map-support/0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + /source-map/0.5.7: + resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} + engines: {node: '>=0.10.0'} + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + /source-map/0.7.3: + resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} + engines: {node: '>= 8'} + + /sourcemap-codec/1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + + /space-separated-tokens/2.0.1: + resolution: {integrity: sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==} + dev: false + + /spawndamnit/2.0.0: + resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} + dependencies: + cross-spawn: 5.1.0 + signal-exit: 3.0.7 + dev: false + + /spdx-correct/3.1.1: + resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.11 + dev: false + + /spdx-exceptions/2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: false + + /spdx-expression-parse/3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.11 + dev: false + + /spdx-license-ids/3.0.11: + resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} + dev: false + + /spdy-transport/3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + dependencies: + debug: 4.3.3 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.0 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + + /spdy/4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + dependencies: + debug: 4.3.3 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + + /split2/4.1.0: + resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} + engines: {node: '>= 10.x'} + dev: false + + /sprintf-js/1.0.3: + resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} + + /sshpk/1.17.0: + resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: true + + /stable/0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + + /stack-utils/2.0.5: + resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + + /stackframe/1.2.1: + resolution: {integrity: sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==} + + /state-local/1.0.7: + resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} + dev: false + + /statuses/1.5.0: + resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=} + engines: {node: '>= 0.6'} + + /stream-transform/2.1.3: + resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} + dependencies: + mixme: 0.5.4 + dev: false + + /streamsearch/0.1.2: + resolution: {integrity: sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=} + engines: {node: '>=0.8.0'} + dev: false + + /string-hash/1.1.3: + resolution: {integrity: sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=} + + /string-length/4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + /string-width/1.0.2: + resolution: {integrity: sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=} + engines: {node: '>=0.10.0'} + dependencies: + code-point-at: 1.1.0 + is-fullwidth-code-point: 1.0.0 + strip-ansi: 3.0.1 + + /string-width/4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string.prototype.matchall/4.0.6: + resolution: {integrity: sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.19.1 + get-intrinsic: 1.1.1 + has-symbols: 1.0.3 + internal-slot: 1.0.3 + regexp.prototype.flags: 1.4.1 + side-channel: 1.0.4 + + /string.prototype.trimend/1.0.4: + resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + + /string.prototype.trimstart/1.0.4: + resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + + /string_decoder/0.10.31: + resolution: {integrity: sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=} + dev: false + + /string_decoder/1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + + /string_decoder/1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + + /strip-ansi/3.0.1: + resolution: {integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + + /strip-ansi/6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-ansi/7.0.1: + resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + + /strip-bom/2.0.0: + resolution: {integrity: sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=} + engines: {node: '>=0.10.0'} + dependencies: + is-utf8: 0.2.1 + dev: false + + /strip-bom/3.0.0: + resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} + engines: {node: '>=4'} + + /strip-bom/4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + /strip-final-newline/2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + /strip-indent/3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: false + + /strip-json-comments/3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /style-inject/0.3.0: + resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==} + + /style-loader/3.3.1_webpack@5.69.1: + resolution: {integrity: sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + webpack: 5.69.1 + + /style-to-object/0.3.0: + resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} + dependencies: + inline-style-parser: 0.1.1 + dev: false + + /styled-jsx/5.0.0_@babel+core@7.17.5+react@17.0.2: + resolution: {integrity: sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || 18.x.x' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + '@babel/core': 7.17.5 + react: 17.0.2 + dev: false + + /stylehacks/5.1.0_postcss@8.4.7: + resolution: {integrity: sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.19.3 + postcss: 8.4.7 + postcss-selector-parser: 6.0.9 + + /stylis/4.0.13: + resolution: {integrity: sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==} + dev: false + + /stylus-loader/6.2.0_stylus@0.55.0+webpack@5.69.1: + resolution: {integrity: sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + stylus: '>=0.52.4' + webpack: ^5.0.0 + dependencies: + fast-glob: 3.2.11 + klona: 2.0.5 + normalize-path: 3.0.0 + stylus: 0.55.0 + webpack: 5.69.1 + + /stylus/0.55.0: + resolution: {integrity: sha512-MuzIIVRSbc8XxHH7FjkvWqkIcr1BvoMZoR/oFuAJDlh7VSaNJzrB4uJ38GRQa+mWjLXODAMzeDe0xi9GYbGwnw==} + hasBin: true + dependencies: + css: 3.0.0 + debug: 3.1.0 + glob: 7.2.0 + mkdirp: 1.0.4 + safer-buffer: 2.1.2 + sax: 1.2.4 + semver: 6.3.0 + source-map: 0.7.3 + + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + + /supports-color/7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + + /supports-color/8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + + /supports-hyperlinks/2.2.0: + resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /svg-parser/2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + + /svgo/2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.2.1 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + + /symbol-tree/3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + /tailwindcss/3.0.23_autoprefixer@10.4.2: + resolution: {integrity: sha512-+OZOV9ubyQ6oI2BXEhzw4HrqvgcARY38xv3zKcjnWtMIZstEsXdI9xftd1iB7+RbOnj2HOEzkA0OyB5BaSxPQA==} + engines: {node: '>=12.13.0'} + hasBin: true + peerDependencies: + autoprefixer: ^10.0.2 + dependencies: + arg: 5.0.1 + autoprefixer: 10.4.2_postcss@8.4.7 + chalk: 4.1.2 + chokidar: 3.5.3 + color-name: 1.1.4 + cosmiconfig: 7.0.1 + detective: 5.2.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.2.11 + glob-parent: 6.0.2 + is-glob: 4.0.3 + normalize-path: 3.0.0 + object-hash: 2.2.0 + postcss: 8.4.7 + postcss-js: 4.0.0_postcss@8.4.7 + postcss-load-config: 3.1.3 + postcss-nested: 5.0.6_postcss@8.4.7 + postcss-selector-parser: 6.0.9 + postcss-value-parser: 4.2.0 + quick-lru: 5.1.1 + resolve: 1.22.0 + transitivePeerDependencies: + - ts-node + dev: false + + /tapable/1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} + engines: {node: '>=6'} + + /tapable/2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + /tar/6.1.11: + resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} + engines: {node: '>= 10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 3.1.6 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + /term-size/2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + dev: false + + /terminal-link/2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.2.0 + + /terser-webpack-plugin/5.3.1_webpack@5.69.1: + resolution: {integrity: sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + jest-worker: 27.5.1 + schema-utils: 3.1.1 + serialize-javascript: 6.0.0 + source-map: 0.6.1 + terser: 5.12.0 + webpack: 5.69.1 + + /terser/5.12.0: + resolution: {integrity: sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + acorn: 8.7.0 + commander: 2.20.3 + source-map: 0.7.3 + source-map-support: 0.5.21 + + /test-exclude/6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.0 + minimatch: 3.1.2 + + /text-table/0.2.0: + resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} + dev: true + + /thenify-all/1.6.0: + resolution: {integrity: sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: false + + /thenify/3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: false + + /throat/6.0.1: + resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==} + + /throttleit/1.0.0: + resolution: {integrity: sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=} + dev: true + + /through/2.3.8: + resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} + dev: true + + /thunky/1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + + /timsort/0.3.0: + resolution: {integrity: sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=} + + /tiny-invariant/1.2.0: + resolution: {integrity: sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==} + dev: false + + /tmp/0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: false + + /tmp/0.2.1: + resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} + engines: {node: '>=8.17.0'} + dependencies: + rimraf: 3.0.2 + + /tmpl/1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + /to-fast-properties/2.0.0: + resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} + engines: {node: '>=4'} + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /toidentifier/1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + /totalist/1.1.0: + resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==} + engines: {node: '>=6'} + dev: false + + /tough-cookie/2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + dependencies: + psl: 1.8.0 + punycode: 2.1.1 + dev: true + + /tough-cookie/4.0.0: + resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} + engines: {node: '>=6'} + dependencies: + psl: 1.8.0 + punycode: 2.1.1 + universalify: 0.1.2 + + /tr46/0.0.3: + resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=} + dev: false + + /tr46/2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + dependencies: + punycode: 2.1.1 + + /tree-kill/1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + /trim-newlines/3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + dev: false + + /trough/2.1.0: + resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} + dev: false + + /ts-jest/27.1.3_aa4e34889dbe984542b612bc8b6a6267: + resolution: {integrity: sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@types/jest': ^27.0.0 + babel-jest: '>=27.0.0 <28' + esbuild: ~0.14.0 + jest: ^27.0.0 + typescript: '>=3.8 <5.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/jest': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.17.5 + '@types/jest': 27.4.1 + babel-jest: 27.5.1_@babel+core@7.17.5 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 27.5.1 + jest-util: 27.5.1 + json5: 2.2.0 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.3.5 + typescript: 4.5.5 + yargs-parser: 20.2.9 + dev: true + + /ts-loader/9.2.7_typescript@4.5.5+webpack@5.69.1: + resolution: {integrity: sha512-Fxh44mKli9QezgbdCXkEJWxnedQ0ead7DXTH+lfXEPedu+Y9EtMJ2aQ9G3Dj1j7Q612E8931rww8NDZha4Tibg==} + engines: {node: '>=12.0.0'} + peerDependencies: + typescript: '*' + webpack: ^5.0.0 + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.9.1 + micromatch: 4.0.4 + semver: 7.3.5 + typescript: 4.5.5 + webpack: 5.69.1 + + /ts-node/9.1.1_typescript@4.5.5: + resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==} + engines: {node: '>=10.0.0'} + hasBin: true + peerDependencies: + typescript: '>=2.7' + dependencies: + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + source-map-support: 0.5.19 + typescript: 4.5.5 + yn: 3.1.1 + + /tsconfig-paths-webpack-plugin/3.5.2: + resolution: {integrity: sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw==} + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.9.1 + tsconfig-paths: 3.12.0 + + /tsconfig-paths/3.12.0: + resolution: {integrity: sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.1 + minimist: 1.2.5 + strip-bom: 3.0.0 + + /tslib/1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + /tslib/2.3.1: + resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} + + /tsutils/3.21.0_typescript@4.5.5: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + 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' + dependencies: + tslib: 1.14.1 + typescript: 4.5.5 + + /tty-table/2.8.13: + resolution: {integrity: sha512-eVV/+kB6fIIdx+iUImhXrO22gl7f6VmmYh0Zbu6C196fe1elcHXd7U6LcLXu0YoVPc2kNesWiukYcdK8ZmJ6aQ==} + engines: {node: '>=8.16.0'} + hasBin: true + dependencies: + chalk: 3.0.0 + csv: 5.5.3 + smartwrap: 1.2.5 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + yargs: 15.4.1 + dev: false + + /tunnel-agent/0.6.0: + resolution: {integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /tweetnacl/0.14.5: + resolution: {integrity: sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=} + dev: true + + /type-check/0.3.2: + resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + + /type-check/0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect/4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + /type-fest/0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + dev: false + + /type-fest/0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest/0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + /type-fest/0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: false + + /type-fest/0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: false + + /type-is/1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.34 + + /typed-assert/1.0.9: + resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} + + /typedarray-to-buffer/3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + dependencies: + is-typedarray: 1.0.0 + + /typedarray/0.0.6: + resolution: {integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=} + dev: false + + /typeorm/0.2.44_pg@8.7.3: + resolution: {integrity: sha512-yFyb9Ts73vGaS/O06TvLpzvT5U/ngO31GeciNc0eoH7P1QcG8kVZdOy9FHJqkTeDmIljMRgWjbYUoMw53ZY7Xw==} + hasBin: true + peerDependencies: + '@sap/hana-client': ^2.11.14 + better-sqlite3: ^7.1.2 + hdb-pool: ^0.1.6 + ioredis: ^4.28.3 + mongodb: ^3.6.0 + mssql: ^6.3.1 + mysql2: ^2.2.5 + oracledb: ^5.1.0 + pg: ^8.5.1 + pg-native: ^3.0.0 + pg-query-stream: ^4.0.0 + redis: ^3.1.1 + sql.js: ^1.4.0 + sqlite3: ^5.0.2 + typeorm-aurora-data-api-driver: ^2.0.0 + peerDependenciesMeta: + '@sap/hana-client': + optional: true + better-sqlite3: + optional: true + hdb-pool: + optional: true + ioredis: + optional: true + mongodb: + optional: true + mssql: + optional: true + mysql2: + optional: true + oracledb: + optional: true + pg: + optional: true + pg-native: + optional: true + pg-query-stream: + optional: true + redis: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + typeorm-aurora-data-api-driver: + optional: true + dependencies: + '@sqltools/formatter': 1.2.3 + app-root-path: 3.0.0 + buffer: 6.0.3 + chalk: 4.1.2 + cli-highlight: 2.1.11 + debug: 4.3.3 + dotenv: 8.6.0 + glob: 7.2.0 + js-yaml: 4.1.0 + mkdirp: 1.0.4 + pg: 8.7.3 + reflect-metadata: 0.1.13 + sha.js: 2.4.11 + tslib: 2.3.1 + uuid: 8.3.2 + xml2js: 0.4.23 + yargs: 17.3.1 + zen-observable-ts: 1.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /typescript-compare/0.0.2: + resolution: {integrity: sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA==} + dependencies: + typescript-logic: 0.0.0 + dev: false + + /typescript-logic/0.0.0: + resolution: {integrity: sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q==} + dev: false + + /typescript-tuple/2.2.1: + resolution: {integrity: sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q==} + dependencies: + typescript-compare: 0.0.2 + dev: false + + /typescript/4.5.5: + resolution: {integrity: sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /uglify-js/3.15.2: + resolution: {integrity: sha512-peeoTk3hSwYdoc9nrdiEJk+gx1ALCtTjdYuKSXMTDqq7n1W7dHPqWDdSi+BPL0ni2YMeHD7hKUSdbj3TZauY2A==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: false + optional: true + + /unbox-primitive/1.0.1: + resolution: {integrity: sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==} + dependencies: + function-bind: 1.1.1 + has-bigints: 1.0.1 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + + /unicode-canonical-property-names-ecmascript/2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + + /unicode-match-property-ecmascript/2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.0.0 + + /unicode-match-property-value-ecmascript/2.0.0: + resolution: {integrity: sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==} + engines: {node: '>=4'} + + /unicode-property-aliases-ecmascript/2.0.0: + resolution: {integrity: sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==} + engines: {node: '>=4'} + + /unified/10.1.1: + resolution: {integrity: sha512-v4ky1+6BN9X3pQrOdkFIPWAaeDsHPE1svRDxq7YpTc2plkIqFMwukfqM+l0ewpP9EfwARlt9pPFAeWYhHm8X9w==} + dependencies: + '@types/unist': 2.0.6 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.0.0 + trough: 2.1.0 + vfile: 5.3.0 + dev: false + + /union/0.5.0: + resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} + engines: {node: '>= 0.8.0'} + dependencies: + qs: 6.10.3 + + /unist-builder/3.0.0: + resolution: {integrity: sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /unist-util-generated/2.0.0: + resolution: {integrity: sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==} + dev: false + + /unist-util-is/5.1.1: + resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==} + dev: false + + /unist-util-position/4.0.1: + resolution: {integrity: sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA==} + dev: false + + /unist-util-stringify-position/3.0.0: + resolution: {integrity: sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /unist-util-visit-parents/4.1.1: + resolution: {integrity: sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 5.1.1 + dev: false + + /unist-util-visit-parents/5.1.0: + resolution: {integrity: sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 5.1.1 + dev: false + + /unist-util-visit/3.1.0: + resolution: {integrity: sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 5.1.1 + unist-util-visit-parents: 4.1.1 + dev: false + + /unist-util-visit/4.1.0: + resolution: {integrity: sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 5.1.1 + unist-util-visit-parents: 5.1.0 + dev: false + + /universalify/0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + /universalify/2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + + /unload/2.2.0: + resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==} + dependencies: + '@babel/runtime': 7.17.2 + detect-node: 2.1.0 + dev: false + + /unpipe/1.0.0: + resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=} + engines: {node: '>= 0.8'} + + /untildify/4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + dev: true + + /upath2/3.1.12_@types+node@17.0.21: + resolution: {integrity: sha512-yC3eZeCyCXFWjy7Nu4pgjLhXNYjuzuUmJiRgSSw6TJp8Emc+E4951HGPJf+bldFC5SL7oBLeNbtm1fGzXn2gxw==} + peerDependencies: + '@types/node': '*' + dependencies: + '@types/node': 17.0.21 + path-is-network-drive: 1.0.13 + path-strip-sep: 1.0.10 + tslib: 2.3.1 + + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.1.1 + + /url-join/4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + + /url-loader/4.1.1_webpack@5.69.1: + resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + file-loader: + optional: true + dependencies: + loader-utils: 2.0.2 + mime-types: 2.1.34 + schema-utils: 3.1.1 + webpack: 5.69.1 + + /url-template/2.0.8: + resolution: {integrity: sha1-/FZaPMy/93MMd19WQflVV5FDnyE=} + dev: false + + /use-memo-one/1.1.2_react@17.0.2: + resolution: {integrity: sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + dependencies: + react: 17.0.2 + dev: false + + /use-subscription/1.5.1_react@17.0.2: + resolution: {integrity: sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + dependencies: + object-assign: 4.1.1 + react: 17.0.2 + dev: false + + /util-deprecate/1.0.2: + resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} + + /utils-merge/1.0.1: + resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} + engines: {node: '>= 0.4.0'} + + /uuid/8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + /uvu/0.5.3: + resolution: {integrity: sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==} + engines: {node: '>=8'} + hasBin: true + dependencies: + dequal: 2.0.2 + diff: 5.0.0 + kleur: 4.1.4 + sade: 1.8.1 + dev: false + + /v8-compile-cache/2.3.0: + resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} + + /v8-to-istanbul/8.1.1: + resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} + engines: {node: '>=10.12.0'} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.8.0 + source-map: 0.7.3 + + /validate-npm-package-license/3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.1.1 + spdx-expression-parse: 3.0.1 + dev: false + + /validator/13.7.0: + resolution: {integrity: sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==} + engines: {node: '>= 0.10'} + dev: false + + /vary/1.1.2: + resolution: {integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=} + engines: {node: '>= 0.8'} + + /verror/1.10.0: + resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + dev: true + + /vfile-message/3.1.0: + resolution: {integrity: sha512-4QJbBk+DkPEhBXq3f260xSaWtjE4gPKOfulzfMFF8ZNwaPZieWsg3iVlcmF04+eebzpcpeXOOFMfrYzJHVYg+g==} + dependencies: + '@types/unist': 2.0.6 + unist-util-stringify-position: 3.0.0 + dev: false + + /vfile/5.3.0: + resolution: {integrity: sha512-Tj44nY/48OQvarrE4FAjUfrv7GZOYzPbl5OD65HxVKwLJKMPU7zmfV8cCgCnzKWnSfYG2f3pxu+ALqs7j22xQQ==} + dependencies: + '@types/unist': 2.0.6 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.0 + vfile-message: 3.1.0 + dev: false + + /void-elements/3.1.0: + resolution: {integrity: sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=} + engines: {node: '>=0.10.0'} + dev: false + + /w3c-hr-time/1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + dependencies: + browser-process-hrtime: 1.0.0 + + /w3c-xmlserializer/2.0.0: + resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} + engines: {node: '>=10'} + dependencies: + xml-name-validator: 3.0.0 + + /walker/1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + + /watchpack/2.3.1: + resolution: {integrity: sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.9 + + /wbuf/1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + dependencies: + minimalistic-assert: 1.0.1 + + /wcwidth/1.0.1: + resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=} + dependencies: + defaults: 1.0.3 + + /webfontloader/1.6.28: + resolution: {integrity: sha1-23hhKSU8tujq5UwvsF+HCvZnW64=} + dev: false + + /webidl-conversions/3.0.1: + resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=} + dev: false + + /webidl-conversions/5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + + /webidl-conversions/6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} + + /webpack-bundle-analyzer/4.3.0: + resolution: {integrity: sha512-J3TPm54bPARx6QG8z4cKBszahnUglcv70+N+8gUqv2I5KOFHJbzBiLx+pAp606so0X004fxM7hqRu10MLjJifA==} + engines: {node: '>= 10.13.0'} + hasBin: true + dependencies: + acorn: 8.7.0 + acorn-walk: 8.2.0 + chalk: 4.1.2 + commander: 6.2.1 + gzip-size: 6.0.0 + lodash: 4.17.21 + opener: 1.5.2 + sirv: 1.0.19 + ws: 7.5.7 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /webpack-dev-middleware/5.3.1_webpack@5.69.1: + resolution: {integrity: sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + colorette: 2.0.16 + memfs: 3.4.1 + mime-types: 2.1.34 + range-parser: 1.2.1 + schema-utils: 4.0.0 + webpack: 5.69.1 + + /webpack-dev-server/4.7.4_webpack@5.69.1: + resolution: {integrity: sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/bonjour': 3.5.10 + '@types/connect-history-api-fallback': 1.3.5 + '@types/express': 4.17.13 + '@types/serve-index': 1.9.1 + '@types/sockjs': 0.3.33 + '@types/ws': 8.5.2 + ansi-html-community: 0.0.8 + bonjour: 3.5.0 + chokidar: 3.5.3 + colorette: 2.0.16 + compression: 1.7.4 + connect-history-api-fallback: 1.6.0 + default-gateway: 6.0.3 + del: 6.0.0 + express: 4.17.3 + graceful-fs: 4.2.9 + html-entities: 2.3.2 + http-proxy-middleware: 2.0.3_@types+express@4.17.13 + ipaddr.js: 2.0.1 + open: 8.4.0 + p-retry: 4.6.1 + portfinder: 1.0.28 + schema-utils: 4.0.0 + selfsigned: 2.0.0 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + strip-ansi: 7.0.1 + webpack: 5.69.1 + webpack-dev-middleware: 5.3.1_webpack@5.69.1 + ws: 8.5.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + /webpack-merge/5.8.0: + resolution: {integrity: sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==} + engines: {node: '>=10.0.0'} + dependencies: + clone-deep: 4.0.1 + wildcard: 2.0.0 + + /webpack-node-externals/3.0.0: + resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} + engines: {node: '>=6'} + + /webpack-sources/3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + /webpack-subresource-integrity/5.1.0_webpack@5.69.1: + resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==} + engines: {node: '>= 12'} + peerDependencies: + html-webpack-plugin: '>= 5.0.0-beta.1 < 6' + webpack: ^5.12.0 + peerDependenciesMeta: + html-webpack-plugin: + optional: true + dependencies: + typed-assert: 1.0.9 + webpack: 5.69.1 + + /webpack/5.69.1: + resolution: {integrity: sha512-+VyvOSJXZMT2V5vLzOnDuMz5GxEqLk7hKWQ56YxPW/PQRUuKimPqmEIJOx8jHYeyo65pKbapbW464mvsKbaj4A==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.3 + '@types/estree': 0.0.51 + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/wasm-edit': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + acorn: 8.7.0 + acorn-import-assertions: 1.8.0_acorn@8.7.0 + browserslist: 4.19.3 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.9.1 + es-module-lexer: 0.9.3 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.9 + json-parse-better-errors: 1.0.2 + loader-runner: 4.2.0 + mime-types: 2.1.34 + neo-async: 2.6.2 + schema-utils: 3.1.1 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.1_webpack@5.69.1 + watchpack: 2.3.1 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + /websocket-driver/0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + dependencies: + http-parser-js: 0.5.5 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + + /websocket-extensions/0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + + /whatwg-encoding/1.0.5: + resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + dependencies: + iconv-lite: 0.4.24 + + /whatwg-encoding/2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + dependencies: + iconv-lite: 0.6.3 + + /whatwg-mimetype/2.3.0: + resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + + /whatwg-url/5.0.0: + resolution: {integrity: sha1-lmRU6HZUYuN2RNNib2dCzotwll0=} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + + /whatwg-url/8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} + engines: {node: '>=10'} + dependencies: + lodash: 4.17.21 + tr46: 2.1.0 + webidl-conversions: 6.1.0 + + /which-boxed-primitive/1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.6 + is-string: 1.0.7 + is-symbol: 1.0.4 + + /which-module/2.0.0: + resolution: {integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=} + + /which-pm/2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + dev: false + + /which/1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: false + + /which/2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /wide-align/1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + dependencies: + string-width: 1.0.2 + + /wildcard/2.0.0: + resolution: {integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==} + + /word-wrap/1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + + /wordwrap/1.0.0: + resolution: {integrity: sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=} + dev: false + + /wrap-ansi/6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + /wrap-ansi/7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + /wrappy/1.0.2: + resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} + + /write-file-atomic/3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + + /ws/7.5.7: + resolution: {integrity: sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==} + 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 + + /ws/8.4.2: + resolution: {integrity: sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==} + 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 + dev: true + + /ws/8.5.0: + resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} + 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 + + /xml-name-validator/3.0.0: + resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + + /xml2js/0.4.23: + resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} + engines: {node: '>=4.0.0'} + dependencies: + sax: 1.2.4 + xmlbuilder: 11.0.1 + dev: false + + /xmlbuilder/11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + dev: false + + /xmlchars/2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + /xtend/4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: false + + /y18n/4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + /y18n/5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + /yallist/2.1.2: + resolution: {integrity: sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=} + dev: false + + /yallist/4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + /yaml/1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + /yargs-parser/18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + /yargs-parser/20.0.0: + resolution: {integrity: sha512-8eblPHTL7ZWRkyjIZJjnGf+TijiKJSwA24svzLRVvtgoi/RZiKa9fFQTrlx0OKLnyHSdt/enrdadji6WFfESVA==} + engines: {node: '>=10'} + + /yargs-parser/20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + /yargs-parser/21.0.1: + resolution: {integrity: sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==} + engines: {node: '>=12'} + dev: false + + /yargs/15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.0 + y18n: 4.0.3 + yargs-parser: 18.1.3 + + /yargs/16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + /yargs/17.3.1: + resolution: {integrity: sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==} + engines: {node: '>=12'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.0.1 + dev: false + + /yauzl/2.10.0: + resolution: {integrity: sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=} + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + dev: true + + /yazl/2.5.1: + resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==} + dependencies: + buffer-crc32: 0.2.13 + dev: true + + /yn/3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + /yocto-queue/0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + /zen-observable-ts/1.1.0: + resolution: {integrity: sha512-1h4zlLSqI2cRLPJUHJFL8bCWHhkpuXkF+dbGkRaWjgDIG26DmzyshUMrdV/rL3UnR+mhaX4fRq8LPouq0MYYIA==} + dependencies: + '@types/zen-observable': 0.8.3 + zen-observable: 0.8.15 + dev: false + + /zen-observable/0.8.15: + resolution: {integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==} + dev: false + + /zwitch/2.0.2: + resolution: {integrity: sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==} + dev: false diff --git a/scripts/database/initialize.sql b/scripts/database/initialize.sql new file mode 100644 index 00000000..276156f4 --- /dev/null +++ b/scripts/database/initialize.sql @@ -0,0 +1,2 @@ +create database reactive_resume; +grant all privileges on database reactive_resume to postgres; \ No newline at end of file diff --git a/tools/generators/.gitkeep b/tools/generators/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/tools/tsconfig.tools.json b/tools/tsconfig.tools.json new file mode 100644 index 00000000..99428e14 --- /dev/null +++ b/tools/tsconfig.tools.json @@ -0,0 +1,12 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "outDir": "../dist/out-tsc/tools", + "rootDir": ".", + "module": "commonjs", + "target": "es5", + "types": ["node"], + "importHelpers": false + }, + "include": ["**/*.ts"] +} diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 00000000..89d447d2 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,22 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "rootDir": ".", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "importHelpers": true, + "target": "es2015", + "module": "esnext", + "lib": ["es2017", "dom"], + "skipLibCheck": true, + "skipDefaultLibCheck": true, + "baseUrl": ".", + "paths": { + "@reactive-resume/schema": ["libs/schema/src/index.ts"] + } + }, + "exclude": ["node_modules", "tmp"] +} diff --git a/workspace.json b/workspace.json new file mode 100644 index 00000000..8689e6a1 --- /dev/null +++ b/workspace.json @@ -0,0 +1,8 @@ +{ + "version": 2, + "projects": { + "client": "apps/client", + "schema": "libs/schema", + "server": "apps/server" + } +}