From 7c96586eb1ba9630a14e0a2adf68eee6c847b9d2 Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Sat, 23 Dec 2023 11:34:40 -0800 Subject: [PATCH 001/118] initial commit --- TODO.md | 52 + package-lock.json | 19438 ++++++++++++++++ package.json | 60 + public/favicon.ico | Bin 0 -> 3870 bytes public/index.html | 62 + public/logo192.png | Bin 0 -> 5347 bytes public/logo512.png | Bin 0 -> 9664 bytes public/manifest.json | 25 + public/robots.txt | 3 + src/.DS_Store | Bin 0 -> 6148 bytes src/App.css | 52 + src/App.js | 49 + src/App.test.js | 8 + src/assets/images/logo.png | Bin 0 -> 75610 bytes src/assets/images/propertyAnalysis.png | Bin 0 -> 395643 bytes src/assets/theme.css | 9 + .../HeaderMapping/HeaderMapping.css | 91 + src/components/HeaderMapping/index.js | 42 + src/components/PageHeader/PageHeader.css | 18 + src/components/PageHeader/index.js | 13 + .../Charts/BubbleChart/index.js | 132 + .../Charts/CustomPieChart/CustomPieChart.css | 4 + .../Charts/CustomPieChart/index.js | 51 + .../Charts/RadarChart/RadarChart.css | 14 + .../Charts/RadarChart/index.js | 43 + .../StackedBarChart/StackedBarChart.css | 47 + .../Charts/StackedBarChart/index.js | 81 + .../SingleValueCard/SingleValueCard.css | 69 + .../SingleValueCard/index.js | 21 + .../SingleValueCardsGrid.css | 10 + .../SingleValueCardsGrid/index.js | 22 + .../layout/HomePageLayout/HomePageLayout.css | 113 + src/components/layout/HomePageLayout/index.js | 31 + src/components/layout/LeftNav/LeftNav.css | 49 + .../layout/LeftNav/NavListItem/index.js | 15 + .../layout/LeftNav/NavigationDrawer/index.js | 37 + src/components/layout/LeftNav/index.js | 41 + src/components/layout/Section/Section.css | 33 + src/components/layout/Section/index.js | 10 + src/components/layout/TopNav/TopNav.css | 67 + src/components/layout/TopNav/index.js | 36 + .../HeaderMappingModal/HeaderMappingModal.css | 50 + .../modal/HeaderMappingModal/index.js | 65 + .../PropertyInputModal/PropertyInputModal.css | 104 + .../modal/PropertyInputModal/index.js | 106 + .../SkiptraceListModal/FileProcessing.js | 145 + .../SkiptraceListModal/FileUploadArea.js | 40 + .../SkiptraceListModal/SkiptraceListModal.css | 172 + .../modal/SkiptraceListModal/index.js | 102 + src/components/shared/Button/Button.css | 34 + src/components/shared/Button/CancelButton.js | 15 + src/components/shared/Button/index.js | 18 + .../shared/ChartToolTip/ChartToolTip.css | 15 + src/components/shared/ChartToolTip/index.js | 26 + .../FilterToggleButton/FilterToggleButton.css | 0 .../shared/FilterToggleButton/index.js | 17 + .../shared/LoadingSpinner/LoadingSpinner.css | 12 + src/components/shared/LoadingSpinner/index.js | 13 + .../shared/MessageDisplay/MessageDisplay.css | 17 + src/components/shared/MessageDisplay/index.js | 9 + .../shared/Pagination/Pagination.css | 76 + src/components/shared/Pagination/index.js | 76 + src/components/shared/SearchBar/SearchBar.css | 36 + src/components/shared/SearchBar/index.js | 27 + .../SmallNotification/SmallNotification.css | 21 + .../shared/SmallNotification/index.js | 18 + src/components/shared/Table/CommonTable.css | 0 src/components/shared/Table/CommonTable.js | 0 .../CustomDropdown/CustomDropdown.css | 53 + .../shared/dropdowns/CustomDropdown/index.js | 29 + .../shared/dropdowns/FilterBar/FilterBar.css | 157 + .../shared/dropdowns/FilterBar/index.js | 77 + .../shared/modal/ErrorModal/ErrorModal.css | 95 + .../shared/modal/ErrorModal/index.js | 31 + .../AnalyzeOfferCell/AnalyzeOfferCell.css | 35 + .../tableCells/AnalyzeOfferCell/index.js | 33 + .../ContactDetailsCell/ContactDetailsCell.css | 37 + .../tableCells/ContactDetailsCell/index.js | 72 + .../tableCells/FollowUpCell/FollowUpCell.css | 17 + .../tableCells/FollowUpCell/index.js | 20 + .../tableCells/MarketCell/MarketCell.css | 29 + src/components/tableCells/MarketCell/index.js | 18 + .../OffersSentCell/OffersSentCell.css | 18 + .../tableCells/OffersSentCell/index.js | 24 + .../StatusLabelCell/StatusLabelCell.css | 52 + .../tableCells/StatusLabelCell/index.js | 14 + .../tables/LeadsTable/LeadsTable.css | 89 + src/components/tables/LeadsTable/index.js | 130 + .../global/pageHeader/PageHeaderContext.js | 9 + .../global/pageHeader/PageHeaderProvider.js | 16 + src/context/global/theme/ThemeContext.js | 33 + src/context/global/theme/ThemeProvider.js | 0 src/context/index.js | 1 + src/hooks/useDashboardData.js | 81 + src/hooks/useLeadsData.js | 41 + src/hooks/usePageHeader.js | 6 + src/hooks/useSmallNotification.js | 21 + src/index.css | 97 + src/index.js | 17 + src/pages/Buyers/BuyerOasis.css | 0 src/pages/Buyers/index.js | 0 src/pages/CreamDashboard/CreamDashboard.css | 86 + src/pages/CreamDashboard/index.js | 132 + src/pages/DealDeploy/DealDeploy.css | 0 src/pages/DealDeploy/index.js | 0 src/pages/Inspections/InspectionScheduler.css | 0 src/pages/Inspections/index.js | 0 src/pages/Leads/Leads.css | 4 + src/pages/Leads/index.js | 214 + src/pages/Notifications/Notifications.css | 0 src/pages/Notifications/index.js | 0 src/pages/OfferOracle/OfferOracle.css | 0 src/pages/OfferOracle/index.js | 0 src/pages/OfferOutreach/OfferOutreach.css | 0 src/pages/OfferOutreach/index.js | 0 src/pages/Prospects/Prospects.css | 50 + src/pages/Prospects/index.js | 55 + src/pages/TitleKickstart/TitleKickstart.css | 0 src/pages/TitleKickstart/index.js | 0 src/reportWebVitals.js | 13 + src/setupTests.js | 5 + src/utils/commonFunctions.js | 190 + src/utils/constants/apiConstants.js | 8 + src/utils/constants/appConstants.js | 24 + src/utils/constants/errorConstants.js | 21 + src/utils/constants/uiConstants.js | 98 + .../dataVisualizations/barChartData.js | 131 + .../dataVisualizations/marketShareData.js | 11 + .../dataVisualizations/mockBubbleChartData.js | 542 + .../mockData/dataVisualizations/radarChart.js | 62 + .../dataVisualizations/singleValueCard.js | 17 + src/utils/mockData/mockData.js | 1606 ++ src/utils/mockData/mockService.js | 105 + 133 files changed, 26788 insertions(+) create mode 100644 TODO.md create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 public/logo192.png create mode 100644 public/logo512.png create mode 100644 public/manifest.json create mode 100644 public/robots.txt create mode 100644 src/.DS_Store create mode 100644 src/App.css create mode 100644 src/App.js create mode 100644 src/App.test.js create mode 100644 src/assets/images/logo.png create mode 100644 src/assets/images/propertyAnalysis.png create mode 100644 src/assets/theme.css create mode 100644 src/components/HeaderMapping/HeaderMapping.css create mode 100644 src/components/HeaderMapping/index.js create mode 100644 src/components/PageHeader/PageHeader.css create mode 100644 src/components/PageHeader/index.js create mode 100644 src/components/dataVisualizations/Charts/BubbleChart/index.js create mode 100644 src/components/dataVisualizations/Charts/CustomPieChart/CustomPieChart.css create mode 100644 src/components/dataVisualizations/Charts/CustomPieChart/index.js create mode 100644 src/components/dataVisualizations/Charts/RadarChart/RadarChart.css create mode 100644 src/components/dataVisualizations/Charts/RadarChart/index.js create mode 100644 src/components/dataVisualizations/Charts/StackedBarChart/StackedBarChart.css create mode 100644 src/components/dataVisualizations/Charts/StackedBarChart/index.js create mode 100644 src/components/dataVisualizations/SingleValueCard/SingleValueCard.css create mode 100644 src/components/dataVisualizations/SingleValueCard/index.js create mode 100644 src/components/dataVisualizations/SingleValueCardsGrid/SingleValueCardsGrid.css create mode 100644 src/components/dataVisualizations/SingleValueCardsGrid/index.js create mode 100644 src/components/layout/HomePageLayout/HomePageLayout.css create mode 100644 src/components/layout/HomePageLayout/index.js create mode 100644 src/components/layout/LeftNav/LeftNav.css create mode 100644 src/components/layout/LeftNav/NavListItem/index.js create mode 100644 src/components/layout/LeftNav/NavigationDrawer/index.js create mode 100644 src/components/layout/LeftNav/index.js create mode 100644 src/components/layout/Section/Section.css create mode 100644 src/components/layout/Section/index.js create mode 100644 src/components/layout/TopNav/TopNav.css create mode 100644 src/components/layout/TopNav/index.js create mode 100644 src/components/modal/HeaderMappingModal/HeaderMappingModal.css create mode 100644 src/components/modal/HeaderMappingModal/index.js create mode 100644 src/components/modal/PropertyInputModal/PropertyInputModal.css create mode 100644 src/components/modal/PropertyInputModal/index.js create mode 100644 src/components/modal/SkiptraceListModal/FileProcessing.js create mode 100644 src/components/modal/SkiptraceListModal/FileUploadArea.js create mode 100644 src/components/modal/SkiptraceListModal/SkiptraceListModal.css create mode 100644 src/components/modal/SkiptraceListModal/index.js create mode 100644 src/components/shared/Button/Button.css create mode 100644 src/components/shared/Button/CancelButton.js create mode 100644 src/components/shared/Button/index.js create mode 100644 src/components/shared/ChartToolTip/ChartToolTip.css create mode 100644 src/components/shared/ChartToolTip/index.js create mode 100644 src/components/shared/FilterToggleButton/FilterToggleButton.css create mode 100644 src/components/shared/FilterToggleButton/index.js create mode 100644 src/components/shared/LoadingSpinner/LoadingSpinner.css create mode 100644 src/components/shared/LoadingSpinner/index.js create mode 100644 src/components/shared/MessageDisplay/MessageDisplay.css create mode 100644 src/components/shared/MessageDisplay/index.js create mode 100644 src/components/shared/Pagination/Pagination.css create mode 100644 src/components/shared/Pagination/index.js create mode 100644 src/components/shared/SearchBar/SearchBar.css create mode 100644 src/components/shared/SearchBar/index.js create mode 100644 src/components/shared/SmallNotification/SmallNotification.css create mode 100644 src/components/shared/SmallNotification/index.js create mode 100644 src/components/shared/Table/CommonTable.css create mode 100644 src/components/shared/Table/CommonTable.js create mode 100644 src/components/shared/dropdowns/CustomDropdown/CustomDropdown.css create mode 100644 src/components/shared/dropdowns/CustomDropdown/index.js create mode 100644 src/components/shared/dropdowns/FilterBar/FilterBar.css create mode 100644 src/components/shared/dropdowns/FilterBar/index.js create mode 100644 src/components/shared/modal/ErrorModal/ErrorModal.css create mode 100644 src/components/shared/modal/ErrorModal/index.js create mode 100644 src/components/tableCells/AnalyzeOfferCell/AnalyzeOfferCell.css create mode 100644 src/components/tableCells/AnalyzeOfferCell/index.js create mode 100644 src/components/tableCells/ContactDetailsCell/ContactDetailsCell.css create mode 100644 src/components/tableCells/ContactDetailsCell/index.js create mode 100644 src/components/tableCells/FollowUpCell/FollowUpCell.css create mode 100644 src/components/tableCells/FollowUpCell/index.js create mode 100644 src/components/tableCells/MarketCell/MarketCell.css create mode 100644 src/components/tableCells/MarketCell/index.js create mode 100644 src/components/tableCells/OffersSentCell/OffersSentCell.css create mode 100644 src/components/tableCells/OffersSentCell/index.js create mode 100644 src/components/tableCells/StatusLabelCell/StatusLabelCell.css create mode 100644 src/components/tableCells/StatusLabelCell/index.js create mode 100644 src/components/tables/LeadsTable/LeadsTable.css create mode 100644 src/components/tables/LeadsTable/index.js create mode 100644 src/context/global/pageHeader/PageHeaderContext.js create mode 100644 src/context/global/pageHeader/PageHeaderProvider.js create mode 100644 src/context/global/theme/ThemeContext.js create mode 100644 src/context/global/theme/ThemeProvider.js create mode 100644 src/context/index.js create mode 100644 src/hooks/useDashboardData.js create mode 100644 src/hooks/useLeadsData.js create mode 100644 src/hooks/usePageHeader.js create mode 100644 src/hooks/useSmallNotification.js create mode 100644 src/index.css create mode 100644 src/index.js create mode 100644 src/pages/Buyers/BuyerOasis.css create mode 100644 src/pages/Buyers/index.js create mode 100644 src/pages/CreamDashboard/CreamDashboard.css create mode 100644 src/pages/CreamDashboard/index.js create mode 100644 src/pages/DealDeploy/DealDeploy.css create mode 100644 src/pages/DealDeploy/index.js create mode 100644 src/pages/Inspections/InspectionScheduler.css create mode 100644 src/pages/Inspections/index.js create mode 100644 src/pages/Leads/Leads.css create mode 100644 src/pages/Leads/index.js create mode 100644 src/pages/Notifications/Notifications.css create mode 100644 src/pages/Notifications/index.js create mode 100644 src/pages/OfferOracle/OfferOracle.css create mode 100644 src/pages/OfferOracle/index.js create mode 100644 src/pages/OfferOutreach/OfferOutreach.css create mode 100644 src/pages/OfferOutreach/index.js create mode 100644 src/pages/Prospects/Prospects.css create mode 100644 src/pages/Prospects/index.js create mode 100644 src/pages/TitleKickstart/TitleKickstart.css create mode 100644 src/pages/TitleKickstart/index.js create mode 100644 src/reportWebVitals.js create mode 100644 src/setupTests.js create mode 100644 src/utils/commonFunctions.js create mode 100644 src/utils/constants/apiConstants.js create mode 100644 src/utils/constants/appConstants.js create mode 100644 src/utils/constants/errorConstants.js create mode 100644 src/utils/constants/uiConstants.js create mode 100644 src/utils/mockData/dataVisualizations/barChartData.js create mode 100644 src/utils/mockData/dataVisualizations/marketShareData.js create mode 100644 src/utils/mockData/dataVisualizations/mockBubbleChartData.js create mode 100644 src/utils/mockData/dataVisualizations/radarChart.js create mode 100644 src/utils/mockData/dataVisualizations/singleValueCard.js create mode 100644 src/utils/mockData/mockData.js create mode 100644 src/utils/mockData/mockService.js diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..a7a7fa4 --- /dev/null +++ b/TODO.md @@ -0,0 +1,52 @@ +# TODO.md + +- [ ] Update placement of context folder to direct to src folder + +## Table Enhancements + +- [ ] Edit/Create/Delete capabilities for leads in leads page + +## FilterBar Improvements + +- [ ] Error handling if lead in data doesn't have a field +- [ ] Generalize filterbar more to take in toggle button properties and don't define those properties in the file itself + do so in leads index +- [ ] Create custom FilterToggleButton component + +## Dashboard Development To-Do List + +- [ ] **Overview Section** + + - [ ] Ensure KPIs reflect the selected market and timeline from the dropdown filters + +- [ ] **Market Insights Section** + + - [ ] Investor Activity and Interest Levels: Graphs tracking the level of investor activity in different market segments, including types of properties and geographic areas. Use Brent's formula in that virtual youtube video + - [ ] Create and integrate timeline filter dropdown + +- [ ] **Performance Metrics Section** + + - [ ] Create and integrate market filter dropdown + - [ ] Create and integrate timeline filter dropdown + - [x] Develop visual components for cost per lead, cost per contract, average deal size, and time to close metrics + - [x] Style alongside existing performance metrics cards + +- [ ] **Lead Source Analysis Section** + + - [x] Integrate sales radar chart for analyzing list performance + - [x] Add ROI by Lead Source chart to assess the profitability of marketing channels + - [ ] Include market filter dropdown + - [ ] Include timeline filter dropdown + +- [ ] **Deal Lifecycle Insights Section** + + - [ ] Analyze Deals Terminated with a Pareto chart to identify common issues from highcharts + - [ ] Track Deals Pending with a Kanban board visualization + - [ ] Highlight Key Trends for the last 5 closed deals + - [ ] List Progressive Strategies from the analysis of the last 5 terminated deals + - [ ] Implement a forecasting model for future deal closures using key conversion metrics + - [ ] Time Spent in Each Deal Stage: Bar graphs or line charts showing the average time deals spend in each stage of the lifecycle. This is key for identifying inefficiencies and improving the speed of deal processing. + - [ ] Include market filter dropdown + - [ ] Include timeline filter dropdown + +- [ ] Have everything except the overview in one class where it has a fixed size and I can scroll down on it (similar to my table's style.) diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..9df604e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,19438 @@ +{ + "name": "cream-services", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "cream-services", + "version": "0.1.0", + "dependencies": { + "@babel/plugin-proposal-private-property-in-object": "^7.21.11", + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "@fortawesome/fontawesome-svg-core": "^6.4.2", + "@fortawesome/free-regular-svg-icons": "^6.4.2", + "@fortawesome/free-solid-svg-icons": "^6.4.2", + "@fortawesome/react-fontawesome": "^0.2.0", + "@mui/icons-material": "^5.14.13", + "@mui/material": "^5.14.18", + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^13.5.0", + "bootstrap": "^5.3.2", + "chart.js": "^4.4.0", + "chartjs-adapter-date-fns": "^3.0.0", + "d3": "^7.8.5", + "moment": "^2.29.4", + "papaparse": "^5.4.1", + "react": "^18.2.0", + "react-bootstrap": "^2.9.0", + "react-dom": "^18.2.0", + "react-redux": "^8.1.3", + "react-router-dom": "^6.16.0", + "react-scripts": "5.0.1", + "react-spinners": "^0.13.8", + "react-visibility-sensor": "^5.1.1", + "recharts": "^2.8.0", + "redux": "^4.2.1", + "redux-thunk": "^2.4.2", + "web-vitals": "^2.1.4" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==" + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", + "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz", + "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz", + "integrity": "sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==", + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@babel/eslint-parser/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", + "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", + "dependencies": { + "@babel/types": "^7.23.3", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", + "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", + "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.0.tgz", + "integrity": "sha512-kYsT+f5ARWF6AdFmqoEEp+hpqxEB8vGmRWfw2aj78M2vTwS2uHW91EF58iFm1Z9U8Y/RrLu2XKJn46P9ca1b0w==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/plugin-syntax-decorators": "^7.22.10" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz", + "integrity": "sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz", + "integrity": "sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", + "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", + "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", + "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz", + "integrity": "sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-flow": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", + "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", + "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", + "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz", + "integrity": "sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", + "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz", + "integrity": "sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", + "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.15.tgz", + "integrity": "sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==", + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz", + "integrity": "sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz", + "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", + "dependencies": { + "@babel/compat-data": "^7.22.20", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.15", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.15", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.15", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.15", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.19", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz", + "integrity": "sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.22.5", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.0.tgz", + "integrity": "sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-typescript": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + }, + "node_modules/@babel/runtime": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", + "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.3", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.3", + "@babel/types": "^7.23.3", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", + "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" + }, + "node_modules/@csstools/normalize.css": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", + "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==" + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "dependencies": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", + "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.10" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/react": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "dependencies": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "node_modules/@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", + "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "dependencies": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz", + "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==", + "dependencies": { + "@floating-ui/dom": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.2.tgz", + "integrity": "sha512-1DgP7f+XQIJbLFCTX1V2QnxVmpLdKdzzo2k8EmvDOePfchaIGQ9eCHj2up3/jNEbZuBqel5OxiaOJf37TWauRA==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.2.tgz", + "integrity": "sha512-gjYDSKv3TrM2sLTOKBc5rH9ckje8Wrwgx1CxAPbN5N3Fm4prfi7NsJVWd1jklp7i5uSCVwhZS5qlhMXqLrpAIg==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-regular-svg-icons": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.4.2.tgz", + "integrity": "sha512-0+sIUWnkgTVVXVAPQmW4vxb9ZTHv0WstOa3rBx9iPxrrrDH6bNLsDYuwXF9b6fGm+iR7DKQvQshUH/FJm3ed9Q==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.2.tgz", + "integrity": "sha512-sYwXurXUEQS32fZz9hVCUUv/xu49PEJEyUOsA51l6PU/qVgfbTb2glsTEaJngVVT8VqBATRIdh7XVgV1JF1LkA==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/react-fontawesome": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz", + "integrity": "sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "react": ">=16.3" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "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": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "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.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "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 + } + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils/node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "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": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-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.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "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 + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dependencies": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==" + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + }, + "node_modules/@mui/base": { + "version": "5.0.0-beta.24", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.24.tgz", + "integrity": "sha512-bKt2pUADHGQtqWDZ8nvL2Lvg2GNJyd/ZUgZAJoYzRgmnxBL9j36MSlS3+exEdYkikcnvVafcBtD904RypFKb0w==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@floating-ui/react-dom": "^2.0.4", + "@mui/types": "^7.2.9", + "@mui/utils": "^5.14.18", + "@popperjs/core": "^2.11.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.14.18", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.18.tgz", + "integrity": "sha512-yFpF35fEVDV81nVktu0BE9qn2dD/chs7PsQhlyaV3EnTeZi9RZBuvoEfRym1/jmhJ2tcfeWXiRuHG942mQXJJQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.14.13", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.13.tgz", + "integrity": "sha512-fxKE1UrjI4xVxHe9IAGuVQZrc18dSBJg0P+Sqi2SZmcDUCShmgRq6Jq7l7GduvuMIkOSqAJdNgLtXmtmZkjtLg==", + "dependencies": { + "@babel/runtime": "^7.23.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@mui/material": "^5.0.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "5.14.18", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.18.tgz", + "integrity": "sha512-y3UiR/JqrkF5xZR0sIKj6y7xwuEiweh9peiN3Zfjy1gXWXhz5wjlaLdoxFfKIEBUFfeQALxr/Y8avlHH+B9lpQ==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@mui/base": "5.0.0-beta.24", + "@mui/core-downloads-tracker": "^5.14.18", + "@mui/system": "^5.14.18", + "@mui/types": "^7.2.9", + "@mui/utils": "^5.14.18", + "@types/react-transition-group": "^4.4.8", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/@mui/private-theming": { + "version": "5.14.18", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.18.tgz", + "integrity": "sha512-WSgjqRlzfHU+2Rou3HlR2Gqfr4rZRsvFgataYO3qQ0/m6gShJN+lhVEvwEiJ9QYyVzMDvNpXZAcqp8Y2Vl+PAw==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@mui/utils": "^5.14.18", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.14.18", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.18.tgz", + "integrity": "sha512-pW8bpmF9uCB5FV2IPk6mfbQCjPI5vGI09NOLhtGXPeph/4xIfC3JdIX0TILU0WcTs3aFQqo6s2+1SFgIB9rCXA==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "5.14.18", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.18.tgz", + "integrity": "sha512-hSQQdb3KF72X4EN2hMEiv8EYJZSflfdd1TRaGPoR7CIAG347OxCslpBUwWngYobaxgKvq6xTrlIl+diaactVww==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@mui/private-theming": "^5.14.18", + "@mui/styled-engine": "^5.14.18", + "@mui/types": "^7.2.9", + "@mui/utils": "^5.14.18", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.2.9", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.9.tgz", + "integrity": "sha512-k1lN/PolaRZfNsRdAqXtcR71sTnv3z/VCCGPxU8HfdftDkzi335MdJ6scZxvofMAd/K/9EbzCZTFBmlNpQVdCg==", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.14.18", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.18.tgz", + "integrity": "sha512-HZDRsJtEZ7WMSnrHV9uwScGze4wM/Y+u6pDVo+grUjt5yXzn+wI8QX/JwTHh9YSw/WpnUL80mJJjgCnWj2VrzQ==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@types/prop-types": "^15.7.10", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", + "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==", + "dependencies": { + "ansi-html-community": "^0.0.8", + "common-path-prefix": "^3.0.0", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "find-up": "^5.0.0", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^3.0.0", + "source-map": "^0.7.3" + }, + "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 <5.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 + } + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.8.0.tgz", + "integrity": "sha512-Y54xs483rglN5DxbwfCPHxnkvZ+gZ0LbSYmR72LyWPGft8hN/lrl1VRS1EW2SMjnkEWlj+Km2mwvA3kEHDUA0A==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@remix-run/router": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz", + "integrity": "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@restart/hooks": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.11.tgz", + "integrity": "sha512-Ft/ncTULZN6ldGHiF/k5qt72O8JyRMOeg0tApvCni8LkoiEahO+z3TNxfXIVGy890YtWVDvJAl662dVJSJXvMw==", + "dependencies": { + "dequal": "^2.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@restart/ui": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.6.6.tgz", + "integrity": "sha512-eC3puKuWE1SRYbojWHXnvCNHGgf3uzHCb6JOhnF4OXPibOIPEkR1sqDSkL643ydigxwh+ruCa1CmYHlzk7ikKA==", + "dependencies": { + "@babel/runtime": "^7.21.0", + "@popperjs/core": "^2.11.6", + "@react-aria/ssr": "^3.5.0", + "@restart/hooks": "^0.4.9", + "@types/warning": "^3.0.0", + "dequal": "^2.0.3", + "dom-helpers": "^5.2.0", + "uncontrollable": "^8.0.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + } + }, + "node_modules/@restart/ui/node_modules/uncontrollable": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", + "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", + "peerDependencies": { + "react": ">=16.14.0" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "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 + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz", + "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "dependencies": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "dependencies": { + "@babel/types": "^7.12.6" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "dependencies": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "dependencies": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.3.tgz", + "integrity": "sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@testing-library/dom": { + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", + "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "peer": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@testing-library/dom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "peer": true + }, + "node_modules/@testing-library/dom/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", + "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=8", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@testing-library/jest-dom/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react": { + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", + "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^8.5.0", + "@types/react-dom": "^18.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@testing-library/react/node_modules/@testing-library/dom": { + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@testing-library/react/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/react/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@testing-library/react/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@testing-library/react/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/react/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@testing-library/react/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/user-event": { + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz", + "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.2.tgz", + "integrity": "sha512-PHKZuMN+K5qgKIWhBodXzQslTo5P+K/6LqeKXS6O/4liIDdZqaX5RXrCK++LAw+y/nptN48YmUMFiQHRSWYwtQ==" + }, + "node_modules/@types/babel__core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", + "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", + "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", + "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", + "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.3.tgz", + "integrity": "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.11.tgz", + "integrity": "sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz", + "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.8.tgz", + "integrity": "sha512-2xAVyAUgaXHX9fubjcCbGAUOqYfRJN1em1EKR2HfzWBpObZhwfnZKvofTN4TplMqJdFQao61I+NVSai/vnBvDQ==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.1.tgz", + "integrity": "sha512-CSAVrHAtM9wfuLJ2tpvvwCU/F22sm7rMHNN+yh9D6O6hyAms3+O0cgMpC1pm6UEUMOntuZC8bMt74PteiDUdCg==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", + "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.2.tgz", + "integrity": "sha512-zAbCj9lTqW9J9PlF4FwnvEjXZUy75NQqPm7DMHZXuxCFTpuTrdK2NMYGQekf4hlasL78fCYOLu4EE3/tXElwow==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", + "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.5.tgz", + "integrity": "sha512-w/C++3W394MHzcLKO2kdsIn5KKNTOqeQVzyPSGPLzQbkPw/jpeaGtSRlakcKevGgGsjJxGsbqS0fPrVFDbHrDA==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.3.tgz", + "integrity": "sha512-cHMdIq+rhF5IVwAV7t61pcEXfEHsEsrbBUPkFGBwTXuxtTAkBBrnrNA8++6OWm3jwVsXoZYQM8NEekg6CPJ3zw==", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.1.tgz", + "integrity": "sha512-5j/AnefKAhCw4HpITmLDTPlf4vhi8o/dES+zbegfPb7LaGfNyqkLxBR6E+4yvTAgnJLmhe80EXFMzUs38fw4oA==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", + "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==" + }, + "node_modules/@types/eslint": { + "version": "8.44.4", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.4.tgz", + "integrity": "sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.5.tgz", + "integrity": "sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz", + "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==" + }, + "node_modules/@types/express": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.19.tgz", + "integrity": "sha512-UtOfBtzN9OvpZPPbnnYunfjM7XCI4jyk1NvnFhTVz5krYAnW4o5DCoIekvms+8ApqhB4+9wSge1kBijdfTSmfg==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.37", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz", + "integrity": "sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", + "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.3.tgz", + "integrity": "sha512-Wny3a2UXn5FEA1l7gc6BbpoV5mD1XijZqgkp4TRgDCDL5r3B5ieOFGUX5h3n78Tr1MEG7BfvoM8qeztdvNU0fw==", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + }, + "node_modules/@types/http-errors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz", + "integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.12", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.12.tgz", + "integrity": "sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.5", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz", + "integrity": "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@types/jest/node_modules/@types/yargs": { + "version": "17.0.28", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz", + "integrity": "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@types/jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@types/jest/node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/jest/node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/@types/jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + }, + "node_modules/@types/mime": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.3.tgz", + "integrity": "sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg==" + }, + "node_modules/@types/node": { + "version": "20.8.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.4.tgz", + "integrity": "sha512-ZVPnqU58giiCjSxjVUESDtdPk4QR5WQhhINbc9UBrKLU68MX5BF6kbQzTrkwbolyr0X8ChBpXfavr5mZFKZQ5A==", + "dependencies": { + "undici-types": "~5.25.1" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.10", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.10.tgz", + "integrity": "sha512-mxSnDQxPqsZxmeShFH+uwQ4kO4gcJcGahjjMFeLbKE95IAZiiZyiEepGZjtXJ7hN/yfu0bu9xN2ajcU0JcxX6A==" + }, + "node_modules/@types/q": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.6.tgz", + "integrity": "sha512-IKjZ8RjTSwD4/YG+2gtj7BPFRB/lNbWKTiSj3M7U/TD2B7HfYCxvp2Zz6xA2WIY7pAuL1QOUPw8gQRbUrrq4fQ==" + }, + "node_modules/@types/qs": { + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.5.tgz", + "integrity": "sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==" + }, + "node_modules/@types/react": { + "version": "18.2.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.28.tgz", + "integrity": "sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.13", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.13.tgz", + "integrity": "sha512-eJIUv7rPP+EC45uNYp/ThhSpE16k22VJUknt5OLoH9tbXoi8bMhwLf5xRuWMywamNbWzhrSmU7IBJfPup1+3fw==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.9.tgz", + "integrity": "sha512-ZVNmWumUIh5NhH8aMD9CR2hdW0fNuYInlocZHaZ+dgk/1K49j1w/HoAuK1ki+pgscQrOFRTlXeoURtuzEkV3dg==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "node_modules/@types/scheduler": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", + "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==" + }, + "node_modules/@types/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==" + }, + "node_modules/@types/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.2.tgz", + "integrity": "sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig==", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.3.tgz", + "integrity": "sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==", + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.34", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.34.tgz", + "integrity": "sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" + }, + "node_modules/@types/testing-library__jest-dom": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", + "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", + "dependencies": { + "@types/jest": "*" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.4.tgz", + "integrity": "sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ==" + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, + "node_modules/@types/warning": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.1.tgz", + "integrity": "sha512-ywJmriP+nvjBKNBEMaNZgj2irZHoxcKeYcyMLbqhYKbDVn8yCIULy2Ol/tvIb37O3IBeZj3RU4tXqQTtGwoAMg==" + }, + "node_modules/@types/ws": { + "version": "8.5.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.7.tgz", + "integrity": "sha512-6UrLjiDUvn40CMrAubXuIVtj2PEfKDffJS7ychvnPU44j+KVeXmdHHTgqcM/dxLUTHxlXHiFM8Skmb8ozGdTnQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "16.0.6", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.6.tgz", + "integrity": "sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", + "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", + "dependencies": { + "@typescript-eslint/utils": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.reduce": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz", + "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dependencies": { + "has-symbols": "^1.0.3" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz", + "integrity": "sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-named-asset-import": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", + "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", + "peerDependencies": { + "@babel/core": "^7.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz", + "integrity": "sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.32.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-react-app": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", + "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, + "node_modules/bfj": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz", + "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==", + "dependencies": { + "bluebird": "^3.7.2", + "check-types": "^11.2.3", + "hoopy": "^0.1.4", + "jsonpath": "^1.1.1", + "tryer": "^1.0.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/bootstrap": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", + "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "node_modules/browserslist": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001547", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001547.tgz", + "integrity": "sha512-W7CrtIModMAxobGhz8iXmDfuJiiKg1WADMO/9x7/CLNin5cpSbuBjooyoIUVB5eyCc36QuTVlkVa1iB2S5+/eA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/chart.js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.0.tgz", + "integrity": "sha512-vQEj6d+z0dcsKLlQvbKIMYFHd3t8W/7L2vfJIbYcfyPcRx92CsHqECpueN8qVGNlKyDcr5wBrYAYKnfu/9Q1hQ==", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=7" + } + }, + "node_modules/chartjs-adapter-date-fns": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chartjs-adapter-date-fns/-/chartjs-adapter-date-fns-3.0.0.tgz", + "integrity": "sha512-Rs3iEB3Q5pJ973J93OBTpnP7qoGwvq3nUnoMdtxO+9aoJof7UFcRbWcIDteXuYd1fgAvct/32T9qaLyLuZVwCg==", + "peerDependencies": { + "chart.js": ">=2.8.0", + "date-fns": ">=2.0.0" + } + }, + "node_modules/check-types": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", + "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" + }, + "node_modules/classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + }, + "node_modules/clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==" + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/core-js": { + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.0.tgz", + "integrity": "sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", + "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", + "dependencies": { + "browserslist": "^4.22.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.0.tgz", + "integrity": "sha512-FKSIDtJnds/YFIEaZ4HszRX7hkxGpNKM7FC9aJ9WLJbSd3lD4vOltFuVIBLR8asSx9frkTSqL0dw90SKQxgKrg==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-has-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "bin": { + "css-prefers-color-scheme": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-unit-converter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", + "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==" + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" + }, + "node_modules/cssdb": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.8.0.tgz", + "integrity": "sha512-SkeezZOQr5AHt9MgJgSFNyiuJwg1p8AwoVln6JwaQJsyxduRW9QJ+HP/gAQzbsz8SIqINtYvpJKjxTRI67zxLg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ] + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node_modules/csso/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/d3": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" + }, + "node_modules/deep-equal": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", + "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.1", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dependencies": { + "robust-predicates": "^3.0.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/detect-port-alt/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.549", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.549.tgz", + "integrity": "sha512-gpXfJslSi4hYDkA0mTLEpYKRv9siAgSUgZ+UWyk+J5Cttpd1ThCVwdclzIwQSclz3hYn049+M2fgrP1WpvF8xg==" + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-abstract": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==" + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.51.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-react-app": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", + "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.3", + "@rushstack/eslint-patch": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^5.5.0", + "@typescript-eslint/parser": "^5.5.0", + "babel-preset-react-app": "^10.0.1", + "confusing-browser-globals": "^1.0.11", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jest": "^25.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-flowtype": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", + "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@babel/plugin-syntax-flow": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.9", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", + "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.findlastindex": "^1.2.2", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.8.0", + "has": "^1.0.3", + "is-core-module": "^2.13.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.6", + "object.groupby": "^1.0.0", + "object.values": "^1.1.6", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", + "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "dependencies": { + "@typescript-eslint/experimental-utils": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", + "dependencies": { + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-testing-library": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", + "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", + "dependencies": { + "@typescript-eslint/utils": "^5.58.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", + "dependencies": { + "@types/eslint": "^7.29.0 || ^8.4.1", + "jest-worker": "^28.0.2", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz", + "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==" + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + }, + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "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 + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.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.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "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 + } + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "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" + }, + "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 + } + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "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.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "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": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.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" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "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": "*", + "chalk": "^4.0.0", + "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.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "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.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^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" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "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.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", + "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", + "dependencies": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^28.0.0", + "jest-watcher": "^28.0.0", + "slash": "^4.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "jest": "^27.0.0 || ^28.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@types/yargs": { + "version": "17.0.28", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz", + "integrity": "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-watch-typeahead/node_modules/emittery": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "dependencies": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/jest-watch-typeahead/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", + "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", + "dependencies": { + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", + "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", + "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "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.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpath": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", + "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "dependencies": { + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" + } + }, + "node_modules/jsonpath/node_modules/esprima": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", + "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz", + "integrity": "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==", + "dependencies": { + "array.prototype.reduce": "^1.0.6", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "safe-array-concat": "^1.0.0" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/papaparse": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.4.1.tgz", + "integrity": "sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-browser-comments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", + "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "browserslist": ">=4", + "postcss": ">=8" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-custom-media": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-custom-properties": { + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-flexbugs-fixes": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", + "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", + "peerDependencies": { + "postcss": "^8.1.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-image-set-function": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-lab-function": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + }, + "engines": { + "node": ">= 14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", + "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nesting": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-normalize": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", + "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", + "dependencies": { + "@csstools/normalize.css": "*", + "postcss-browser-comments": "^4", + "sanitize.css": "*" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "browserslist": ">= 4", + "postcss": ">= 8" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-preset-env": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", + "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", + "dependencies": { + "@csstools/postcss-cascade-layers": "^1.1.1", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.13", + "browserslist": "^4.21.4", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^7.1.0", + "postcss-attribute-case-insensitive": "^5.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.4", + "postcss-color-hex-alpha": "^8.0.4", + "postcss-color-rebeccapurple": "^7.1.1", + "postcss-custom-media": "^8.0.2", + "postcss-custom-properties": "^12.1.10", + "postcss-custom-selectors": "^6.0.3", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.2.1", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.2.0", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.4", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/postcss-svgo/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/postcss-svgo/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node_modules/postcss-svgo/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-svgo/node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "dependencies": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/prop-types-extra/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-app-polyfill": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", + "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", + "dependencies": { + "core-js": "^3.19.2", + "object-assign": "^4.1.1", + "promise": "^8.1.0", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.9", + "whatwg-fetch": "^3.6.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-app-polyfill/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/react-bootstrap": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.9.0.tgz", + "integrity": "sha512-dGh6fGjqR9MBzPOp2KbXJznt1Zy6SWepXYUdxMT18Zu/wJ73HCU8JNZe9dfzjmVssZYsJH9N3HHE4wAtQvNz7g==", + "dependencies": { + "@babel/runtime": "^7.22.5", + "@restart/hooks": "^0.4.9", + "@restart/ui": "^1.6.6", + "@types/react-transition-group": "^4.4.6", + "classnames": "^2.3.2", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.8.1", + "prop-types-extra": "^1.1.0", + "react-transition-group": "^4.4.5", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "@types/react": ">=16.14.8", + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-dev-utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", + "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-dev-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/react-dev-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/react-dev-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/react-dev-utils/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dev-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-error-overlay": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", + "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-redux": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.3.tgz", + "integrity": "sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==", + "dependencies": { + "@babel/runtime": "^7.12.1", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/use-sync-external-store": "^0.0.3", + "hoist-non-react-statics": "^3.3.2", + "react-is": "^18.0.0", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^16.8 || ^17.0 || ^18.0", + "@types/react-dom": "^16.8 || ^17.0 || ^18.0", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0", + "react-native": ">=0.59", + "redux": "^4 || ^5.0.0-beta.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/react-redux/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/react-refresh": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", + "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-resize-detector": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-8.1.0.tgz", + "integrity": "sha512-S7szxlaIuiy5UqLhLL1KY3aoyGHbZzsTpYal9eYMwCyKqoqoVLCmIgAgNyIM1FhnP2KyBygASJxdhejrzjMb+w==", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-router": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz", + "integrity": "sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==", + "dependencies": { + "@remix-run/router": "1.9.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz", + "integrity": "sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==", + "dependencies": { + "@remix-run/router": "1.9.0", + "react-router": "6.16.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-scripts": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", + "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==", + "dependencies": { + "@babel/core": "^7.16.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", + "@svgr/webpack": "^5.5.0", + "babel-jest": "^27.4.2", + "babel-loader": "^8.2.3", + "babel-plugin-named-asset-import": "^0.3.8", + "babel-preset-react-app": "^10.0.1", + "bfj": "^7.0.2", + "browserslist": "^4.18.1", + "camelcase": "^6.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "css-loader": "^6.5.1", + "css-minimizer-webpack-plugin": "^3.2.0", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "eslint": "^8.3.0", + "eslint-config-react-app": "^7.0.1", + "eslint-webpack-plugin": "^3.1.1", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "html-webpack-plugin": "^5.5.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^27.4.3", + "jest-resolve": "^27.4.2", + "jest-watch-typeahead": "^1.0.0", + "mini-css-extract-plugin": "^2.4.5", + "postcss": "^8.4.4", + "postcss-flexbugs-fixes": "^5.0.2", + "postcss-loader": "^6.2.1", + "postcss-normalize": "^10.0.1", + "postcss-preset-env": "^7.0.1", + "prompts": "^2.4.2", + "react-app-polyfill": "^3.0.0", + "react-dev-utils": "^12.0.1", + "react-refresh": "^0.11.0", + "resolve": "^1.20.0", + "resolve-url-loader": "^4.0.0", + "sass-loader": "^12.3.0", + "semver": "^7.3.5", + "source-map-loader": "^3.0.0", + "style-loader": "^3.3.1", + "tailwindcss": "^3.0.2", + "terser-webpack-plugin": "^5.2.5", + "webpack": "^5.64.4", + "webpack-dev-server": "^4.6.0", + "webpack-manifest-plugin": "^4.0.2", + "workbox-webpack-plugin": "^6.4.1" + }, + "bin": { + "react-scripts": "bin/react-scripts.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + }, + "peerDependencies": { + "react": ">= 16", + "typescript": "^3.2.1 || ^4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/react-smooth": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-2.0.5.tgz", + "integrity": "sha512-BMP2Ad42tD60h0JW6BFaib+RJuV5dsXJK9Baxiv/HlNFjvRLqA9xrNKxVWnUIZPQfzUwGXIlU/dSYLU+54YGQA==", + "dependencies": { + "fast-equals": "^5.0.0", + "react-transition-group": "2.9.0" + }, + "peerDependencies": { + "prop-types": "^15.6.0", + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-smooth/node_modules/dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, + "node_modules/react-smooth/node_modules/react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "dependencies": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0", + "react-dom": ">=15.0.0" + } + }, + "node_modules/react-spinners": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/react-spinners/-/react-spinners-0.13.8.tgz", + "integrity": "sha512-3e+k56lUkPj0vb5NDXPVFAOkPC//XyhKPJjvcGjyMNPWsBKpplfeyialP74G7H7+It7KzhtET+MvGqbKgAqpZA==", + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/react-visibility-sensor": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-visibility-sensor/-/react-visibility-sensor-5.1.1.tgz", + "integrity": "sha512-cTUHqIK+zDYpeK19rzW6zF9YfT4486TIgizZW53wEZ+/GPBbK7cNS0EHyJVyHYacwFEvvHLEKfgJndbemWhB/w==", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recharts": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.8.0.tgz", + "integrity": "sha512-nciXqQDh3aW8abhwUlA4EBOBusRHLNiKHfpRZiG/yjups1x+auHb2zWPuEcTn/IMiN47vVMMuF8Sr+vcQJtsmw==", + "dependencies": { + "classnames": "^2.2.5", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.19", + "react-is": "^16.10.2", + "react-resize-detector": "^8.0.4", + "react-smooth": "^2.0.2", + "recharts-scale": "^0.4.4", + "reduce-css-calc": "^2.1.8", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "prop-types": "^15.6.0", + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, + "node_modules/recharts/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reduce-css-calc": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz", + "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==", + "dependencies": { + "css-unit-converter": "^1.1.1", + "postcss-value-parser": "^3.3.0" + } + }, + "node_modules/reduce-css-calc/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/redux-thunk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", + "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", + "peerDependencies": { + "redux": "^4" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", + "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=8.9" + }, + "peerDependencies": { + "rework": "1.0.1", + "rework-visit": "1.0.0" + }, + "peerDependenciesMeta": { + "rework": { + "optional": true + }, + "rework-visit": { + "optional": true + } + } + }, + "node_modules/resolve-url-loader/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/resolve-url-loader/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + }, + "node_modules/resolve-url-loader/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, + "node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sanitize.css": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", + "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==" + }, + "node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", + "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", + "dependencies": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead" + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + }, + "node_modules/static-eval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", + "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", + "dependencies": { + "escodegen": "^1.8.1" + } + }, + "node_modules/static-eval/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/static-eval/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/static-eval/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-eval/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz", + "integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==", + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/svgo/node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "node_modules/svgo/node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "node_modules/tailwindcss": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", + "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.18.2", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.21.0.tgz", + "integrity": "sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw==", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, + "node_modules/underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" + }, + "node_modules/undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/victory-vendor": { + "version": "36.6.11", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.6.11.tgz", + "integrity": "sha512-nT8kCiJp8dQh8g991J/R5w5eE2KnO8EAIP0xocWlh9l2okngMWglOPoMZzJvek8Q1KUc4XE/mJxTZnvOB1sTYg==", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-vitals": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", + "integrity": "sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==" + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-manifest-plugin": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", + "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", + "dependencies": { + "tapable": "^2.0.0", + "webpack-sources": "^2.2.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "webpack": "^4.44.2 || ^5.47.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.19", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", + "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==" + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-background-sync": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", + "integrity": "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz", + "integrity": "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-build": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz", + "integrity": "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.6.0", + "workbox-broadcast-update": "6.6.0", + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-google-analytics": "6.6.0", + "workbox-navigation-preload": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-range-requests": "6.6.0", + "workbox-recipes": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0", + "workbox-streams": "6.6.0", + "workbox-sw": "6.6.0", + "workbox-window": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz", + "integrity": "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==", + "deprecated": "workbox-background-sync@6.6.0", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-core": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz", + "integrity": "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==" + }, + "node_modules/workbox-expiration": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz", + "integrity": "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-google-analytics": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz", + "integrity": "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==", + "dependencies": { + "workbox-background-sync": "6.6.0", + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz", + "integrity": "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-precaching": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz", + "integrity": "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-range-requests": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz", + "integrity": "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-recipes": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz", + "integrity": "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==", + "dependencies": { + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-routing": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz", + "integrity": "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-strategies": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz", + "integrity": "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-streams": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz", + "integrity": "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0" + } + }, + "node_modules/workbox-sw": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz", + "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==" + }, + "node_modules/workbox-webpack-plugin": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.0.tgz", + "integrity": "sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==", + "dependencies": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.9.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/workbox-window": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz", + "integrity": "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.6.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..61e79c8 --- /dev/null +++ b/package.json @@ -0,0 +1,60 @@ +{ + "name": "cream-services", + "version": "0.1.0", + "private": true, + "dependencies": { + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "@fortawesome/fontawesome-svg-core": "^6.4.2", + "@fortawesome/free-regular-svg-icons": "^6.4.2", + "@fortawesome/free-solid-svg-icons": "^6.4.2", + "@fortawesome/react-fontawesome": "^0.2.0", + "@mui/icons-material": "^5.14.13", + "@mui/material": "^5.14.18", + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^13.5.0", + "bootstrap": "^5.3.2", + "chart.js": "^4.4.0", + "chartjs-adapter-date-fns": "^3.0.0", + "d3": "^7.8.5", + "moment": "^2.29.4", + "papaparse": "^5.4.1", + "react": "^18.2.0", + "react-bootstrap": "^2.9.0", + "react-dom": "^18.2.0", + "react-redux": "^8.1.3", + "react-router-dom": "^6.16.0", + "react-scripts": "5.0.1", + "react-spinners": "^0.13.8", + "react-visibility-sensor": "^5.1.1", + "recharts": "^2.8.0", + "redux": "^4.2.1", + "redux-thunk": "^2.4.2", + "web-vitals": "^2.1.4" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..5347a18 --- /dev/null +++ b/public/index.html @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + React App + + + +
+
+ + + diff --git a/public/logo192.png b/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 zcmZWtbyO6NvR-oO24RV%BvuJ&=?+<7=`LvyB&A_#M7mSDYw1v6DJkiYl9XjT!%$dLEBTQ8R9|wd3008in6lFF3GV-6mLi?MoP_y~}QUnaDCHI#t z7w^m$@6DI)|C8_jrT?q=f8D?0AM?L)Z}xAo^e^W>t$*Y0KlT5=@bBjT9kxb%-KNdk zeOS1tKO#ChhG7%{ApNBzE2ZVNcxbrin#E1TiAw#BlUhXllzhN$qWez5l;h+t^q#Eav8PhR2|T}y5kkflaK`ba-eoE+Z2q@o6P$)=&` z+(8}+-McnNO>e#$Rr{32ngsZIAX>GH??tqgwUuUz6kjns|LjsB37zUEWd|(&O!)DY zQLrq%Y>)Y8G`yYbYCx&aVHi@-vZ3|ebG!f$sTQqMgi0hWRJ^Wc+Ibv!udh_r%2|U) zPi|E^PK?UE!>_4`f`1k4hqqj_$+d!EB_#IYt;f9)fBOumGNyglU(ofY`yHq4Y?B%- zp&G!MRY<~ajTgIHErMe(Z8JG*;D-PJhd@RX@QatggM7+G(Lz8eZ;73)72Hfx5KDOE zkT(m}i2;@X2AT5fW?qVp?@WgN$aT+f_6eo?IsLh;jscNRp|8H}Z9p_UBO^SJXpZew zEK8fz|0Th%(Wr|KZBGTM4yxkA5CFdAj8=QSrT$fKW#tweUFqr0TZ9D~a5lF{)%-tTGMK^2tz(y2v$i%V8XAxIywrZCp=)83p(zIk6@S5AWl|Oa2hF`~~^W zI;KeOSkw1O#TiQ8;U7OPXjZM|KrnN}9arP)m0v$c|L)lF`j_rpG(zW1Qjv$=^|p*f z>)Na{D&>n`jOWMwB^TM}slgTEcjxTlUby89j1)|6ydRfWERn3|7Zd2&e7?!K&5G$x z`5U3uFtn4~SZq|LjFVrz$3iln-+ucY4q$BC{CSm7Xe5c1J<=%Oagztj{ifpaZk_bQ z9Sb-LaQMKp-qJA*bP6DzgE3`}*i1o3GKmo2pn@dj0;He}F=BgINo};6gQF8!n0ULZ zL>kC0nPSFzlcB7p41doao2F7%6IUTi_+!L`MM4o*#Y#0v~WiO8uSeAUNp=vA2KaR&=jNR2iVwG>7t%sG2x_~yXzY)7K& zk3p+O0AFZ1eu^T3s};B%6TpJ6h-Y%B^*zT&SN7C=N;g|#dGIVMSOru3iv^SvO>h4M=t-N1GSLLDqVTcgurco6)3&XpU!FP6Hlrmj}f$ zp95;b)>M~`kxuZF3r~a!rMf4|&1=uMG$;h^g=Kl;H&Np-(pFT9FF@++MMEx3RBsK?AU0fPk-#mdR)Wdkj)`>ZMl#^<80kM87VvsI3r_c@_vX=fdQ`_9-d(xiI z4K;1y1TiPj_RPh*SpDI7U~^QQ?%0&!$Sh#?x_@;ag)P}ZkAik{_WPB4rHyW#%>|Gs zdbhyt=qQPA7`?h2_8T;-E6HI#im9K>au*(j4;kzwMSLgo6u*}-K`$_Gzgu&XE)udQ zmQ72^eZd|vzI)~!20JV-v-T|<4@7ruqrj|o4=JJPlybwMg;M$Ud7>h6g()CT@wXm` zbq=A(t;RJ^{Xxi*Ff~!|3!-l_PS{AyNAU~t{h;(N(PXMEf^R(B+ZVX3 z8y0;0A8hJYp@g+c*`>eTA|3Tgv9U8#BDTO9@a@gVMDxr(fVaEqL1tl?md{v^j8aUv zm&%PX4^|rX|?E4^CkplWWNv*OKM>DxPa z!RJ)U^0-WJMi)Ksc!^ixOtw^egoAZZ2Cg;X7(5xZG7yL_;UJ#yp*ZD-;I^Z9qkP`} zwCTs0*%rIVF1sgLervtnUo&brwz?6?PXRuOCS*JI-WL6GKy7-~yi0giTEMmDs_-UX zo=+nFrW_EfTg>oY72_4Z0*uG>MnXP=c0VpT&*|rvv1iStW;*^={rP1y?Hv+6R6bxFMkxpWkJ>m7Ba{>zc_q zEefC3jsXdyS5??Mz7IET$Kft|EMNJIv7Ny8ZOcKnzf`K5Cd)&`-fTY#W&jnV0l2vt z?Gqhic}l}mCv1yUEy$%DP}4AN;36$=7aNI^*AzV(eYGeJ(Px-j<^gSDp5dBAv2#?; zcMXv#aj>%;MiG^q^$0MSg-(uTl!xm49dH!{X0){Ew7ThWV~Gtj7h%ZD zVN-R-^7Cf0VH!8O)uUHPL2mO2tmE*cecwQv_5CzWeh)ykX8r5Hi`ehYo)d{Jnh&3p z9ndXT$OW51#H5cFKa76c<%nNkP~FU93b5h-|Cb}ScHs@4Q#|}byWg;KDMJ#|l zE=MKD*F@HDBcX@~QJH%56eh~jfPO-uKm}~t7VkHxHT;)4sd+?Wc4* z>CyR*{w@4(gnYRdFq=^(#-ytb^5ESD?x<0Skhb%Pt?npNW1m+Nv`tr9+qN<3H1f<% zZvNEqyK5FgPsQ`QIu9P0x_}wJR~^CotL|n zk?dn;tLRw9jJTur4uWoX6iMm914f0AJfB@C74a;_qRrAP4E7l890P&{v<}>_&GLrW z)klculcg`?zJO~4;BBAa=POU%aN|pmZJn2{hA!d!*lwO%YSIzv8bTJ}=nhC^n}g(ld^rn#kq9Z3)z`k9lvV>y#!F4e{5c$tnr9M{V)0m(Z< z#88vX6-AW7T2UUwW`g<;8I$Jb!R%z@rCcGT)-2k7&x9kZZT66}Ztid~6t0jKb&9mm zpa}LCb`bz`{MzpZR#E*QuBiZXI#<`5qxx=&LMr-UUf~@dRk}YI2hbMsAMWOmDzYtm zjof16D=mc`^B$+_bCG$$@R0t;e?~UkF?7<(vkb70*EQB1rfUWXh$j)R2)+dNAH5%R zEBs^?N;UMdy}V};59Gu#0$q53$}|+q7CIGg_w_WlvE}AdqoS<7DY1LWS9?TrfmcvT zaypmplwn=P4;a8-%l^e?f`OpGb}%(_mFsL&GywhyN(-VROj`4~V~9bGv%UhcA|YW% zs{;nh@aDX11y^HOFXB$a7#Sr3cEtNd4eLm@Y#fc&j)TGvbbMwze zXtekX_wJqxe4NhuW$r}cNy|L{V=t#$%SuWEW)YZTH|!iT79k#?632OFse{+BT_gau zJwQcbH{b}dzKO?^dV&3nTILYlGw{27UJ72ZN){BILd_HV_s$WfI2DC<9LIHFmtyw? zQ;?MuK7g%Ym+4e^W#5}WDLpko%jPOC=aN)3!=8)s#Rnercak&b3ESRX3z{xfKBF8L z5%CGkFmGO@x?_mPGlpEej!3!AMddChabyf~nJNZxx!D&{@xEb!TDyvqSj%Y5@A{}9 zRzoBn0?x}=krh{ok3Nn%e)#~uh;6jpezhA)ySb^b#E>73e*frBFu6IZ^D7Ii&rsiU z%jzygxT-n*joJpY4o&8UXr2s%j^Q{?e-voloX`4DQyEK+DmrZh8A$)iWL#NO9+Y@!sO2f@rI!@jN@>HOA< z?q2l{^%mY*PNx2FoX+A7X3N}(RV$B`g&N=e0uvAvEN1W^{*W?zT1i#fxuw10%~))J zjx#gxoVlXREWZf4hRkgdHx5V_S*;p-y%JtGgQ4}lnA~MBz-AFdxUxU1RIT$`sal|X zPB6sEVRjGbXIP0U+?rT|y5+ev&OMX*5C$n2SBPZr`jqzrmpVrNciR0e*Wm?fK6DY& zl(XQZ60yWXV-|Ps!A{EF;=_z(YAF=T(-MkJXUoX zI{UMQDAV2}Ya?EisdEW;@pE6dt;j0fg5oT2dxCi{wqWJ<)|SR6fxX~5CzblPGr8cb zUBVJ2CQd~3L?7yfTpLNbt)He1D>*KXI^GK%<`bq^cUq$Q@uJifG>p3LU(!H=C)aEL zenk7pVg}0{dKU}&l)Y2Y2eFMdS(JS0}oZUuVaf2+K*YFNGHB`^YGcIpnBlMhO7d4@vV zv(@N}(k#REdul8~fP+^F@ky*wt@~&|(&&meNO>rKDEnB{ykAZ}k>e@lad7to>Ao$B zz<1(L=#J*u4_LB=8w+*{KFK^u00NAmeNN7pr+Pf+N*Zl^dO{LM-hMHyP6N!~`24jd zXYP|Ze;dRXKdF2iJG$U{k=S86l@pytLx}$JFFs8e)*Vi?aVBtGJ3JZUj!~c{(rw5>vuRF$`^p!P8w1B=O!skwkO5yd4_XuG^QVF z`-r5K7(IPSiKQ2|U9+`@Js!g6sfJwAHVd|s?|mnC*q zp|B|z)(8+mxXyxQ{8Pg3F4|tdpgZZSoU4P&9I8)nHo1@)9_9u&NcT^FI)6|hsAZFk zZ+arl&@*>RXBf-OZxhZerOr&dN5LW9@gV=oGFbK*J+m#R-|e6(Loz(;g@T^*oO)0R zN`N=X46b{7yk5FZGr#5&n1!-@j@g02g|X>MOpF3#IjZ_4wg{dX+G9eqS+Es9@6nC7 zD9$NuVJI}6ZlwtUm5cCAiYv0(Yi{%eH+}t)!E^>^KxB5^L~a`4%1~5q6h>d;paC9c zTj0wTCKrhWf+F#5>EgX`sl%POl?oyCq0(w0xoL?L%)|Q7d|Hl92rUYAU#lc**I&^6p=4lNQPa0 znQ|A~i0ip@`B=FW-Q;zh?-wF;Wl5!+q3GXDu-x&}$gUO)NoO7^$BeEIrd~1Dh{Tr` z8s<(Bn@gZ(mkIGnmYh_ehXnq78QL$pNDi)|QcT*|GtS%nz1uKE+E{7jdEBp%h0}%r zD2|KmYGiPa4;md-t_m5YDz#c*oV_FqXd85d@eub?9N61QuYcb3CnVWpM(D-^|CmkL z(F}L&N7qhL2PCq)fRh}XO@U`Yn<?TNGR4L(mF7#4u29{i~@k;pLsgl({YW5`Mo+p=zZn3L*4{JU;++dG9 X@eDJUQo;Ye2mwlRs?y0|+_a0zY+Zo%Dkae}+MySoIppb75o?vUW_?)>@g{U2`ERQIXV zeY$JrWnMZ$QC<=ii4X|@0H8`si75jB(ElJb00HAB%>SlLR{!zO|C9P3zxw_U8?1d8uRZ=({Ga4shyN}3 zAK}WA(ds|``G4jA)9}Bt2Hy0+f3rV1E6b|@?hpGA=PI&r8)ah|)I2s(P5Ic*Ndhn^ z*T&j@gbCTv7+8rpYbR^Ty}1AY)YH;p!m948r#%7x^Z@_-w{pDl|1S4`EM3n_PaXvK z1JF)E3qy$qTj5Xs{jU9k=y%SQ0>8E$;x?p9ayU0bZZeo{5Z@&FKX>}s!0+^>C^D#z z>xsCPvxD3Z=dP}TTOSJhNTPyVt14VCQ9MQFN`rn!c&_p?&4<5_PGm4a;WS&1(!qKE z_H$;dDdiPQ!F_gsN`2>`X}$I=B;={R8%L~`>RyKcS$72ai$!2>d(YkciA^J0@X%G4 z4cu!%Ps~2JuJ8ex`&;Fa0NQOq_nDZ&X;^A=oc1&f#3P1(!5il>6?uK4QpEG8z0Rhu zvBJ+A9RV?z%v?!$=(vcH?*;vRs*+PPbOQ3cdPr5=tOcLqmfx@#hOqX0iN)wTTO21jH<>jpmwRIAGw7`a|sl?9y9zRBh>(_%| zF?h|P7}~RKj?HR+q|4U`CjRmV-$mLW>MScKnNXiv{vD3&2@*u)-6P@h0A`eeZ7}71 zK(w%@R<4lLt`O7fs1E)$5iGb~fPfJ?WxhY7c3Q>T-w#wT&zW522pH-B%r5v#5y^CF zcC30Se|`D2mY$hAlIULL%-PNXgbbpRHgn<&X3N9W!@BUk@9g*P5mz-YnZBb*-$zMM z7Qq}ic0mR8n{^L|=+diODdV}Q!gwr?y+2m=3HWwMq4z)DqYVg0J~^}-%7rMR@S1;9 z7GFj6K}i32X;3*$SmzB&HW{PJ55kT+EI#SsZf}bD7nW^Haf}_gXciYKX{QBxIPSx2Ma? zHQqgzZq!_{&zg{yxqv3xq8YV+`S}F6A>Gtl39_m;K4dA{pP$BW0oIXJ>jEQ!2V3A2 zdpoTxG&V=(?^q?ZTj2ZUpDUdMb)T?E$}CI>r@}PFPWD9@*%V6;4Ag>D#h>!s)=$0R zRXvdkZ%|c}ubej`jl?cS$onl9Tw52rBKT)kgyw~Xy%z62Lr%V6Y=f?2)J|bZJ5(Wx zmji`O;_B+*X@qe-#~`HFP<{8$w@z4@&`q^Q-Zk8JG3>WalhnW1cvnoVw>*R@c&|o8 zZ%w!{Z+MHeZ*OE4v*otkZqz11*s!#s^Gq>+o`8Z5 z^i-qzJLJh9!W-;SmFkR8HEZJWiXk$40i6)7 zZpr=k2lp}SasbM*Nbn3j$sn0;rUI;%EDbi7T1ZI4qL6PNNM2Y%6{LMIKW+FY_yF3) zSKQ2QSujzNMSL2r&bYs`|i2Dnn z=>}c0>a}>|uT!IiMOA~pVT~R@bGlm}Edf}Kq0?*Af6#mW9f9!}RjW7om0c9Qlp;yK z)=XQs(|6GCadQbWIhYF=rf{Y)sj%^Id-ARO0=O^Ad;Ph+ z0?$eE1xhH?{T$QI>0JP75`r)U_$#%K1^BQ8z#uciKf(C701&RyLQWBUp*Q7eyn76} z6JHpC9}R$J#(R0cDCkXoFSp;j6{x{b&0yE@P7{;pCEpKjS(+1RQy38`=&Yxo%F=3y zCPeefABp34U-s?WmU#JJw23dcC{sPPFc2#J$ZgEN%zod}J~8dLm*fx9f6SpO zn^Ww3bt9-r0XaT2a@Wpw;C23XM}7_14#%QpubrIw5aZtP+CqIFmsG4`Cm6rfxl9n5 z7=r2C-+lM2AB9X0T_`?EW&Byv&K?HS4QLoylJ|OAF z`8atBNTzJ&AQ!>sOo$?^0xj~D(;kS$`9zbEGd>f6r`NC3X`tX)sWgWUUOQ7w=$TO&*j;=u%25ay-%>3@81tGe^_z*C7pb9y*Ed^H3t$BIKH2o+olp#$q;)_ zfpjCb_^VFg5fU~K)nf*d*r@BCC>UZ!0&b?AGk_jTPXaSnCuW110wjHPPe^9R^;jo3 zwvzTl)C`Zl5}O2}3lec=hZ*$JnkW#7enKKc)(pM${_$9Hc=Sr_A9Biwe*Y=T?~1CK z6eZ9uPICjy-sMGbZl$yQmpB&`ouS8v{58__t0$JP%i3R&%QR3ianbZqDs<2#5FdN@n5bCn^ZtH992~5k(eA|8|@G9u`wdn7bnpg|@{m z^d6Y`*$Zf2Xr&|g%sai#5}Syvv(>Jnx&EM7-|Jr7!M~zdAyjt*xl;OLhvW-a%H1m0 z*x5*nb=R5u><7lyVpNAR?q@1U59 zO+)QWwL8t zyip?u_nI+K$uh{y)~}qj?(w0&=SE^8`_WMM zTybjG=999h38Yes7}-4*LJ7H)UE8{mE(6;8voE+TYY%33A>S6`G_95^5QHNTo_;Ao ztIQIZ_}49%{8|=O;isBZ?=7kfdF8_@azfoTd+hEJKWE!)$)N%HIe2cplaK`ry#=pV z0q{9w-`i0h@!R8K3GC{ivt{70IWG`EP|(1g7i_Q<>aEAT{5(yD z=!O?kq61VegV+st@XCw475j6vS)_z@efuqQgHQR1T4;|-#OLZNQJPV4k$AX1Uk8Lm z{N*b*ia=I+MB}kWpupJ~>!C@xEN#Wa7V+7{m4j8c?)ChV=D?o~sjT?0C_AQ7B-vxqX30s0I_`2$in86#`mAsT-w?j{&AL@B3$;P z31G4(lV|b}uSDCIrjk+M1R!X7s4Aabn<)zpgT}#gE|mIvV38^ODy@<&yflpCwS#fRf9ZX3lPV_?8@C5)A;T zqmouFLFk;qIs4rA=hh=GL~sCFsXHsqO6_y~*AFt939UYVBSx1s(=Kb&5;j7cSowdE;7()CC2|-i9Zz+_BIw8#ll~-tyH?F3{%`QCsYa*b#s*9iCc`1P1oC26?`g<9))EJ3%xz+O!B3 zZ7$j~To)C@PquR>a1+Dh>-a%IvH_Y7^ys|4o?E%3`I&ADXfC8++hAdZfzIT#%C+Jz z1lU~K_vAm0m8Qk}K$F>|>RPK%<1SI0(G+8q~H zAsjezyP+u!Se4q3GW)`h`NPSRlMoBjCzNPesWJwVTY!o@G8=(6I%4XHGaSiS3MEBK zhgGFv6Jc>L$4jVE!I?TQuwvz_%CyO!bLh94nqK11C2W$*aa2ueGopG8DnBICVUORP zgytv#)49fVXDaR$SukloYC3u7#5H)}1K21=?DKj^U)8G;MS)&Op)g^zR2($<>C*zW z;X7`hLxiIO#J`ANdyAOJle4V%ppa*(+0i3w;8i*BA_;u8gOO6)MY`ueq7stBMJTB; z-a0R>hT*}>z|Gg}@^zDL1MrH+2hsR8 zHc}*9IvuQC^Ju)^#Y{fOr(96rQNPNhxc;mH@W*m206>Lo<*SaaH?~8zg&f&%YiOEG zGiz?*CP>Bci}!WiS=zj#K5I}>DtpregpP_tfZtPa(N<%vo^#WCQ5BTv0vr%Z{)0q+ z)RbfHktUm|lg&U3YM%lMUM(fu}i#kjX9h>GYctkx9Mt_8{@s%!K_EI zScgwy6%_fR?CGJQtmgNAj^h9B#zmaMDWgH55pGuY1Gv7D z;8Psm(vEPiwn#MgJYu4Ty9D|h!?Rj0ddE|&L3S{IP%H4^N!m`60ZwZw^;eg4sk6K{ ziA^`Sbl_4~f&Oo%n;8Ye(tiAdlZKI!Z=|j$5hS|D$bDJ}p{gh$KN&JZYLUjv4h{NY zBJ>X9z!xfDGY z+oh_Z&_e#Q(-}>ssZfm=j$D&4W4FNy&-kAO1~#3Im;F)Nwe{(*75(p=P^VI?X0GFakfh+X-px4a%Uw@fSbmp9hM1_~R>?Z8+ ziy|e9>8V*`OP}4x5JjdWp}7eX;lVxp5qS}0YZek;SNmm7tEeSF*-dI)6U-A%m6YvCgM(}_=k#a6o^%-K4{`B1+}O4x zztDT%hVb;v#?j`lTvlFQ3aV#zkX=7;YFLS$uIzb0E3lozs5`Xy zi~vF+%{z9uLjKvKPhP%x5f~7-Gj+%5N`%^=yk*Qn{`> z;xj&ROY6g`iy2a@{O)V(jk&8#hHACVDXey5a+KDod_Z&}kHM}xt7}Md@pil{2x7E~ zL$k^d2@Ec2XskjrN+IILw;#7((abu;OJii&v3?60x>d_Ma(onIPtcVnX@ELF0aL?T zSmWiL3(dOFkt!x=1O!_0n(cAzZW+3nHJ{2S>tgSK?~cFha^y(l@-Mr2W$%MN{#af8J;V*>hdq!gx=d0h$T7l}>91Wh07)9CTX zh2_ZdQCyFOQ)l(}gft0UZG`Sh2`x-w`5vC2UD}lZs*5 zG76$akzn}Xi))L3oGJ75#pcN=cX3!=57$Ha=hQ2^lwdyU#a}4JJOz6ddR%zae%#4& za)bFj)z=YQela(F#Y|Q#dp}PJghITwXouVaMq$BM?K%cXn9^Y@g43$=O)F&ZlOUom zJiad#dea;-eywBA@e&D6Pdso1?2^(pXiN91?jvcaUyYoKUmvl5G9e$W!okWe*@a<^ z8cQQ6cNSf+UPDx%?_G4aIiybZHHagF{;IcD(dPO!#=u zWfqLcPc^+7Uu#l(Bpxft{*4lv#*u7X9AOzDO z1D9?^jIo}?%iz(_dwLa{ex#T}76ZfN_Z-hwpus9y+4xaUu9cX}&P{XrZVWE{1^0yw zO;YhLEW!pJcbCt3L8~a7>jsaN{V3>tz6_7`&pi%GxZ=V3?3K^U+*ryLSb)8^IblJ0 zSRLNDvIxt)S}g30?s_3NX>F?NKIGrG_zB9@Z>uSW3k2es_H2kU;Rnn%j5qP)!XHKE zPB2mHP~tLCg4K_vH$xv`HbRsJwbZMUV(t=ez;Ec(vyHH)FbfLg`c61I$W_uBB>i^r z&{_P;369-&>23R%qNIULe=1~T$(DA`ev*EWZ6j(B$(te}x1WvmIll21zvygkS%vwG zzkR6Z#RKA2!z!C%M!O>!=Gr0(J0FP=-MN=5t-Ir)of50y10W}j`GtRCsXBakrKtG& zazmITDJMA0C51&BnLY)SY9r)NVTMs);1<=oosS9g31l{4ztjD3#+2H7u_|66b|_*O z;Qk6nalpqdHOjx|K&vUS_6ITgGll;TdaN*ta=M_YtyC)I9Tmr~VaPrH2qb6sd~=AcIxV+%z{E&0@y=DPArw zdV7z(G1hBx7hd{>(cr43^WF%4Y@PXZ?wPpj{OQ#tvc$pABJbvPGvdR`cAtHn)cSEV zrpu}1tJwQ3y!mSmH*uz*x0o|CS<^w%&KJzsj~DU0cLQUxk5B!hWE>aBkjJle8z~;s z-!A=($+}Jq_BTK5^B!`R>!MulZN)F=iXXeUd0w5lUsE5VP*H*oCy(;?S$p*TVvTxwAeWFB$jHyb0593)$zqalVlDX=GcCN1gU0 zlgU)I$LcXZ8Oyc2TZYTPu@-;7<4YYB-``Qa;IDcvydIA$%kHhJKV^m*-zxcvU4viy&Kr5GVM{IT>WRywKQ9;>SEiQD*NqplK-KK4YR`p0@JW)n_{TU3bt0 zim%;(m1=#v2}zTps=?fU5w^(*y)xT%1vtQH&}50ZF!9YxW=&7*W($2kgKyz1mUgfs zfV<*XVVIFnohW=|j+@Kfo!#liQR^x>2yQdrG;2o8WZR+XzU_nG=Ed2rK?ntA;K5B{ z>M8+*A4!Jm^Bg}aW?R?6;@QG@uQ8&oJ{hFixcfEnJ4QH?A4>P=q29oDGW;L;= z9-a0;g%c`C+Ai!UmK$NC*4#;Jp<1=TioL=t^YM)<<%u#hnnfSS`nq63QKGO1L8RzX z@MFDqs1z ztYmxDl@LU)5acvHk)~Z`RW7=aJ_nGD!mOSYD>5Odjn@TK#LY{jf?+piB5AM-CAoT_ z?S-*q7}wyLJzK>N%eMPuFgN)Q_otKP;aqy=D5f!7<=n(lNkYRXVpkB{TAYLYg{|(jtRqYmg$xH zjmq?B(RE4 zQx^~Pt}gxC2~l=K$$-sYy_r$CO(d=+b3H1MB*y_5g6WLaWTXn+TKQ|hNY^>Mp6k*$ zwkovomhu776vQATqT4blf~g;TY(MWCrf^^yfWJvSAB$p5l;jm@o#=!lqw+Lqfq>X= z$6~kxfm7`3q4zUEB;u4qa#BdJxO!;xGm)wwuisj{0y2x{R(IGMrsIzDY9LW>m!Y`= z04sx3IjnYvL<4JqxQ8f7qYd0s2Ig%`ytYPEMKI)s(LD}D@EY>x`VFtqvnADNBdeao zC96X+MxnwKmjpg{U&gP3HE}1=s!lv&D{6(g_lzyF3A`7Jn*&d_kL<;dAFx!UZ>hB8 z5A*%LsAn;VLp>3${0>M?PSQ)9s3}|h2e?TG4_F{}{Cs>#3Q*t$(CUc}M)I}8cPF6% z=+h(Kh^8)}gj(0}#e7O^FQ6`~fd1#8#!}LMuo3A0bN`o}PYsm!Y}sdOz$+Tegc=qT z8x`PH$7lvnhJp{kHWb22l;@7B7|4yL4UOOVM0MP_>P%S1Lnid)+k9{+3D+JFa#Pyf zhVc#&df87APl4W9X)F3pGS>@etfl=_E5tBcVoOfrD4hmVeTY-cj((pkn%n@EgN{0f zwb_^Rk0I#iZuHK!l*lN`ceJn(sI{$Fq6nN& zE<-=0_2WN}m+*ivmIOxB@#~Q-cZ>l136w{#TIJe478`KE7@=a{>SzPHsKLzYAyBQO zAtuuF$-JSDy_S@6GW0MOE~R)b;+0f%_NMrW(+V#c_d&U8Z9+ec4=HmOHw?gdjF(Lu zzra83M_BoO-1b3;9`%&DHfuUY)6YDV21P$C!Rc?mv&{lx#f8oc6?0?x zK08{WP65?#>(vPfA-c=MCY|%*1_<3D4NX zeVTi-JGl2uP_2@0F{G({pxQOXt_d{g_CV6b?jNpfUG9;8yle-^4KHRvZs-_2siata zt+d_T@U$&t*xaD22(fH(W1r$Mo?3dc%Tncm=C6{V9y{v&VT#^1L04vDrLM9qBoZ4@ z6DBN#m57hX7$C(=#$Y5$bJmwA$T8jKD8+6A!-IJwA{WOfs%s}yxUw^?MRZjF$n_KN z6`_bGXcmE#5e4Ym)aQJ)xg3Pg0@k`iGuHe?f(5LtuzSq=nS^5z>vqU0EuZ&75V%Z{ zYyhRLN^)$c6Ds{f7*FBpE;n5iglx5PkHfWrj3`x^j^t z7ntuV`g!9Xg#^3!x)l*}IW=(Tz3>Y5l4uGaB&lz{GDjm2D5S$CExLT`I1#n^lBH7Y zDgpMag@`iETKAI=p<5E#LTkwzVR@=yY|uBVI1HG|8h+d;G-qfuj}-ZR6fN>EfCCW z9~wRQoAPEa#aO?3h?x{YvV*d+NtPkf&4V0k4|L=uj!U{L+oLa(z#&iuhJr3-PjO3R z5s?=nn_5^*^Rawr>>Nr@K(jwkB#JK-=+HqwfdO<+P5byeim)wvqGlP-P|~Nse8=XF zz`?RYB|D6SwS}C+YQv+;}k6$-%D(@+t14BL@vM z2q%q?f6D-A5s$_WY3{^G0F131bbh|g!}#BKw=HQ7mx;Dzg4Z*bTLQSfo{ed{4}NZW zfrRm^Ca$rlE{Ue~uYv>R9{3smwATcdM_6+yWIO z*ZRH~uXE@#p$XTbCt5j7j2=86e{9>HIB6xDzV+vAo&B?KUiMP|ttOElepnl%|DPqL b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..080d6c7 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..59cc7802a497e64b6c7b1776d53f4c35fd8b54d1 GIT binary patch literal 6148 zcmeHKOHRWu5FJB-&E)NM5J2NZiDE6h#VxwN)=g&aXY7iZP=Q9pwfMGXiVet zFzEzg!CNXs0a4(uDZtCwYx@rG)*Jt^J&MC5?qf{sqqIx+m~$61e=3iOdWKg%Ce8w* zsPNa4{}!~pr9Q{R?ACK#)c~(>n$z`=M)2ZDj1YxulmoiLXcO>5M6@KHdd0lvR?Hs! zdSFb^&n1t^@hoNX`pGl#DE4Ct@LGd8HG`6i0-}H@kSW0XgNwxISxgP;tpl090st$h z)`l|wX<&|P(X*HuL<>wAD$r1sy<#XsN4;zPJd3G8Lnmb~AIgrb>!Y h9P0uf#Yafm(B^Uh=vhn+q6Q{^1hfp2i2}c>z&De(y6yk~ literal 0 HcmV?d00001 diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000..2a34fe3 --- /dev/null +++ b/src/App.css @@ -0,0 +1,52 @@ +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: var(--background-color); + color: var(--text-color); + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +/* Dark Theme */ +body.dark { + --background-color: #333333; + --text-color: #ffffff; + /* ... other dark theme variables ... */ +} + +/* Light Theme */ +body.light { + --background-color: #ffffff; + --text-color: #333333; + /* ... other light theme variables ... */ +} diff --git a/src/App.js b/src/App.js new file mode 100644 index 0000000..d6023d4 --- /dev/null +++ b/src/App.js @@ -0,0 +1,49 @@ +import React from "react"; +import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; +import { PageHeaderProvider } from "./context"; +import HomePageLayout from "./components/layout/HomePageLayout"; +import CreamDashboard from "./pages/CreamDashboard"; +import Prospects from "./pages/Prospects"; +import Leads from "./pages/Leads"; +import "./assets/theme.css"; + +const AppContent = () => { + return ( + + + + + + + } + /> + + + + } + /> + + + + } + /> + + + + ); +}; + +const App = () => { + return ; +}; + +export default App; diff --git a/src/App.test.js b/src/App.test.js new file mode 100644 index 0000000..1f03afe --- /dev/null +++ b/src/App.test.js @@ -0,0 +1,8 @@ +import { render, screen } from '@testing-library/react'; +import App from './App'; + +test('renders learn react link', () => { + render(); + const linkElement = screen.getByText(/learn react/i); + expect(linkElement).toBeInTheDocument(); +}); diff --git a/src/assets/images/logo.png b/src/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e79ab6e860e1f499212363a1bd1910a04d963296 GIT binary patch literal 75610 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 X*6|~q4Hdl%z{kYET)$ZF&g1_Bq$d9y literal 0 HcmV?d00001 diff --git a/src/assets/images/propertyAnalysis.png b/src/assets/images/propertyAnalysis.png new file mode 100644 index 0000000000000000000000000000000000000000..4a3d5cbcac45775cb025c1c69e488a94c0fd11bb GIT binary patch literal 395643 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

8rKGt%>BgQM{O*V>36`GI^IDQ>Sq z<6W1rMC}8Te)JUjNSRW#*P(L^_wPZ(tD5%%&Jw%0<3XzLALMC<33}0}t)d=`8`z_! z&l>4Jh&nSml*KZs|EJTV&Mxb`CV&0(SHxT}HOTpW5&BQUUWLFINkNplkxzq`HB;%W zc+hXvCoIsXp+V*=jtK!t#A|>O3+0q|gNmfUXV$bk^~*x8z%0bXPwFw$+2d46G?Ax@ z1xFwN%}xA{DcQ_nwR5v+Rm%ISR-ZjFI;z}xu{1nfkFC3C8GL>tR(3gG?so@3%E?Xw zdZz9G<5#@SXdQ#k6z>lw40l3*Tw;~}OEjBwySK!D3vsHE*pvrl_^FqriL>kmwa@}U zt|S>>b!}1H=i9fgq(8>6@hQYU@;-8a~Li#x*H*ICDKVo zp82UZc%q$ds$|*Z+b^dWJU%ouVB`6Gy7Er@J&Vtc2O1$dy{a*tVCwIHs)+^@slMm4 zmN=CIorbL1qE(hXSfEU}a4is4u@Sl3f~k)C*eFAqyv&Rj?Jp@-Fv!So5@r7*WER1N91!e;Z_oh3$*RC6rUir>8J^J5O zOHhs$r-O)oQ-zl*~1z{)na&6^K`MxX1b( zIKIe$FHM`A#?F9c)7L`c`frttXkyd)3JheS^-UFrUU(h7=Kf{`@|n@EL^Ohz9B238 ziDQk4c&xC~ykSt%4I;ChI#Gz7x)`enk#jZwk-w5%u)qLgeA-i@xr#0Pxs#FC&NMg- zI1jFjV@7JdTZwm4qnclTC* zLiF20;ArT=3c5Ue3Wh?tA!^kp07Osp_XlQAR4JyI*-v=u=UoVIJq{%{=`%YtiRW8M z{ZdWp0EF#Bk9s+`#D9P|(EZF9ygFsHr+TNku+h;ia`HC++BG$!Rzz9xH9m~jp#$rp zbFYd(K^$O&u`w<2Eqi|LK3$q5i_E&r4UrXw@9W@K_Elb#!k7Uy<}fj_{~a5Hxf4EO z?-Jn%wqQaV+0CBdHle0cpd_#J(gfCy?n>45tfiC>opzQVjy=Cw$}=(wtl;3_Fr>?I z%XK*>sS%lCO7qO301SPyvmLUz?wIC%6>6V;=>44EdW7HnH;iVg54VF(!~ynf*NegS zKHk}^yDbI0-Q+`2<$~M<6+ttaurH?CLtHA;m0%N%3MtMA=H4$KzZrNF@~qvUsmbTS zE2q6q*`#U1^&a#s2?{fXEb8VyWt?sgf9=UCxXznIEc#jK+d7J!_!GQ_IdhXkW0}*9 zyhYUK5-K`*elNKn2HK6mZpV^*rShr@iE+KO)UQu-a$W|%Ih}-*N{_Q#&l18A0^gaA&-?%G3`@vW^#o`=*DwIeG*}_*AR?5(Zksm zx-R|hP4(WvcJhk%25V0b%=jXlFHpo189VzX-P8yMAtiq~D}@^8OhC8g{NqPTIn=n= z^n)+NlT@~3)`kG07yVoXmlVm68rCR{e66eJpvw2GK~`Ram<`c4tW-I;!5mIZb6d?? zj9{j$Em^Dz-azZEbv87&+3rR%glq-;D(GzA>odV`EQ9sCvAX8B_;8zc@3Oci8G!)Y z#!3w)0%GDS)dLSB-$*gvqtHbwMONIZg$Bk<4ceM58Ojvd0v(c(g_SQky;od0U(ROB zait|6r_2I?Z$4%+VOXaWp$lk1cKf!@{GzPL1cTl)==No7D31AdBkCRVaiyJFu>|ui zlWID2yHPAXk7w6>55LTl6f6@@Pw`KB?-Lz%=;{Q=&J#9qPm*?qkI3Zhk`BgyX^yd4 z)3T7=bBPoM$t~sd1MZMrBMVFoBq~hyFS_{Zk6llGLq(K3=DafRj~esDHdnP`>8--; z4(MH8JSli$Vuy)ezW?}IQ0X*PHo= zAhs9SeI4}U-}xQiuw*_XI?L=O<~XlTFJcLF!U&bEDj*!Wqw(AYE#Mq~n_j|UkWNu5 z3+I|2rGdsnXfom1-m~Bl+##be|0u!?zrw28Cu(b)e9b+L4v?plWfTp21nUa9T;@KM zwRV9@7&)seoz^vuReQm8P|b&k__J-5{jKmrJG|2EX4Q~>Gp2o&hc>Oc+=`q<#UiQS zlvVa+gawh`MG(dJm$z#Iqk1GW^t>|k%FpM;svnDveM6isKEFgzFu{Qy(f7YQuU@>Z z(j_mQ2hN}0=AK#S=8eDV8d}PCllN78tKZk>842|YBn;Q+aa~qoL(9LuI5(X2z_TZq29GttzB#UY$o>&b>g?x&Pw= zBw7|)6&1$>2J~Jo?947RMf-XnbE%rA1+*l<^owz-^ylAby-&;#(&3fnW++F{;;!qX`sV=wGS~=JV8P8*_)9&JEn|L zOA417-DUT1j`y}B#><$?wUuo(-{C%K$@Qr8jkEQJXs36FYY0S0sv!k6*omioV9$ip z5IVenI8gow&i|`h_K{rgPCIlHju3Df<;!H}iqw2#KHOXQQ_NubKHk|fI4eyOelGHF zI^Vmq3Uov?i##(EMi_LxF1pLyx{+`xa-CCe$Jw6aPp6W-Zf%FQ41zp$9hoS3v?DZk zih9gY-7g>>>P)FkiwH`;J~w|uV4PHYs@CZL1IrAHd8ICsUl$P^=Lj0kJJj{wJX`q;e&iQL?n(OY58sGfM*zYCG5AoX zhPk_tXbZbtxS6+c!MkB3DtKDhpwbeJ1KOlzrG{?Jf;x_=>)@A zUo-mN8>Rc@BLLOoMeBYoGi3P%GW?AQJ+HV^Lic7FnIJ?*T>wb`u?7aL9RHid10bqv zn$%TUIn7ScOkKUn)kN}C^I?fXaddfxG}AQttE+CWZSea)^uekjy*LwQDc2Gm)?{KK zM5YO1D-&Nd6h{`HBGq})-&v-kKQypC=vse@FPa4gActYs&)53xlxQ1ETbUqgX)^v^ z=0?(x)FOaw1b~HSw85*}4jysO}U0B8s zFAWc^_dPhFvis#N9oZM6q`+b?v)Px|t4`-N(A)Et_O76^P*`2SD>1=1ev(X?X*-rW z9;wDXd(%m~-}oXDaK*f#>Y2o4IAi$vy`-npP~683CUg~6>9yZ=CFn9YDPH{hXPri< zXS=7R$JK0`Gjlnr_dmb)P-vsTt&5ALOgeW1!EmB;L9`Kae1Sf9ZT}e$n4N_yxRN*J z(#Gf>^;l;!e+`>^PN$2*O+mPa%N{sP(3hsR;HM8t>_Zo0xA&$F7PKM_1JbS|am)Ea z+#zr7pO{|1l9~dLtw+?tt83pL<1WCF8K5}w4Pkr{yk~qr4C$szaY-CZmapq8(Kd?N z@gb)EPr0oGROGe9VDk%u!kZgxAVb`4K>j5lU@lG==<8I*dVn5jVX|T~;_OUeF5gC2 zueNh}$JelO3&_AGbiAdT-D_w68={qbp;F zFu}zmz>%HW1RMatD*yYJ!&N2J?xXZ)_Cf(MLY1ulM)A9u9EWWj+u6gwcbla6Y=&Ru z0#VzGDaZQc=ph>NmL?G#01W~U#B6PB)OxT|g@r16Ty~*Da6sbomsK%AElnUI34%4f zQ*N$2%uD8n-R?u&=Q+d$F5<39z9>XF*rl11l7(Kk_HEIK0)6XgtRb8H! zd>DdK2$`|i!W7*&&|sz&1N$R__HubKYDMyNRj8W7We^M9VOo{M7J& z*^{B>{4$AYd&I^`4voQ*Bn(=WGPDXBj*A#2Ozc`fZQI58!xD~i|Bio3otr(B&b$Z) z*7W!szYlg-i1b=o7*Yy=o~x0W7ODO{%BDR@SdYMgPL3t9rj%En(`!)0F^~LZGc|QT z#xpG8(+|7M9VYazmXRdPEg&WrXMC*>EF^%+(xvWwW=8K}qH6%{ZezcD30dKPnyMAS zbWTiQdcT41ig&@9pQ&;Ojx4a&om#1l^!ej8O3C9RiJ82igj1~4I~>k6=o8ahZvm=8 zLqiKEf1Y=>c*5+%(unJ5{eze!yMwx50SKab; zC#XL89d2#?=v0^h7U0^~nWA{rl7^KnD&86HIv-^`s7&tJFfjM0EA=#tGt30JBRY15 zd@@BQW+UiN+44n1f&US?ju#bvf*t5&&DJK|(8~Wkr~lsH*XLh>;$-2*pvlzFfCL5#C2@;}%W@z4 zo6}4>kdA-i>RU|yQzIMA2vbiGCXps z_JMBfzaIf$cGR?s{>wBQCT{Le9lt-Wp%H5?FerM}*_6HOZ3$8dY|co`JDRR|K$~#& zdHDRIj9O-|4okjTt<0)&Je)e*LSTuss^JRF(=r@Dk%i+bU-L*%w95fHrPJyOuiJFN zyLAr_z!)t%j`Lh(3=Az1*F4^|R zm{=TAUWCb{dkp^TVIjsp6-ldm!y88tzymmh31e9S9y2~ZYeWpH2B_|*1eY+Ng?psC)G=$0u z}_?Y68?=R%!Xy2{ZAfKMi$Y~kUaigeZc)! z!!dbDb>boDy%9bzl)GfD;>++U(?6rM2MW5-o-%ykim2l0dWs~Ok3{f;`?ZBYRH5UJ z-}E~o0@)W__;4QaRkeNeZl%&7*2$Ms>5Ba-{{R>eJkOdp4(>SZtUSfh;rSFDc$pZ@ z!9@fYfVyBwy{J{-j-{ACoEdfQ#HNU{ZKapeYNxQejlSz~>IcnX9=mQV&r~e0jqWYd zf>`$$pmtv)IU#xPC#^F3;VM7O%V)}Qg#iq3A3jGe^u*>SI~=kb=?bQ!&KQEBqnG;I zbKi}E|A8Mx-?4!Mbv6Zi2|frYER3uj_(^tn@w%piWS!Fus~m92e}guG z69*eLf&7qfxtG1{+t|4GeLh%X{uq63)z_YLtB?lG+7R4lY}vp5$u+=C?m4)RP#p3_ zHJD=pKmDj&!p=`vwN#Z^OnU-Rmx7fLAR@6G6)jC}gZk=^>1h_5{nzvSD|F>#GP_8P z1kWY1{pFU#kJoXKUTvG4?V@=TmqkPrWO)KgWlp0*Fxo`?9$B|!KT8C9G5Gho;iktg zG#BqpqB*NoL19a?Gl;Wtfz!DgWc>6|Et8Vso6Ve&%9M>gZ!Z*f5Q7Do%qy6fm;kO? zQ04!orx?WP{@tnW(!JZ$H_$*k15=T@M;dwIMM3c%|mb?0LGn@W%`?lEuQ(3#(=ivjJ9 zP0O$Vg_-83x>l&vl|3y_qiMmjIt~4M%j}~zzML)-b@&%on9G1m!K-ayufAUi15H(G zzR6TR9&FEG0bz*h8PbHnxTKoq&pp!L`;+Bshcz0ae-?}`l3w!hZtrhKPKZbBfocz5vN)~<YywmCsCpW4Zb6<{BB}KshQQ*c$3EO= zSQR&ruqkI|shPH>qs3gP_tWEH!#kxkh1H+0x%&z4%OIf6QX}s%>Dhemg3i$r4j{`^ z_-|Dt8nZIeOR#Ri^NHR;%hNBQ>|@XTHFwcaZqgTi(06x%n6W>IcdN(LZQD5??Sr72 zYk}7ukJlGypKPT54IQXkME$(7&Hu*);Zr-zozm(t7}{UniY2~$gjahVC|AMDm1_wE z^M6IkPumzETXojB!`$?Bu2BNS62Krpjafdd@Xy;RFbzG%)G&Or00wiID)$+MT(%rn zp7L5H3qS3MqDWCijaD#n6n;WUYge_M1j-pt{Oo7_3Kfi?>H#6bhQfwbG%)0qan}6c zg`N{TSmbJk`tO9BsANYFBKl`kk16L!+VVBrsU8~-pT>dG;cxNq)GqFCndx%faOm!d zszmUBH(Xt6POceH|Gm+$W;-XW%ydgR5VlmvdSkL~Lp{vjKQi=^c;f`~r=QH}QLjL6 zPp2knUo^sIj{s-D#e3GzA29z>!xEws~=5b|r??z1((&IM zdYBD**SLF?q&nVYHPIT)6WZH*TZyNhm%;%nA72EhgqBJ4^mHyo7}iLM49=&t8|DSU zXlYi#%*={gi8Qfu{`MJ&P3vP7Ty6)0@!R5Ns< zz;`QH+Qzx$OpXi;C31CWK~bVXx?0Zjmcp>b@Q5g^wJV=t!7FTf z57U0a_f9PlhuV(BX&Er9DrRZHxRqAO&!qma-`_Sdl1}pwsGXRce{Wb@ z^{S>W2rb)*iyU2^(Rcj&1Pn9Oj%9lB8oHZI#4BI`8LMw+8;;-n^5@a=o#fg|DedKl zupj3Cah&<|6=X1|_QhJd33(K5#Mm|e)bC*E=u#D|>(IT(Xui6uLIJJ<6I6s85sHea zD{;SLk(r{7r^jA=$r^!2^*K&Y951f7TSPu3K@!<;~V?1 z*7oes6@Lkh%pBDt6mV2QxJxTKb#8?RvYxhHB@%Z=zRhhbma3~^$4^&)!k+?&;0|8C zxETq2!36pO%aX5$2VT8zes<0{GnKr4ljdvLFSzJSv-S zR)rgTXXg4-850Re)MHip7Ja8B?^EznHqQ?S!>18K{?ioUG6E-F82h@>6-!pbNjQu^ zm$ZndO6OtD5NYzd)>5V+tY}K}vk#A!miJB6q3crewd&{JczrDWt}IyLDb8NO+-Rmv z+zzwEVt)vsO1#^^(=RaaY|7nUO>O+o3>_0Sr!t-MGwi8}h7Bs1q__hn+_;+aKe_hC z`2Xw1ghTZmzk%bCs6;!m`~xSMwVb*DH-nfYhOhajOv>dkOy1=Ici4q@GGp?gyK)tI(dCvFxP-g&g!a4zKDINZ8B=Z6fj(6y z#SFXkL$LxIvC-U6rzkBACccYb5-z(t&-rRB{R)ff415jtjIg=xa+klGTMz_pojU?% zpj)OR#$By(jquDdjOuzV55q5jfhu!sr}UY8XfCGiQ>n9xM&qfOV_X7`l%+aT-K5fr z-Fag3!?+ebupM_b|7${75ecP_9SR5>_Y2DX%&WU1P?N<;o5P)Gi+lHe(f6JomZ+CY zDKy)ZnT^ly`oRedofR*9gKZ&37acObxPSrH9?QhXi-h6D8mZ~*6E#-bkOY&4Falpb zo;ANy%2+&M$(P#GZl>B2Zu&93@~&*mfmVkF7toY?eR+EoZOYqoB7M}3dyi-0zY9JV z0)Vqn_F=MNA|%Z5?Hua=8C_ENL_S8QtN5KJFSSUo2{I7R4=3vP_uZt_jVYSIj9r@F z#T32;*9G@VW45Mb&4Z*~$FM(~po!Rto&1o+C=w%JJNMV1W*97EByAj(Lp}iPUvT^* z=Y9{MCYtM=qvt7BWRbi-k%1e@alsCJJH_YVawf2ho=d_u(wAh(E8ksf7CUCStbbSkreMDZ{4u(r z#Y?N6nuFd1RiDQ??tIGL6kDgaz(B|O&&}JaW&{C43J<$VJG$#Mc~6pO|2vzP3uQLy z5B=&jxqZ+^>^IO!2LN-p^z?Kzc!R`fwzsM02b}PR(}&}UYb<#1B!B3&b{6(TBj%L_ z;7ckvQvcx`T~hD&Iu(R-0I9(?g^6tW&L%*~ryiuftB=6Zwk^}KI{@@P*ZBuYiy@B4 zm~}arKP#U_Yky0in95PF5I0OHoTLLNwsx^FsfRl2g2ZB7M$^!~7!aW@>G9R`_y@v6 z$boGgfkkZeO+POdfk!to>y{x@y-7f96x8E;IMBBHl$~@!tde>2oyXVz6M~LgIAF%D^5W%_ngnu~(3u@! ziyC%yG}IJarDE#Z9mSCj2~42ndN&R?zJY5pl4A21t}ERV6Tt8Y&};3B7+#MR`~d zZ-q|gcW2Y>-iJ!B*-m){P_o8)X!ohMJ%)RWSZZn0nuF~N);hxXr)hkbiBaR!FZ_7& zf5CdB!hp$LxR)XTaQ%{!mNu1dMwt6HkXNS^Ah1pOmoau8KI59KVc-H$_ci&p-gEv7d>>uM;GsBn;IAD82B8vc* z3_&-pyCX^n1^mC8T9hhD%exWZX>k!vp|Caq@O%B?{rp}u9_2&tf1?KPv0%VJ)ZN=c zq~4t7v;HlbUxf|}C0@eLAM^OWB!o-!4$c?jf92p6wMHbsrlU1Bf4r$cUK{pmZ|enw z0*#)t9GBAgx-bOcHrWpgx57cx$%7)(9Yp{|=qqmGxH5JkYkBvI)gt6c^)hc21WeEz zy1|wBldU^nU$$KjSD6aPEhrs?7=8}1MOn0yCj~Cb)^wL0Kt|*maYOIz@8^4#a7TH~ z>^VwEGq2?|aS@v(cqsWLuk*X1 zYj`5?00^Q%7wYhV`6kF2S!{+mUmrQBb$R-`N6`gIOAjsWkf+HCoAh8CE+qjRcQ^GljWN;P^V>t-PlDjS`r8m*c>-`t%J_`ur5JF9`{8F*wx> zR~~Rj`DMok&!2Deq!P_dzc|3A8+YMGT(k-@g}GuW7QR75A$V{Amzn`#l(SRwe_3gi5n0hM!nO!kc{_l?x0ua)HzqYk7o{8uEVPsD%!F{FzXvVlCSLe1f)M8Gu zS#9{&FF75&gNCXfY0Zw4tv?s%xo=2cFlHYnChg~++vB`Le&g-S2=2ouJ-=Y_?LC+$ zvf(X!m(Gpk8)C|wCKFm^_)V`V{e@rFZx-DT>N(_>hGGI=0zRU@-kh$(uDisl61Fi| zGGkg#z$^0cH(6Jf(Zu|gA)j$82ky9EAY1mOYU*=5^$Ta)59$3O8Xg`YiIT5Z^U>cI z5OWiCBcCkAu8&b~JNSXp@QSci^xzi#6}u#1{pZw%pob&$4V{wDdfJXK=@I+ZE)O>s zB4}O0YP;shl`zZ(Q6~+*zr5A)ZO;@HTRE{zaq3d?mqDwH*5SelEP%*0Ly=8TbX`+O zixwioIvCkcNO60C#OZ_x(4d0V&8zAc*IWCjF*ZYkakn*Mr~;+L`tw4CaR7*?MYC!} z#d{zEuboQ?YvF1k77TcG$0SWl~aUq$);cDjA2+-#8vg|(eMZ6wg|EPlv3C-M!~ zFc5`MWji?$b~&r+ppHXV`$4TPy90x>5fGy$FLCYuVW|N7bh-6LI+Ev(O-Fw%GxTe$ z!Sv%0t(2ow7dY%;zSz|~`W-q229x-XeB_pIGI{th63f**JL0|)VHVRZ{*0Q@8Z8?gPV#0Iy@Fjml1TYnL#3{UOyxZv1=1+tLHeRLgZJ`xr zsblFrPH(IFL5vkOyufpH$GpvdRuOl%>*>Y3m7-dI?;-uD&CBB=M3YQAS} zCe!K0$uZcjBxq61<%Tiyn8 zqKb-2W@b5Z)8Pc}EYCVg0{O$FoCV?$coe#dyj$OplEgAB=jjY4fE@m2f= z^nezs6ho1r|I+t4%8j_k9)(8vR@p zIM9ItaCQC>zm5v9S=Ia_pF(h=yq7#=ZGP{#l@NW77`ONZYQt0hE>!YD1VGlZQm(*NI_Cz0w3lCF_QWHBcy43Wk_SKXrbiZfz!z%#mrB+U3uL6 zEoB^j9`KO?hTw*q1gynLi4wzqGvrSeR>24YWeCuIv8iS1?FqC30r@9AdwcNwOgv{_ zu$)(H$a?M{c$4H^n5$Z#F(rWmE!T;aoKA0n^yVeHSTzpRqVoAug;yFM3jc$kn5j2H zsEwOYS=a{aU+FzZnCn;uwzuo2R#hj>GY8j<2uV)!(7|H2F|58U6;0RxlxqF+W5{*b zb@=nR$=KiquVE-_>xu@h;iz70W*pIn+=;5qc6(!tYNPjZ=q)wiqXnz;-;>;JWWZ!q z^a;d#ZF%;VIRFiJ(dt*Afh+Mu>S6V3UPMtb#H{%uvOa(p20?e}Sd%}M1TtQm7wKgU_I6t{3whtye0sI!VoXs& z?AGX6ulT4!1XrgwnIo0^fw9<^41xH_0$`6GuQ1Y7^6DUu`S!nT zpAImX*dZ1stqzBgz>`F)ovEZN1Lpz(2+5NouK78Y7QegvEJ_FOS)h9v=lOqJ03B>G zYZDU{5`;PZ%*}kQ;=`yFP3SCm`wb<34+e<1cxGe~IA7r}0`+Mz#ZX*yAyruR#WWLqj@=#o3n(+QwgBy%DAy_er>0 zKc&-L2hANd!E?T41Cali7qZ_9mdgdDagX(D)Mam5Ki8w! zgg`QeFRwtAn~FbqarnWk+T$UN|48-}1j01OjeiFFT|}RL=tcDOk(&c7YTJIF5lJ5W zfN`%(^PCVQRR1xX(J^?RJm+3f23Oyn?73gDRyd;AQ)N2hmV!lkS7wn;ZTutY1e)LG z)Qe%wDuVwC6@s>rX@-O;^{GBP@B$F)1PeUyQe&ATUV^EOch84PRl(6`Mb$g`1)=l1 zr}Ag7XP*@V6^hEr%|5SQ+jQ4IZ+<(e<`|2~wB5K6Cj=AL&cNFzX*U3f^xZCp+Z?s( z{5Bb80+b*?PKg(`mb*N+n$6(j{-r3^{)vbGhap>&kqkJhKRp z%w_fzOO@siP2gHb1vub@XFKtjwHBy+);5ufL@T8oYs}g1z2FZ2h-gTrb1KG$&?WLX zD0IK!|MokaT)7({|EkFv{F6#kWRCl$Tpo+pL{?YSvdgZBZAI5P2zYUywR$SYcCpW; zRZ1%KjeE541-1h2;QSA^sb_e*fd7u~oTPumcfil%)@W>K&%f)p3iOM6OfCqJ8aLCY zOd`ML1(aUqPun&#t!KW!c`k8-HaZ)pyi8#tE*b@=mH@G53C=z1rJN*qV4EYy>(N8z z7A@RA&;IRW-=9+3Hn{TCAAHZ6auHP;F_KI%mDw3`D$J_6gN1ClA+PtFlOBwGOL4w1 z*jrw1ZTb>I;zj%4e2ZmrtUW7V`<-zjrj0LG-<&HAkDuDUoo>H-_@f>g`D67w{z_S~ z`KgbUP{Pj5jXVIQ04P=9Qkmwr#cQNDPgwh_ac!_W#5KQFlaV^jLdi9H8{%<6r--Fw z7+9&Pk)nxQiV8}x=1h6o)XInYhogQ~T1}tKxa`VXE+VOl?E))=C4>EvTP(9O2n@sI z+4vBk108}~7zdvvN)6gL$vguR77e{B_CkjCP}BO$PP?;dceZY(z=IW50V z+1W3-8NCy*?hui-=aXRtFO}25=sJ5+c3(Y?$&0Io zv4jLZ=gun^ull>2f=<}xJh`$+j#+;-9mQrJ%RiY0C2mV>RFOfs%CIqeJIIlK#|H67aY@lJt=KNVUM*`INw?G~uW8F`Rd4jg$uB~JJ@twF$*7yh zux69GGa}_x&-0|sCD{v0Z@EaC^IuE#GWsa}E~7t}ksn5tdEDpBcMBi_ZRb5BE`iW{ z_EKM>$B|QH&PZ%DHn0t!$&JG~SbR6%o{>W^bdWtUqPT1nU9gXpA<|q zD~UIiorAnK)T_X zO<`$G6+KUSxY}OpTK%#GbtQr5({Wb6`m+5;A31xfqfnWnf&=j@S-6-r358EBG`76x zA=z|$YpStGwpF1u|tRD0gzw({+l@vKpdIMnXkJFYnG0 z!s<4s4$Uv4xwpXcf1NvQJ)n28 z(tF?K+B>q03z)~zn4n=11af5RkAVC`4wEmV6EU@kxW=jnE^t+N@s|GH0ZkUO%^Ue) zSx1#A6TMSJeZO{;Cjx8}MK`CrD=-|xQwzjH-L2$)doQY;HLNTBQdXo$ku5S{^eNAd z{qc`TJvHUH`lDRG-_cePYF{~=OvIMHb_a*Fru2#a)@K5ADP;D>hq*a<*Nr$Ys3iVf z+|COntO05Ze}6SnT&PFz)=m!mviO1hY8`OKB=5$}mjQ)mT3_+qyEStRpjk8Pack;6 zhTe>F%tO$cHBQ5LV6HArYn67@E^#;DDoqZ^DtZ9wsdL?`Gw4tk(odUlOXO>gU#;!? zNZG33(gzCbcdUNk12cZ);s|I$T|#<;nK9ENI9u=qpZriGn#8V}Lo{-cw?fux;D^LiB5R>WSFI*n z5_^R0r54UTrii|3ym5(QW<5G~1Z-nKy<3Dn&PQ0{sC&QjtWz2{CCOL}Vx`aJDDH!Z zFR^beplr2*WT;>W5e0I|lgp)RzIh7($1avBD)MEq7`^WSZEyds#UlNl1ogcxH#QgT zOA$&>w-j2Nq1#V~@N%b998`*d^7S%38P4F#VqDu^4}yu+(@-B?N6SK;R$UtzkRR@5 z2n+msWQUJTG`ZwZ0oMFG4*kr;#`0?;EFY ziN@jct}}F*A{;>hnm>U?-3D1K+XjtH|d;fII!uDiC+CRy9n!(Ux2Lmf4e84T6Ldp4Db^ zE>o+E075Sd7_JBWhjKsL9C+wi8ULWjl+D3>ug)FGf&*|vD_vhz)kEx zDDB5`&GcZ|n{G<2+1E&k-pOQwbw2(#@aGruZ_jIwmB+nzbPbe9{SP{HcxoBu>;XXE zbM7ulCoQvn!(9jgj46?5PP*q}c;;B48J+7f_wwG4Dkm|4b&Pq1C^}SK1JldiV;Df- zHRM@>Cw-u=590f-%FuEbqV~zF(MR&~z47sU_D|?V}YXVPgsQ5HYX*cBzoh z=JEGd#RL$0r+F*g#b!m&yd&{4A24$chAJLUF0P!`*E@S&$!69M?9DaLT9yNKLMu%MIE|$gsyw= zu}g!YyHZ4Wc-SO`D$TNN%oo`H!%m~e8czVZ&nHhQw+w(NoBbsL1AL7-Yw?W0p<$q~ z8h;50GiSFr=X~wO?em*iY!8$#R>sNj=UR>1Je^cDeEb{B;ERX^?i;Zm^KaXP-!;Vl zg&>cC=}$UrQWyjU-8A%8;e?Ns)47nj;()f>)O zrwwuIy^h?>rQBE?gBGDeQZM5(?yZGi_lScg1{A3Nq?8MVQq9dtGh7jvwOF(@{Axer z-&AoR801$jN+?0Ak1yca{`E1`R_OWXjvZTO9p;=`OT(Z0xKnwQ5W~pL61M`@QN(=~DR& zS6YV-hq`X>Yf-}BVS-Q}Tt?_U@2u1DcBkNR>t_3@G?aD*Y{4&#ni+|f{#tuZ<=PzM zxjLuM8yU6Ei3)}zE>NkJ*)Yb6P#0fc8XlE&(wp3^h3TmEe#FIC79`T! zs{sMpy8OB9Dj7Oqtxi20J=ecp+0TUL7$xMEj-PJ17ioE)Ds!DSYU>*;Cp}=0gt~0O z=R{Ovu4-u*uJ`s`|$Tt!W zRH(tSSmg(q$dqs4HkWm>f+2t^&h1@gIoC5xBkabSCzWOe-_09C%O zO&kEUiG@tYs+jRIcH>QBX+Pq@`F(Lmm3R%{do0Ge%G_uTHU%Av30D%r12i;e2U;V$ z3|I>;5Yet1X@}bu-sLC#lQ*QL%&jOEZ*r<;&K zbXag@V;b-2uUFIEO4^WzFiaQf4cY6Zrct!YtDuYS3=1#>F47hij;))MKi1eOm9D1S zs1^l0uHcAPtqj4_cvi#D?e;=&?0F5iw>XlC*21%WZ~a#E_^1r@PCXpGQm?E;cI%T? zIS%${@>zX_1n&7$vIPZxH<-{qhLHlZ{ngNIe={gh_32H{K%GcDMuBYd7}gJ+1%j1T z;Kfl&{#72~A{6)&_=Wz9F?8K>3?ly9rF`f0uYv(fPI}8xBqs-0;2RtJvL`?$%tcRq zz2=^ngZm#RcygtVSeRsBti{Uphe*rd4;EbD;R2m}omilet^{Ybo9_L)cCZ*fJQD(* zJj6q5B&q;$Ac-zrLrRo52T+(=+>9Xy7XkW;gT$Jw^R^=;jJxz{?gQ^a8Q!E2nlX%M z5o05uXavn@yKkb^D0pIz^X?ytX@TwOIt-44#NM4st~~ zAC{stQXlZ4=Jy2k88N{ufcANxKBeELfM$S;41iR#>`2-~vf%Qplf98FTc&4Pvzc`r^pZ6Fd_I~57xTL&U zy6fnPH%^!#g64NDnmi6(G*O$*xJCRgKQNvZ7(|_Oui+P)l*zLHy;e+7^s6rjL7@?T zbl;Knj6asu*XHic5K+b^(%WYS2Nj4~VDXm+L@J+9LDbiao+QbE3ZZ=S+)Q$5aR1s* z{aWu+&s1zqtrk5d?>gOo+F*enGYzlDzAI{gcKVo$-OvjCE)(ei9)fx-+aX8idv!pS&Vkhn9}{?n?Yy8{0)aDToX>1zFe-l#F@gq;KCxFW0TFg71p}G#=j~`NrB#x4g!yv{w zSP8UCfY^ZnR<)hlMQw^B=|wE%sr$AdFF%Jl+K!tT*>pyW1Fb6#ccc-9M0~E9zNQ~n z5;;q9LiN5L*Ge`oeUX`oOodqVCvfXJEFUb5uLun@F?KUohsJ9@jf%;NAl+mI+Pq@L z!E-3+a_#=*s{q=|o>v?^x*zZ~4)E*~fA~5Hm^U)GqW;0axMhndYv5hIPNM-8A6mcj zY%8PG>(H<%!@nr;e*pw;;)s$A z3o+;D!~V2Z0XlK(WEC$aRP*;x@p7s!=t`!(3aZd~~T4WD@ zt{D|s*DQGVZ*iT;q1AwpgB~mjS2mAo^ejK(+D)OfHhoCzdJa&3_9p3$ueF{kuZ+PG znD&Y1;91K-=9VR|p8o;0D%u}yl^e5T1R(JVZKrso^cxC+f94e!zI%(;n70ddxRgF4B zMd}13;1x&pnO8*VW+KT>3Ho-G5h7*cqT4nD z<-F729D0eFVz^5l=x)l8#cOonGww@d7poxhimvW0~ z1r4k-*r~f$Md)~FWRNjR2xvyY)kkMTi5BBp-%oU^m14nUMh$^A2%-+me;8YKJvIrv zR903fSVDS-O6se^U5Ey;f>`o)ZpqdP3OM}BMp)9ii`8D5;Yf%6;u`&s|Mc^rb5F@l zHE!ZJH>85WlPgE~r>@K(Z#>cJ7|h5lMC!C@pO4I$M^xV}ewGG4kReifSF|4-V`U0+ zNv)d>ymj+|DrkwL+m*m3LIKWV2nbtdup}$1q+$am;}4?QU66rMk-34BO{TTiT@yYq#X0 zL-EW|Vt0q9qYJR~U>gGg2-_%ZzN=?Z?J65y?ps~WysySEYt$$+e%{86W47x6f<9Uz ztc4^(+R49h=T^aVj zHA~knOh)_ntiq-&Xty2r1J0M!jf#j8CDcMlFt3Do(&tKQs*o(qFrg~PuuMRsgacpZ zAUSPP7Lf~Lo-Xs}Rz$`7+V+~_%#|(cdfVz}T@5JpMJD(T8ArWw*I79K<u%hQQ5W^??&ji0dhoc$PdjNEo+e zct|g_c*26D?Xf_2p&k&?CY(9qu`6HQq|QO^?hGe))|n9$o_Q`WZUuBf|CJH`Kt3E% z1a|eX0Z{0TRpPwC>44_1Q(Kes3a69i)>O*?#xNvFTW&n#bxwD1T^H5il8L?0-~olt z&4;F}(DI${n63~(PP;Wf>Lfgjp-dL4AMLE@X{eV+4@WJMlZ*D$k$BG&p>9gQ#3$A! z!qWCZl!Zt?_weS`zKD*r-ee7c-Au8j{ycNjKAY`o?H_?J>kLHRlQ&NfPDWxBDdEIw zMJ6xGzS-2iYh{F!1IY`Dz4;w}`Vdn2+_sU8ALZB4YcF5td9MhGnTDtsS4F5%1+Md~ zoF6ir`bUp>*-v6Ie=LN!)NMiPRq|2W`quCZi+)}7wca6FCFf_bhM8%(Vhi<|T7 zW}SXCu8|)G3yWU-SQE9IlM8e>`A_tNEMuTX1_+9ntx990BwlpH2iy{qX{t-B=L3BM zZLRdZ`}pW^C5@#6I#+&aVEkK?6BZfDnDdsrr5=tGz+I}FKvgcuwouB>h#C`Alyz48odioUNipj|tH*zn%=Y_vXs>6etn zV@s6@rzShdq6Y({C(3!bAO;xr3un&beq`i>bG~|LdO2?@(?bsmoK%x~EtKY{J~t;O z8lT>NT=&le&|`DNYWFLUtF$h5QD5u@)UAjj6}tJu0i960u*qzE+!5a!srIKXeowRK z=l~+a6Yr|sv~2}Su{FIeQp6Fi-EN2s;Rq%2Y2(<3qs<++U9Q#GK(FUFkjLeMsG=FT zv$iytGT}^)qHgj!ZO3ic?vo-*A=G@~x@5}%<8$C&Uf`&%XTeAYt8gQ^5VMxo`1QTc zUy5l}{N|#K^3}itSnk&`QRQhU{eOm~t$Xci-(GMt!Or1Qspdazv9cQv*NwojK#SqD z>_mgo9Ux8I%hw0MPctseSxE#QfTaS=rhT2{e#hIwQ5UW6@LTT*P9uce>eQ9v8e}$A z(gY~pF&=CvA$^crGDz2~bjnP+PwR{m*G9sxeEB|)!Z-7zpJ7@?dcpQaJ?OB1BTb7X ztvlsjM5^&iWN^L;6`;TZuSvF_DOjJ3SQP8q#6T~+JhqJ50quGkBuU`CXy=7O4u$5| zD6fQnZrsXD0}w!rJ_fXLN62@f=k{2+TwTa~U+;irreJY~aE3nU*2PpFn4tGTH@u0d zN-axMqG)x}fS0{b(}Z_4iMb+U8V>YOvkhTT@Wiq{?uD{)2++5pn*321^*M6DV`AN8(zw6hP;@P z>-DQZXruN6)Kr~sB9_td4|da`R<6i@X~83ofpvm|?+97unAMtf-xu^Y1`$sNvS0wJ z+nM_cZG9rgl$hr~i@rSNg z0SMNBGRjZUoqER~YidgbaR_P|Ex{fCO-9^su7T%%*x~WsNB*ne z=NvjgnU3-L(vjakP+V|nTh;Waj*Nly*=}~e8zPKt&sK?d^|Q)fPc;R+s#->4u>G` zhe@YeiAJa*&D!r9A%9%J0?JQNqrcxtLTr3n%-rsMzasufxSzPB(jowxUu)k&Nr>#?+q0bN9YWRJ5l$i zk+9?vn{oDu4h&#BTqS2!);N`{GUg_mR$-Rcmq-L|;XBLD1YLC>aaYiBYmpH#hWF_d zwS*revm zhR}lcanAtZj5TJB*CTCDpUDVO!q}LA>PgLax{XwrzcY51qIaIGFN_@PjT+b})iG+_ z&X7W$PoksL5CcgJR^PAhs>;JGGuD0HZ*_nD{`DWaAAK+egAEdtUGf zKeKeAOt}g}2IXb}37~vsyM&7>U&fL)fk#UG;Jh>noe3_3xoQ~@y_|Suq*Qy{h$+QS zPc5YVwMOlzH{+=dV3<8f>fjwUF90*JWaZTp1#i^v(9b2x)Cajh_`n|7siCroYww2p@<@-*0TMW6&`2{jc7{jLB9zkb zI4K37FQonnX~cMM_-$&edYsil1L!E^+1_{cy~QiATCITA?ylceD1gY1 zxTLjgmPGVwWWD9^P5YEM=li5cla;&{31K7J~wsU>LdT*9P0l@Cw zjlh-^WWdH)#D>}F6|AZ}R=>AM#?!k&><(DbY8+@G#ezyQ`!6q|p%|?79PeFZaaEvw z_$5yjG82WCx8?^i)=e$|N-;9q4n?)9kQOP_j$On5H3B5sTz>oH6qCWQxa4c^QgskH zUtWIaT>yfNeygsyCv*V7Yc(q$1<>1W6<{*W2D||PZktRTTDtg@(%#n`r^Q6Z0sqb~M8Es%IY{Sz+x1|W+3ak3mmq+0$ySea+IyujM4 zb-%zC1$J8^YKGx4)y(W(->nB!eebbwFHm|8WSg4WrjcPXMy?W2Im#PUVWy z?C|LoI4Rw4yOQifO(Af z1QD<$nLIySh62j?o9vFNfnP-FEs%-=cbI;!l~zgP=3)~Y((rC5 zV6a}$_{7%1kuT5Ahdty7NdSPl=EPEBKp;#^@sh?FGJX&ve%J-?^XtE}gqTHAO==ug zC}ovMo6H5$of*#Ag7-eO#;3jNo1>nd81Mp2dUHM7hHTC(F!=Xz6|fb}PY3|PF<>}C zNo|=;RJP;l+*d#(vOzbuf1P_9UMcX1P=pJO!xEucC`&#nc;PhD0T2nS-@d7TXI@ms z7OZU&6ZHXniG7#?o_-nqFjm`;F9Ih9>Ocd(?`B#EqM^V0zcVOPC9w>^v>nm_4fm5Q z6$1abS_m0mYS;_YI9A{Rdospv;B>PDrjdYxEtn$~A$)%X1RDBBxVsNQ^dCLt>&_4Y zN>}d74{4{DRd{6t(?(tQ45)l>bZ^g2fl{A4iTX}D*cx5`742>8sMp(~L>w}E7!dND zGEP#BBvlcr$IzY~+^58k*hrDi9zGqnRC~aED?o{xMNNCn-9p-sh0VsBCO-cB_>F8; z;42jH@&h+%@=;DlSEyX3kZ};^lnpq|tAhZRe`n;rc@ddWW}lQwI+Q^GFIwYqnk>fM zO39MQn)C^t-4}6Qd%GQ?!Gd`n2X?jaJM>ZtT`cdYnzL6g`odnlu9ZBZEf6b+6RtkZ zkOV8zu0HYSSkP}e%PDD=u}twsUKoz;XJ@O%eX#l88y?=NzT4%%0=?rVP`DzvcHq_FJV>H4yD-7||-$YB%>+ z8%*SOphF*RsK)LD30@7)OBnU9^AJWjs6Elfi^n3aa?7X7P&Tj3%Kq8H4e1#&1Pb}~ z29)Sq(kv@QK;dHJVlf5<}lO3ubg0j*H$uVz5=yMqdiam3PI2@ z4q%-|d+IOAl|Bw{QE*(47CpiVz}=V=98`tk27D0uy#!I3n8W__BgjdIm;Eg{TBZjh za+obOl$-SU(*#kK{wTpA&6|cEs7-J*GD2B_EBPJ91}qBzI~qw^j#Qp~a3sEnT)*H&iLGP~$&?M(@l zb-7`W*@GI~h0z-!NZ6oJV(S+(Sy>hYfxPu*kK<)e$LAfswxI?zgbZaXQ>r~w&)fd@ z^XoCe#L0h)e_USWXz3)cpj529XzK~cLwultQG4U(y@~W;NpxF4q2uj+F-fW!de(^L-Y&@hTLGy@i=Hdee7@dN`~@fDr&^i{g|^ONN|Lv zvp%dr0191%OB(Hq2{=^PUK>DtQae3?H+qBeT)1hFdiq3}y^jmIKbk)MaAQnP5VBRT z6J2eLjYS60p4+EOEmp#%<;U}yLk&N(hljbF1xuJLW;v$)fx?@y6Z`FlYtNgZAzXL^ zw-GdlxN7EhV1SSM9v2$Tr=VkC*It&SP=#eDuI)Wyc1I5NdZeeWKS_!-PPprhy+&L9 z!^&~eduNQ>B61lZ?6pj!wYcj-vINWf3i zj*ozaLJ&k?^Ry_ zowdWVf=*^VayqK%jS5t3oSaM;7n+fVFD5{*zUy`I@am^`>ih0&LB*{4+o8@KdI}g@N!cWi6V(z5d+@taAB4nB?X}J zGP(YQVgiMY=VX1~wU#Krz*Px9pQ8ja38*DihQT}{6_!-R%OTf^Aw*M4NURG3Zp|T; zk-R9QkHf$@VNNQ0Xm*Tcutk8vgA>w#G9+klb(M|*+hV8U*ktgF)T5If5cK5N&KnN} zdd8~b3q&XzHvEs-CMH;|bT!$}{S0;z8kjxtdYvhEvCgs)cn&Stx!zZda3~Rtp}~$a zGcQ|R>q0yo0q0?u%KIL2R(6&JcXtcn*Yn;j;lE?=|9!ticOt_BDmokk0J85wPb97m z5Ws42u9F*U!Rszd!*%YR^L+G(*-V~LOpWr#*OQ|xp%4)mhk3j3&yGuPEUT}&Vd~sa z4bbG2|LVNxUGJ$O>#F138b~L`k@dFOH2)MD>tlE{$9ndd$?5wp9jxx5&INsIc0S+M`$l0lBn z>qsow%1`>rdi|@b!~KtNv**f-j=a;ZAsZhXvketRE-o)iNWR3WS&O^1)o+*XzZL4Y z+HNnn&bJtFV0BdWQrikRtw7kNz-?O!<4#ZNQ)WSn03!~SoeQFkRtKlrgsOxfqC4;| z6h2k6xGx2w_jP&t$S`Mg?-H&%+Du943)CIA`sN%2fd1gKR4Mbvp?}o1FMM~`TNRu_ zd|eJNUaI_?E7SG3q~bxPDph>Id>}Yr!*^X_)vs8z6}oV3f`66yXjToB&93DG-u6zW zB^@`L=?WGaic~>zPyBt`W@Ky}34kk>A6b*H1G{37WhmpJtJ<7TDC|FzKoq+;@p~yU zsP=F!`4zab<$04;u2`BSlIVFqZYZ2j`+wcsg93xhzab46+pQ2m71Ef~%5LNQ-|Ubc zN_(Ppu^CNI&-fNsY^ICnNT?!&LA+D`0|C5wzhA^xdj{|_ z*;w&Km409K@0r;v@A(ikjgBqa;Sf#%QUUeaje<)Ez?O;?Q=Ea0(QHs52KA4n1sV`V zr0JBZYpkr*6rAcx0U2=tZ{Y1tOr+FgbiC8^O?Sv;BtMAsZO8i`?29oNBg$bqF^SqL z>N4Su;b*FOac*V;hzR;rs$T|fqN7g`-#uu;cNTG-(2lyvBno>yCD5>x(;sqE$yUyF% zOPYZojQETn=;c&0fz^mecw#> zYr#L52)v%ncMW}s3pONPv$uF-acHI$ioogsMRU z`P|i6%3GARHTbfpg&dxo1Si33E_38ECoHPZ0$6 zBUzz|KbG8tj)F$EGf=}0WEaSOh8tDWSBYu>hY_$rr_5Js=y#?)>@3}L zrpX9#%YcMjhUt$uF!H;v_u(X1OV=$2i3Qrj1_~&gA^Xy+`brPxz*b4X@w(5czKwti zTqhja4gPC1@<9$dzR>$}FQwTnWQQEIqsdyZ)%S1odv4$(uFIZ^RH5!Pqs^x7N1zqB za%`_9my@PK_PSNt(}bEf(p9R0g_PKs9$BytEesxExBy+o1lLd?`;+vm63y%N^TNzv z==KY$X*8B;ok;2L{|31Pl}HE2Sx5CqQXgD}4#jzaZ~!eW!N?pBNEM^oyLz zH!6=!u$$+xGhBMr-6j`&Vp_OgxBOS4Nwkk3g4|70my08##!qeu8%#^&mJN`-;dpPu zIIaf@-Y`$>6^o9e%blKn;}DP_;tUAB|k>c<0GomIxFk0mh8`scVFvCFy5)0|RZxcPXk%Y`d*s_@DS!u`<#F@#I~khWpHeE3B*vvV{7u#yEaSA9g z=&%xC54tB^GRknfFb~hK7g6gddtkknp)u z$mVP;42g+CjEW+oNc`7w@r&bg+jYy^)5>zSN(_9Am1oG@1=-RdwQN@ZzW0x$49>Eyg&Q@-EzQ^l>+$C#ijW-qEj zFp}Ox<7l6k3AlQmf5NIj3*h$lk!RQ$3LbjnP@5tUxX6mI4 zjPhD5);pL0fK6+x!2pauVc+|rK?(KK&#VISLd)3Ce)3u6ZSUuL!*XPK^hho}yy(H7 z+$&~liDulqgG_DV?2Ni+fvkOn#NhVgrfE}yw*B4m>rg1P{{;R*g>tPLJi1$ydQS*2 zcw7{IBfMV?qc44f?GnBp^>FtrZmpl8zEw+t6@_Wy0t%7a+bGmcYPKevSYIH3_l|MA zIaL0y=2ba_glt?#_TI3|kPRD;*YA@E zWPP%WBB;GapAXD9hTrK)yr0-I8>ujF9JQH-#@>T1B(nB*yTm~Cy>A)a8U!mbAP)go zN_%0v8Giq>zr=djFIUFq)_A29qO_ZHV=zGGA9L*Qqp@+uAGuk)&NF$zV!ERU;gK|9 zx5B*s;b}Az5auw3e#7L^Wp<%XuZI} z8na&%PB%A60S&3njpkrPQ@a?d@HY$YmNjc)aeKJNRjQ&t7tE8>cZ^}s-+*33HhD%R zO7K@>N|VDTz~q9<$oxT*k-V_(%IfGygC#@{B!iVNyX>%l8;6(kC+J8x&W>3Cim7)b zH04jObp$oJY{RQ4PkYm#Y7hogx*54`rq`p>m2rmP<3k!f!&xRd z(<=d)bxqjvRn;T@0$uq{!Gwi>(99qJ6j^##byY9xriVNE-Ke$QW#1)SvF=&REibB^wj201j|1*7o(w^Q}6YV7yn`4im9e9>^eVTI>MJs(PG_j=!4kU^D zJWaCI2&V2O8-lTidxv^Yey#sktVTnC$0Uj|8>%}*aUoUHF9Qf}S$XdHh~^#$Ll!nU zy2}V(**kbFtJi=084bBg8!CdDV0Au-^E8|8g67&N@mh7K1q)IN9b?5P1|8;4mT z>jI3Y^-gi>7)0toP?fB5`(l6{8A-IMn-{&%-B^OzE+5kM5=($AulC{riHRJp}i4FQw96O*pRUjk09_Z+f0|JL;hG4qX7K>iw;Z z+4s^b_3O^I2^?c^c`O|y#+)#zt($ZNZ(2FQ@W-2WD}u1LoK@q2zbNyTBTMCNg<#?O zI&a17q0*nOWW?MEl>WDdFA$PYJ+o7H-3hz|gy@{)MOWBKu67zc=a`YA+CouX)eSf0 zdl7FnfY*g0#%GBdJTkq3_VM)%UkC~^xqj0FoB26@Mv>Hpe61{6;4#Ft%Ja#+&Ty-X zhh9q)0q0w3h2$O4szZY7jXL|3m)L5W=jM^~+bt+CB*1J zYbzyoKU)HK?~YVYVrlIMd&bNI*I2Zyk`k20R`Ha^Q7Bv*h;^{Hn$9at2nA>mWN>S( zAy}9A_Z4o=i>P(ulT%UXfphSS3_96t=@zGqN*4k<1`uSR8v8jgFrY!bOG5;pyRb6N zi(1-aY3aM6wrpJ!O5;h09)AIgr6|;muxDC4sXCvZ{AlE#7eKMJ8X~?9)~IZt6q3)0 z`Y!yDd>st>$Y0A3%bC(?}1lga=mxOlDV)xhSyh@mn2kb^q!M$7C{VN zR9I)W>XI>2s;|)_z4nE*r_>tYSYd`shGS%nqt9cEiTJNWbsQ~&8(EP^b{={vgANz@ zKAY)`g&8A7{Tt}F5LzUL^@fGVI#amEbcKz-!$aeF30j4()kJ4(eMh>1O>-22bPdKeYot=sfO+EyP{ym8^ee`U)YQ)w%53`{&gU7lFVQQ02=3LY{X`J~+wrD+w!|9c< znS}_T!_LG^7oqwaD%|rzu)JvtC%y+p!|B4vdBJuPlL0$j1T&=d8`V-uB5l@Kf?fVm zBYO=sMZB(lS7>f5boHkUtQS*d7VmDWFJwkB@ggzbxM6+wz~h+eo86C+<2VdQ)x2uT zU>Dg!C?HnNId3E#4uP&YcKmpIOE-kr^A&;}r<&i6dhCG3$xT*)9VlE}8K)m+y|Jzg zDn?y}dcEpSq0n^|JP=Z&zBgYYL7l>?xD&7R;s6=qwyU~t9BkImPqC|Os)$k9+&`z4 z=)$#-%Fn_zgas^gSmH_R^@2RMalyBbJ6SrqB&@&25xS;1xf80_&wkXw!YVoHAN1Hv zpHj16S7xd&Ce28hfOVBVWj(yT_&J4X5@x{rU4bbX0$ypS7xUY&C3;w8m!a*0){S^3 z-Qsmrl*&PRgsr0HTCD08Ym(MnpEYyHCP)x#rt1llsPbQ-WdZl>pklJmN}OD6Qeg31 zsb#L+aQk>HMzrbpq77ZsxJc03l#{Oawt-Z>&-WEu@i_S4wey|RU0opP;4y&+;3OF{ zNF+9hxtdwUq=HZ{TYq(b20LZftgAFMfFL`ji5b3i4Rh78rqYsp0=XfG+leE?{tq~! zFrFzT^{U_s_ea_aePm9r%W=_}iw7N96I#Iv);L9n0PSB7Pxitv_UHzhIM6jDcF_9v{dyvm+E}B`ET=Nb4sTG<5IZPzVK(vx}odc zX4~~VBU|n?dH#9XQkb6*+(N80XZo7iQo)Y5nxkl~#S26fP!XhIn}4mp*WTg=&P!lT z2+AX{b$ElbOhkj2y<=*lBf$HMF`T~Y9E(X2AFfpYY$D(Xx{zMw%TyVX+j%#|j>JGP z%VI{48_!pAaw@Lo>MbMyu6x!+#vtX(!tlA-sdrvqNrOiM9+7=~U&Divja|$DGH9|& zdq|DVWDWFaG8{SM@l;X14siWPhX*|t%tYo1JA7TRxOU#>$Xya)P&R|6#&WgE?J*{4 z`RMr+WitxH*P07`u~nqih9y4pGYwA!S6FTGh{}c0HB9H7R3udw4V~^%nTBF)pU12l+ehM2t2QbGm3`>P|svEN{sy$c-qIX1X!!-)0 z?6nhkRSj4y3@NEG&@Hmjq%(bUCAMc;BB|%vx0lUD7KPomuJAo7HlhW9^GJq0-9+lrPi;C zAExQ2c~*|UkHI|a-AZKMl%yt_p9s6dC{*wKsWI~jPZUt)1KBn#y^6vV+Cc--(7;3! zhKLDtucrod?<*3Z{;zDL5Z`@+r$C@3{zYjer|P$B^GMrk1W6JGlD6{)MXu+K1#2;z zn>+nSLXid*yW(f*VP1ELuYt2B3?-2HV$`69?nZ6hFJ}3(%}rkC zf-dL9fR3jk0ft|tU9Lah+=>Oa07TUkVy}lOkn?04C<|NA=2io;b!}!fNCe{KSfTsu}zg2H5L;(wuj#RsYCRm;@S~k4| z{|)0%j(-=*uU^hqNDLWfSwRQAORfw;0?^m^K28`zuwY_@=Li(<<)9iyf+tdAPpIyBhmrQmXSPKiOU zt1wj$Y7WgyU|GRD27rl&Yd32k?KOY$G)_gNGmmh&z{WLsckf16Xi#Q2qFNs+#1~PS~aPMx>>Bx4>h47pFHP6zGm3(8TYUIw}}Yu zhoRr!p;U_&ShXK3H~2xqoj{l;#G(!|xdsVXdpZ8HXtcap(&;7^i3^ODM^eG;EbgP} zp#njc9;4U3Z)Hhaq9}<4?59l%)za1EL>`kaPk(0ugD)?)Zt*bNF!z?KRL#ff7PPQe z|B^vUPYDYL9S7 zB5i_HqleHmD@nN`{J_D`@PK9z{lV?(@%rbFGn~9gJSJX`Mt%CyEq%XF0LY&ylhxy} z$7`he5KJ8&)^q$p{h!UC_9iW>u$`2BxD84(i1fkMJp%0D9nU@kfDf3eVtS3->KIL3 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%0A1v!Br?C}l~ckgH49XL(b-0$MZ6n2BgAml>k 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

{/* Apply the kontra-x class to the word "Multiply" */}

- Multiply your deals. + Multiply your deals.

From 5dbc5ecd1ec8e9f1b54d74a487c2edb10c043d36 Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Tue, 26 Mar 2024 21:04:01 -0400 Subject: [PATCH 082/118] Styling updates to the login page --- package-lock.json | 2093 ++++++++++++++++- package.json | 1 + .../layout/SignUpLayout/SignUpLayout.css | 4 +- .../NewAccountModal/NewAccountModal.css | 101 +- .../modal/UserLoginModal/UserLoginModal.css | 68 +- src/components/modal/UserLoginModal/index.js | 33 +- src/pages/SignUp/SignUp.css | 49 +- 7 files changed, 2138 insertions(+), 211 deletions(-) diff --git a/package-lock.json b/package-lock.json index 84f01aa..5c1bc9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "dashboard", "version": "0.1.0", "dependencies": { + "@aws-amplify/ui-react": "^6.1.5", "@emotion/react": "^11.11.3", "@emotion/styled": "^11.11.0", "@fortawesome/fontawesome-svg-core": "^6.5.1", @@ -32,6 +33,7 @@ "react": "^18.2.0", "react-bootstrap": "^2.9.2", "react-dom": "^18.2.0", + "react-icons": "^5.0.1", "react-redux": "^8.1.3", "react-router-dom": "^6.21.1", "react-spinners": "^0.13.8", @@ -283,6 +285,78 @@ "node": ">=14.0.0" } }, + "node_modules/@aws-amplify/ui": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@aws-amplify/ui/-/ui-6.0.12.tgz", + "integrity": "sha512-8TygWyqtn3hnfUzO67xJtitBTreblbfj3cfRwfDgpoy8JfhIZPrjCDTPGqemXMKLGW2P0TaMnTvz+OxX2X637w==", + "dependencies": { + "csstype": "^3.1.1", + "lodash": "4.17.21", + "style-dictionary": "3.9.1", + "tslib": "^2.5.2" + }, + "peerDependencies": { + "aws-amplify": "^6.0.2", + "xstate": "^4.33.6" + }, + "peerDependenciesMeta": { + "xstate": { + "optional": true + } + } + }, + "node_modules/@aws-amplify/ui-react": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@aws-amplify/ui-react/-/ui-react-6.1.6.tgz", + "integrity": "sha512-nir04MLahGQIYKFZ9a7iPIaQmB96M1AgA3AxFlsJ75Dn//p2BlhpSbPWrCJbeyzONuPPelOaduxeb3d4hYHTLA==", + "dependencies": { + "@aws-amplify/ui": "6.0.12", + "@aws-amplify/ui-react-core": "3.0.12", + "@radix-ui/react-direction": "1.0.0", + "@radix-ui/react-dropdown-menu": "1.0.0", + "@radix-ui/react-slider": "1.0.0", + "@xstate/react": "^3.2.2", + "lodash": "4.17.21", + "qrcode": "1.5.0", + "tslib": "^2.5.2" + }, + "peerDependencies": { + "aws-amplify": "^6.0.2", + "react": "^16.14.0 || ^17.0 || ^18.0", + "react-dom": "^16.14.0 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "aws-amplify": { + "optional": true + } + } + }, + "node_modules/@aws-amplify/ui-react-core": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@aws-amplify/ui-react-core/-/ui-react-core-3.0.12.tgz", + "integrity": "sha512-BuWkE0fnG1qxr85JA5QFFPq3vnFaE7Xqi4QZWFXO8Tbstx5s4/lOwKHlKbyMfb8a22SEmPVeXthSyii9WUwOdw==", + "dependencies": { + "@aws-amplify/ui": "6.0.12", + "@xstate/react": "^3.2.2", + "lodash": "4.17.21", + "react-hook-form": "^7.43.5", + "xstate": "^4.33.6" + }, + "peerDependencies": { + "aws-amplify": "^6.0.2", + "react": "^16.14.0 || ^17.0 || ^18.0" + } + }, + "node_modules/@aws-amplify/ui-react/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@aws-amplify/ui/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, "node_modules/@aws-crypto/crc32": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", @@ -4097,7 +4171,6 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -4114,7 +4187,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, "engines": { "node": ">=12" }, @@ -4126,7 +4198,6 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, "engines": { "node": ">=12" }, @@ -4138,7 +4209,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -4155,7 +4225,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -4170,7 +4239,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -5791,7 +5859,6 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, "optional": true, "engines": { "node": ">=14" @@ -5903,6 +5970,420 @@ "node": "*" } }, + "node_modules/@radix-ui/number": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.0.tgz", + "integrity": "sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz", + "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.0.tgz", + "integrity": "sha512-1MUuv24HCdepi41+qfv125EwMuxgQ+U+h0A9K3BjCO/J8nVRREKHHpkD9clwfnjEDk9hgGzCnff4aUKCPiRepw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.0.tgz", + "integrity": "sha512-8i1pf5dKjnq90Z8udnnXKzdCEV3/FYrfw0n/b6NvB6piXEn3fO1bOh7HBcpG8XrnIXzxlYu2oCcR38QpyLS/mg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-slot": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz", + "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz", + "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz", + "integrity": "sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.0.tgz", + "integrity": "sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-use-callback-ref": "1.0.0", + "@radix-ui/react-use-escape-keydown": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-1.0.0.tgz", + "integrity": "sha512-Ptben3TxPWrZLbInO7zjAK73kmjYuStsxfg6ujgt+EywJyREoibhZYnsSNqC+UiOtl4PdW/MOHhxVDtew5fouQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-id": "1.0.0", + "@radix-ui/react-menu": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-use-controllable-state": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz", + "integrity": "sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.0.tgz", + "integrity": "sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-use-callback-ref": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.0.tgz", + "integrity": "sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-1.0.0.tgz", + "integrity": "sha512-icW4C64T6nHh3Z4Q1fxO1RlSShouFF4UpUmPV8FLaJZfphDljannKErDuALDx4ClRLihAPZ9i+PrLNPoWS2DMA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-collection": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-direction": "1.0.0", + "@radix-ui/react-dismissable-layer": "1.0.0", + "@radix-ui/react-focus-guards": "1.0.0", + "@radix-ui/react-focus-scope": "1.0.0", + "@radix-ui/react-id": "1.0.0", + "@radix-ui/react-popper": "1.0.0", + "@radix-ui/react-portal": "1.0.0", + "@radix-ui/react-presence": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-roving-focus": "1.0.0", + "@radix-ui/react-slot": "1.0.0", + "@radix-ui/react-use-callback-ref": "1.0.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.4" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.0.tgz", + "integrity": "sha512-k2dDd+1Wl0XWAMs9ZvAxxYsB9sOsEhrFQV4CINd7IUZf0wfdye4OHen9siwxvZImbzhgVeKTJi68OQmPRvVdMg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "0.7.2", + "@radix-ui/react-arrow": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0", + "@radix-ui/react-use-rect": "1.0.0", + "@radix-ui/react-use-size": "1.0.0", + "@radix-ui/rect": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-popper/node_modules/@floating-ui/core": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.3.tgz", + "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==" + }, + "node_modules/@radix-ui/react-popper/node_modules/@floating-ui/dom": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.4.tgz", + "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==", + "dependencies": { + "@floating-ui/core": "^0.7.3" + } + }, + "node_modules/@radix-ui/react-popper/node_modules/@floating-ui/react-dom": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.2.tgz", + "integrity": "sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==", + "dependencies": { + "@floating-ui/dom": "^0.5.3", + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.0.tgz", + "integrity": "sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", + "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz", + "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.0.tgz", + "integrity": "sha512-lHvO4MhvoWpeNbiJAoyDsEtbKqP2jkkdwsMVJ3kfqbkC71J/aXE6Th6gkZA1xHEqSku+t+UgoDjvE7Z3gsBpcg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-collection": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-direction": "1.0.0", + "@radix-ui/react-id": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-use-callback-ref": "1.0.0", + "@radix-ui/react-use-controllable-state": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-slider": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.0.0.tgz", + "integrity": "sha512-LMZET7vn7HYwYSjsc9Jcen8Vn4cJXZZxQT7T+lGlqp+F+FofX+H86TBF2yDq+L51d99f1KLEsflTGBz9WRLSig==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.0", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-collection": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-direction": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-use-controllable-state": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0", + "@radix-ui/react-use-previous": "1.0.0", + "@radix-ui/react-use-size": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz", + "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", + "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz", + "integrity": "sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.0.tgz", + "integrity": "sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", + "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.0.tgz", + "integrity": "sha512-RG2K8z/K7InnOKpq6YLDmT49HGjNmrK+fr82UCVKT2sW0GYfVnYp4wZWBooT/EYfQ5faA9uIjvsuMMhH61rheg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz", + "integrity": "sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz", + "integrity": "sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.0.tgz", + "integrity": "sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, "node_modules/@react-aria/ssr": { "version": "3.9.2", "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.2.tgz", @@ -8320,6 +8801,28 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/@xstate/react": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@xstate/react/-/react-3.2.2.tgz", + "integrity": "sha512-feghXWLedyq8JeL13yda3XnHPZKwYDN5HPBLykpLeuNpr9178tQd2/3d0NrH6gSd0sG5mLuLeuD+ck830fgzLQ==", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.2", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@xstate/fsm": "^2.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "xstate": "^4.37.2" + }, + "peerDependenciesMeta": { + "@xstate/fsm": { + "optional": true + }, + "xstate": { + "optional": true + } + } + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -8587,6 +9090,17 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/aria-query": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", @@ -9294,8 +9808,7 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base64-js": { "version": "1.5.1", @@ -9627,7 +10140,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -9637,7 +10149,6 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, "engines": { "node": ">=6" } @@ -9683,6 +10194,16 @@ } ] }, + "node_modules/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "node_modules/case-sensitive-paths-webpack-plugin": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", @@ -9724,6 +10245,25 @@ "integrity": "sha512-TfxnA/DcZXRTA4OekA2zL9GH8qscbbl6X0ZqU4tXhGveVY/mXWvEQLt5GwZcYXTEyEFflVtj+pG8nc8EwSm1RQ==", "dev": true }, + "node_modules/change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dependencies": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -10102,6 +10642,16 @@ "node": ">=0.8" } }, + "node_modules/constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -10203,7 +10753,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -11129,6 +11678,14 @@ } } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/decimal.js": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", @@ -11317,6 +11874,11 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, "node_modules/detect-port-alt": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", @@ -11363,6 +11925,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -11509,7 +12076,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -11539,8 +12105,7 @@ "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "node_modules/ecc-jsbn": { "version": "0.1.2", @@ -11593,8 +12158,7 @@ "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "node_modules/emojis-list": { "version": "3.0.0", @@ -11605,6 +12169,11 @@ "node": ">= 4" } }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -13057,7 +13626,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -13073,7 +13641,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, "engines": { "node": ">=14" }, @@ -13346,7 +13913,6 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -13360,7 +13926,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, "engines": { "node": ">= 10.0.0" } @@ -13438,7 +14003,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -13461,6 +14025,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, "node_modules/get-own-enumerable-property-symbols": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", @@ -13822,6 +14394,15 @@ "he": "bin/he" } }, + "node_modules/header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dependencies": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -14809,8 +15390,7 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/isstream": { "version": "0.1.2", @@ -14930,7 +15510,6 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -18299,7 +18878,6 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -18307,11 +18885,15 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==" + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, "dependencies": { "universalify": "^2.0.0" }, @@ -18323,7 +18905,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, "engines": { "node": ">= 10.0.0" } @@ -18592,7 +19173,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, "dependencies": { "tslib": "^2.0.3" } @@ -18918,7 +19498,6 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -19129,7 +19708,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -19526,7 +20104,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, "engines": { "node": ">=6" } @@ -19540,7 +20117,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -19601,17 +20177,24 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, + "node_modules/path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" } @@ -19629,7 +20212,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } @@ -19643,7 +20225,6 @@ "version": "1.10.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -19659,7 +20240,6 @@ "version": "10.2.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "dev": true, "engines": { "node": "14 || >=16.14" } @@ -19855,6 +20435,14 @@ "node": ">=4" } }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", @@ -21571,6 +22159,162 @@ "teleport": ">=0.2.0" } }, + "node_modules/qrcode": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.0.tgz", + "integrity": "sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/qrcode/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/qrcode/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/qrcode/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/qrcode/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/qrcode/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/qrcode/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/qs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", @@ -21880,6 +22624,29 @@ "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==", "dev": true }, + "node_modules/react-hook-form": { + "version": "7.51.2", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.51.2.tgz", + "integrity": "sha512-y++lwaWjtzDt/XNnyGDQy6goHskFualmDlf+jzEZvjvz6KWDf7EboL7pUvRCzPTJd0EOPpdekYaQLEvvG6m6HA==", + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18" + } + }, + "node_modules/react-icons": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.0.1.tgz", + "integrity": "sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw==", + "peerDependencies": { + "react": "*" + } + }, "node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", @@ -21937,6 +22704,51 @@ "node": ">=0.10.0" } }, + "node_modules/react-remove-scroll": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz", + "integrity": "sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/react-router": { "version": "6.22.1", "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.1.tgz", @@ -22108,6 +22920,28 @@ "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", @@ -22391,7 +23225,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -22405,6 +23238,11 @@ "node": ">=0.10.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -22890,6 +23728,16 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "node_modules/serialised-error": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/serialised-error/-/serialised-error-1.1.3.tgz", @@ -23011,6 +23859,11 @@ "node": ">= 0.8.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "node_modules/set-function-length": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", @@ -23051,7 +23904,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -23063,7 +23915,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } @@ -23114,6 +23965,15 @@ "node": ">=8" } }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -23490,7 +24350,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -23503,8 +24362,7 @@ "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", @@ -23615,7 +24473,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -23677,6 +24534,143 @@ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" }, + "node_modules/style-dictionary": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-3.9.1.tgz", + "integrity": "sha512-odyTC7wMYE4B3VOhc3LW1g0PCz9g+0WZZt5qp8KpWP9POlhw0+8MYiPQYwYfBmu4MEs1qbZ+GHySu4TTjQPH9A==", + "dependencies": { + "chalk": "^4.0.0", + "change-case": "^4.1.2", + "commander": "^8.3.0", + "fs-extra": "^10.0.0", + "glob": "^10.3.10", + "json5": "^2.2.2", + "jsonc-parser": "^3.0.0", + "lodash": "^4.17.15", + "tinycolor2": "^1.4.1" + }, + "bin": { + "style-dictionary": "bin/style-dictionary" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/style-dictionary/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/style-dictionary/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/style-dictionary/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/style-dictionary/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/style-dictionary/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/style-dictionary/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/style-dictionary/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/style-dictionary/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/style-dictionary/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/style-dictionary/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/style-loader": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", @@ -24217,6 +25211,11 @@ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -24669,6 +25668,22 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -24700,6 +25715,60 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" }, + "node_modules/use-callback-ref": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/use-sync-external-store": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", @@ -25359,7 +26428,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -25431,6 +26499,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, "node_modules/which-typed-array": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", @@ -25816,7 +26889,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -25833,7 +26905,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -25848,7 +26919,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -25859,8 +26929,7 @@ "node_modules/wrap-ansi-cjs/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", @@ -25974,6 +27043,15 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, + "node_modules/xstate": { + "version": "4.38.3", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.38.3.tgz", + "integrity": "sha512-SH7nAaaPQx57dx6qvfcIgqKRXIh4L0A1iYEqim4s1u7c9VoCgzZc+63FY90AKU4ZzOC2cfJzTnpO4zK7fCUzzw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/xstate" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -26221,6 +27299,59 @@ } } }, + "@aws-amplify/ui": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@aws-amplify/ui/-/ui-6.0.12.tgz", + "integrity": "sha512-8TygWyqtn3hnfUzO67xJtitBTreblbfj3cfRwfDgpoy8JfhIZPrjCDTPGqemXMKLGW2P0TaMnTvz+OxX2X637w==", + "requires": { + "csstype": "^3.1.1", + "lodash": "4.17.21", + "style-dictionary": "3.9.1", + "tslib": "^2.5.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@aws-amplify/ui-react": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@aws-amplify/ui-react/-/ui-react-6.1.6.tgz", + "integrity": "sha512-nir04MLahGQIYKFZ9a7iPIaQmB96M1AgA3AxFlsJ75Dn//p2BlhpSbPWrCJbeyzONuPPelOaduxeb3d4hYHTLA==", + "requires": { + "@aws-amplify/ui": "6.0.12", + "@aws-amplify/ui-react-core": "3.0.12", + "@radix-ui/react-direction": "1.0.0", + "@radix-ui/react-dropdown-menu": "1.0.0", + "@radix-ui/react-slider": "1.0.0", + "@xstate/react": "^3.2.2", + "lodash": "4.17.21", + "qrcode": "1.5.0", + "tslib": "^2.5.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@aws-amplify/ui-react-core": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@aws-amplify/ui-react-core/-/ui-react-core-3.0.12.tgz", + "integrity": "sha512-BuWkE0fnG1qxr85JA5QFFPq3vnFaE7Xqi4QZWFXO8Tbstx5s4/lOwKHlKbyMfb8a22SEmPVeXthSyii9WUwOdw==", + "requires": { + "@aws-amplify/ui": "6.0.12", + "@xstate/react": "^3.2.2", + "lodash": "4.17.21", + "react-hook-form": "^7.43.5", + "xstate": "^4.33.6" + } + }, "@aws-crypto/crc32": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", @@ -29077,7 +30208,6 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, "requires": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -29090,20 +30220,17 @@ "ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" }, "ansi-styles": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" }, "string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, "requires": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -29114,7 +30241,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, "requires": { "ansi-regex": "^6.0.1" } @@ -29123,7 +30249,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, "requires": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -30283,7 +31408,6 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, "optional": true }, "@pmmmwh/react-refresh-webpack-plugin": { @@ -30345,6 +31469,331 @@ "safe-buffer": "^5.0.1" } }, + "@radix-ui/number": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.0.tgz", + "integrity": "sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz", + "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-arrow": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.0.tgz", + "integrity": "sha512-1MUuv24HCdepi41+qfv125EwMuxgQ+U+h0A9K3BjCO/J8nVRREKHHpkD9clwfnjEDk9hgGzCnff4aUKCPiRepw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.0" + } + }, + "@radix-ui/react-collection": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.0.tgz", + "integrity": "sha512-8i1pf5dKjnq90Z8udnnXKzdCEV3/FYrfw0n/b6NvB6piXEn3fO1bOh7HBcpG8XrnIXzxlYu2oCcR38QpyLS/mg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-slot": "1.0.0" + } + }, + "@radix-ui/react-compose-refs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz", + "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-context": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz", + "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-direction": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz", + "integrity": "sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-dismissable-layer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.0.tgz", + "integrity": "sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-use-callback-ref": "1.0.0", + "@radix-ui/react-use-escape-keydown": "1.0.0" + } + }, + "@radix-ui/react-dropdown-menu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-1.0.0.tgz", + "integrity": "sha512-Ptben3TxPWrZLbInO7zjAK73kmjYuStsxfg6ujgt+EywJyREoibhZYnsSNqC+UiOtl4PdW/MOHhxVDtew5fouQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-id": "1.0.0", + "@radix-ui/react-menu": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-use-controllable-state": "1.0.0" + } + }, + "@radix-ui/react-focus-guards": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz", + "integrity": "sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-focus-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.0.tgz", + "integrity": "sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-use-callback-ref": "1.0.0" + } + }, + "@radix-ui/react-id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.0.tgz", + "integrity": "sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.0" + } + }, + "@radix-ui/react-menu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-1.0.0.tgz", + "integrity": "sha512-icW4C64T6nHh3Z4Q1fxO1RlSShouFF4UpUmPV8FLaJZfphDljannKErDuALDx4ClRLihAPZ9i+PrLNPoWS2DMA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-collection": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-direction": "1.0.0", + "@radix-ui/react-dismissable-layer": "1.0.0", + "@radix-ui/react-focus-guards": "1.0.0", + "@radix-ui/react-focus-scope": "1.0.0", + "@radix-ui/react-id": "1.0.0", + "@radix-ui/react-popper": "1.0.0", + "@radix-ui/react-portal": "1.0.0", + "@radix-ui/react-presence": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-roving-focus": "1.0.0", + "@radix-ui/react-slot": "1.0.0", + "@radix-ui/react-use-callback-ref": "1.0.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.4" + } + }, + "@radix-ui/react-popper": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.0.tgz", + "integrity": "sha512-k2dDd+1Wl0XWAMs9ZvAxxYsB9sOsEhrFQV4CINd7IUZf0wfdye4OHen9siwxvZImbzhgVeKTJi68OQmPRvVdMg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "0.7.2", + "@radix-ui/react-arrow": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0", + "@radix-ui/react-use-rect": "1.0.0", + "@radix-ui/react-use-size": "1.0.0", + "@radix-ui/rect": "1.0.0" + }, + "dependencies": { + "@floating-ui/core": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.3.tgz", + "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==" + }, + "@floating-ui/dom": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.4.tgz", + "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==", + "requires": { + "@floating-ui/core": "^0.7.3" + } + }, + "@floating-ui/react-dom": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.2.tgz", + "integrity": "sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==", + "requires": { + "@floating-ui/dom": "^0.5.3", + "use-isomorphic-layout-effect": "^1.1.1" + } + } + } + }, + "@radix-ui/react-portal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.0.tgz", + "integrity": "sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.0" + } + }, + "@radix-ui/react-presence": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", + "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0" + } + }, + "@radix-ui/react-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz", + "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.0" + } + }, + "@radix-ui/react-roving-focus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.0.tgz", + "integrity": "sha512-lHvO4MhvoWpeNbiJAoyDsEtbKqP2jkkdwsMVJ3kfqbkC71J/aXE6Th6gkZA1xHEqSku+t+UgoDjvE7Z3gsBpcg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-collection": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-direction": "1.0.0", + "@radix-ui/react-id": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-use-callback-ref": "1.0.0", + "@radix-ui/react-use-controllable-state": "1.0.0" + } + }, + "@radix-ui/react-slider": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.0.0.tgz", + "integrity": "sha512-LMZET7vn7HYwYSjsc9Jcen8Vn4cJXZZxQT7T+lGlqp+F+FofX+H86TBF2yDq+L51d99f1KLEsflTGBz9WRLSig==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.0", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-collection": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-direction": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-use-controllable-state": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0", + "@radix-ui/react-use-previous": "1.0.0", + "@radix-ui/react-use-size": "1.0.0" + } + }, + "@radix-ui/react-slot": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz", + "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0" + } + }, + "@radix-ui/react-use-callback-ref": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", + "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-controllable-state": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz", + "integrity": "sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.0" + } + }, + "@radix-ui/react-use-escape-keydown": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.0.tgz", + "integrity": "sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.0" + } + }, + "@radix-ui/react-use-layout-effect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", + "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-previous": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.0.tgz", + "integrity": "sha512-RG2K8z/K7InnOKpq6YLDmT49HGjNmrK+fr82UCVKT2sW0GYfVnYp4wZWBooT/EYfQ5faA9uIjvsuMMhH61rheg==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-rect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz", + "integrity": "sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.0" + } + }, + "@radix-ui/react-use-size": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz", + "integrity": "sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.0" + } + }, + "@radix-ui/rect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.0.tgz", + "integrity": "sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, "@react-aria/ssr": { "version": "3.9.2", "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.2.tgz", @@ -32268,6 +33717,15 @@ "@xtuc/long": "4.2.2" } }, + "@xstate/react": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@xstate/react/-/react-3.2.2.tgz", + "integrity": "sha512-feghXWLedyq8JeL13yda3XnHPZKwYDN5HPBLykpLeuNpr9178tQd2/3d0NrH6gSd0sG5mLuLeuD+ck830fgzLQ==", + "requires": { + "use-isomorphic-layout-effect": "^1.1.2", + "use-sync-external-store": "^1.0.0" + } + }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -32468,6 +33926,14 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "requires": { + "tslib": "^2.0.0" + } + }, "aria-query": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", @@ -33001,8 +34467,7 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "base64-js": { "version": "1.5.1", @@ -33244,7 +34709,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, "requires": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -33253,8 +34717,7 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "camelcase-css": { "version": "2.0.1", @@ -33280,6 +34743,16 @@ "integrity": "sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg==", "dev": true }, + "capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "case-sensitive-paths-webpack-plugin": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", @@ -33314,6 +34787,25 @@ "integrity": "sha512-TfxnA/DcZXRTA4OekA2zL9GH8qscbbl6X0ZqU4tXhGveVY/mXWvEQLt5GwZcYXTEyEFflVtj+pG8nc8EwSm1RQ==", "dev": true }, + "change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "requires": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -33615,6 +35107,16 @@ "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true }, + "constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -33690,7 +35192,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -34328,6 +35829,11 @@ "ms": "2.1.2" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, "decimal.js": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", @@ -34475,6 +35981,11 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, + "detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, "detect-port-alt": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", @@ -34513,6 +36024,11 @@ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==" }, + "dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -34627,7 +36143,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, "requires": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -34654,8 +36169,7 @@ "eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "ecc-jsbn": { "version": "0.1.2", @@ -34696,8 +36210,7 @@ "emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "emojis-list": { "version": "3.0.0", @@ -34705,6 +36218,11 @@ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, + "encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -35811,7 +37329,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, "requires": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -35820,8 +37337,7 @@ "signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" } } }, @@ -36006,7 +37522,6 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -36016,8 +37531,7 @@ "universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" } } }, @@ -36071,8 +37585,7 @@ "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-intrinsic": { "version": "1.2.4", @@ -36086,6 +37599,11 @@ "hasown": "^2.0.0" } }, + "get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==" + }, "get-own-enumerable-property-symbols": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", @@ -36340,6 +37858,15 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, + "header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "requires": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, "hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -37021,8 +38548,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "isstream": { "version": "0.1.2", @@ -37122,7 +38648,6 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, "requires": { "@isaacs/cliui": "^8.0.2", "@pkgjs/parseargs": "^0.11.0" @@ -39659,14 +41184,17 @@ "json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + }, + "jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==" }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, "requires": { "graceful-fs": "^4.1.6", "universalify": "^2.0.0" @@ -39675,8 +41203,7 @@ "universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" } } }, @@ -39891,7 +41418,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, "requires": { "tslib": "^2.0.3" } @@ -40139,8 +41665,7 @@ "minipass": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" }, "mkdirp": { "version": "2.1.3", @@ -40287,7 +41812,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, "requires": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -40572,8 +42096,7 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "papaparse": { "version": "5.4.1", @@ -40584,7 +42107,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, "requires": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -40630,17 +42152,24 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, "requires": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, + "path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "path-is-absolute": { "version": "1.0.1", @@ -40651,8 +42180,7 @@ "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "path-parse": { "version": "1.0.7", @@ -40663,7 +42191,6 @@ "version": "1.10.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, "requires": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -40672,8 +42199,7 @@ "lru-cache": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "dev": true + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==" } } }, @@ -40818,6 +42344,11 @@ } } }, + "pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==" + }, "possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", @@ -41916,6 +43447,125 @@ "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "dev": true }, + "qrcode": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.0.tgz", + "integrity": "sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ==", + "requires": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, "qs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", @@ -42149,6 +43799,18 @@ "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==", "dev": true }, + "react-hook-form": { + "version": "7.51.2", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.51.2.tgz", + "integrity": "sha512-y++lwaWjtzDt/XNnyGDQy6goHskFualmDlf+jzEZvjvz6KWDf7EboL7pUvRCzPTJd0EOPpdekYaQLEvvG6m6HA==", + "requires": {} + }, + "react-icons": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.0.1.tgz", + "integrity": "sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw==", + "requires": {} + }, "react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", @@ -42178,6 +43840,27 @@ "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", "dev": true }, + "react-remove-scroll": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz", + "integrity": "sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==", + "requires": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + } + }, + "react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "requires": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + } + }, "react-router": { "version": "6.22.1", "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.1.tgz", @@ -42299,6 +43982,16 @@ "integrity": "sha512-3e+k56lUkPj0vb5NDXPVFAOkPC//XyhKPJjvcGjyMNPWsBKpplfeyialP74G7H7+It7KzhtET+MvGqbKgAqpZA==", "requires": {} }, + "react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "requires": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + } + }, "react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", @@ -42529,8 +44222,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" }, "require-from-string": { "version": "2.0.2", @@ -42538,6 +44230,11 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -42879,6 +44576,16 @@ } } }, + "sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "serialised-error": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/serialised-error/-/serialised-error-1.1.3.tgz", @@ -42985,6 +44692,11 @@ "send": "0.18.0" } }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "set-function-length": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", @@ -43019,7 +44731,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "requires": { "shebang-regex": "^3.0.0" } @@ -43027,8 +44738,7 @@ "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "shell-quote": { "version": "1.8.1", @@ -43064,6 +44774,15 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, + "snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -43373,7 +45092,6 @@ "version": "npm:string-width@4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -43383,8 +45101,7 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" } } }, @@ -43470,7 +45187,6 @@ "version": "npm:strip-ansi@6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -43511,6 +45227,100 @@ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" }, + "style-dictionary": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-3.9.1.tgz", + "integrity": "sha512-odyTC7wMYE4B3VOhc3LW1g0PCz9g+0WZZt5qp8KpWP9POlhw0+8MYiPQYwYfBmu4MEs1qbZ+GHySu4TTjQPH9A==", + "requires": { + "chalk": "^4.0.0", + "change-case": "^4.1.2", + "commander": "^8.3.0", + "fs-extra": "^10.0.0", + "glob": "^10.3.10", + "json5": "^2.2.2", + "jsonc-parser": "^3.0.0", + "lodash": "^4.17.15", + "tinycolor2": "^1.4.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "style-loader": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", @@ -43921,6 +45731,11 @@ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" }, + "tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" + }, "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -44247,6 +46062,22 @@ "picocolors": "^1.0.0" } }, + "upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "requires": { + "tslib": "^2.0.3" + } + }, + "upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "requires": { + "tslib": "^2.0.3" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -44280,6 +46111,29 @@ "requires-port": "^1.0.0" } }, + "use-callback-ref": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "requires": { + "tslib": "^2.0.0" + } + }, + "use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "requires": {} + }, + "use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "requires": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + } + }, "use-sync-external-store": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", @@ -44784,7 +46638,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "requires": { "isexe": "^2.0.0" } @@ -44840,6 +46693,11 @@ "is-weakset": "^2.0.1" } }, + "which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, "which-typed-array": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", @@ -45206,7 +47064,6 @@ "version": "npm:wrap-ansi@7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -45217,7 +47074,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -45226,7 +47082,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -45234,8 +47089,7 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" } } }, @@ -45297,6 +47151,11 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, + "xstate": { + "version": "4.38.3", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.38.3.tgz", + "integrity": "sha512-SH7nAaaPQx57dx6qvfcIgqKRXIh4L0A1iYEqim4s1u7c9VoCgzZc+63FY90AKU4ZzOC2cfJzTnpO4zK7fCUzzw==" + }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index 1d6430f..6442860 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "react": "^18.2.0", "react-bootstrap": "^2.9.2", "react-dom": "^18.2.0", + "react-icons": "^5.0.1", "react-redux": "^8.1.3", "react-router-dom": "^6.21.1", "react-spinners": "^0.13.8", diff --git a/src/components/layout/SignUpLayout/SignUpLayout.css b/src/components/layout/SignUpLayout/SignUpLayout.css index 18be9c9..7093648 100644 --- a/src/components/layout/SignUpLayout/SignUpLayout.css +++ b/src/components/layout/SignUpLayout/SignUpLayout.css @@ -7,8 +7,8 @@ color: #ffffff; /* Light text for contrast */ background-image: linear-gradient( to bottom, - rgba(0, 0, 0, 0.88), - /* Darker start */ rgba(0, 0, 0, 0.99) /* Darker end */ + rgba(0, 0, 0, 0.97), + /* Darker start */ rgba(5, 8, 29, 0.99) /* Darker end */ ), url("../../../assets/images/techProperties.jpg"); /* Background image */ background-size: cover; diff --git a/src/components/modal/UserLoginModal/NewAccountModal/NewAccountModal.css b/src/components/modal/UserLoginModal/NewAccountModal/NewAccountModal.css index 3120cfb..08d587a 100644 --- a/src/components/modal/UserLoginModal/NewAccountModal/NewAccountModal.css +++ b/src/components/modal/UserLoginModal/NewAccountModal/NewAccountModal.css @@ -3,87 +3,94 @@ justify-content: center; align-items: center; position: fixed; - top: 0; - left: 0; - width: 120%; - height: 80%; + top: -50px; + left: -20px; + width: 100%; + height: 100%; background-color: rgba(0, 0, 0, 0.5); + padding: 60px; + border-radius: 11px; + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25); + margin: 0 auto; + box-sizing: border-box; font-family: var(--font-family); } .modal-content { - background: white; - padding: 30px; - border-radius: 8px; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); - width: 90%; - max-width: 400px; - position: relative; + background: rgba( + 255, + 255, + 255, + 0.15 + ); /* Light with transparency, similar to the sign-in modal */ + padding: 60px; + border-radius: 11px; + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25); display: flex; flex-direction: column; - gap: 20px; - margin: 20px; + gap: 24px; + align-items: center; + max-width: 500px; /* Consistent with sign-in modal */ + width: 90%; /* Responsive width */ + position: relative; } -.modal-content input { - padding: 10px; - border-radius: 4px; - border: 1px solid #ccc; - width: 100%; /* Adjust for full width within the padding */ - margin-bottom: 15px; /* Add space between inputs */ +.modal-content input, +.modal-content .select-input { + width: 100%; + padding: 13px; + margin-bottom: 10px; + background: rgba(255, 255, 255, 0.05); /* Darker transparent background */ + color: #ffffff; /* Light color text */ + border: 1px solid rgba(255, 255, 255, 0.15); + border-radius: 5px; + box-sizing: border-box; } .input-group label { - display: block; /* Make label a block element to ensure the select dropdown is below */ + display: block; + color: #ffffff; /* Ensure labels are visible against the modal's background */ + margin-bottom: 5px; /* Spacing between label and input */ } -.close-btn { - background: none; +.close-btn, +.submit-btn { border: none; font-size: 1.5rem; - position: absolute; - top: 0.25rem; - right: 0.25rem; cursor: pointer; } -.close-btn:hover { - color: #d9534f; /* Red color on hover for the close button */ +.close-btn { + position: absolute; + top: 20px; + right: 20px; + color: #ffffff; /* White close button */ + background: none; } .submit-btn { - /* Keep this button at the bottom */ - padding: 10px 20px; - background-color: var(--brand-color); + background-color: var(--brand-color-light); /* Primary button color */ color: white; + padding: 10px 20px; font-weight: bold; border-radius: 4px; - border: none; - cursor: pointer; - width: auto; /* Adjust width as needed */ - align-self: flex-end; /* Align to the right */ + transition: background-color 0.3s; + align-self: center; /* Center submit button */ } .submit-btn:hover { - background-color: var(--brand-color-dark); /* Darker shade for hover */ -} - -.required-asterisk { - color: #d9534f; /* Red asterisk to denote required fields */ + background-color: var(--brand-color); /* Darker on hover */ } .error-message { - color: #d9534f; background-color: #f2dede; + color: #d9534f; padding: 10px; border-radius: 4px; - margin-bottom: 15px; - border: 1px solid #d9534f; + width: 100%; + text-align: center; } -.actions { - display: flex; - flex-direction: column; /* Stack buttons vertically */ - width: 100%; /* Full width */ - margin-top: 20px; /* Space from the last input field */ +.required-asterisk { + color: #d9534f; /* Highlight required fields */ } diff --git a/src/components/modal/UserLoginModal/UserLoginModal.css b/src/components/modal/UserLoginModal/UserLoginModal.css index 3d8aa4c..3a0ea24 100644 --- a/src/components/modal/UserLoginModal/UserLoginModal.css +++ b/src/components/modal/UserLoginModal/UserLoginModal.css @@ -1,26 +1,32 @@ .signup-card { - background: #fafafa; - padding: 40px; + background: rgba(255, 255, 255, 0.15); /* Light with transparency */ + padding: 60px; /* Increased padding for more space */ border-radius: 11px; - box-shadow: 0 3px 8px rgba(0, 0, 0, 0.185); + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25); /* Slightly darker shadow for better contrast */ display: flex; flex-direction: column; - gap: 20px; + gap: 24px; /* Increase gap for more space between elements */ align-items: center; - width: 100%; + max-width: 450px; /* Maximum width can be set for better control on larger screens */ + width: 100%; /* Responsive width */ + max-width: 500px; margin: 0 auto; + box-sizing: border-box; + font-family: var(--font-family); } .signup-card input { width: 100%; - padding: 10px; + padding: 13px; margin-bottom: 10px; - border: 1px solid #ddd; + background: rgba(255, 255, 255, 0.05); /* Darker transparent background */ + color: #ffffff; /* Light color text */ + border: 1px solid rgba(255, 255, 255, 0.15); border-radius: 5px; box-sizing: border-box; } -.signup-card button { +.signup-card button:not(.gsi-material-button) { width: 100%; padding: 10px; margin-bottom: 10px; @@ -32,26 +38,60 @@ transition: background-color 0.3s; } +.signup-header { + font-size: 30px; /* Match to your design preferences */ + color: #ffffff; + font-weight: bold; + + text-align: center; +} + +.signup-subtitle { + font-size: 1rem; /* Match the font size to your design */ + color: #ffffff; + margin-top: -17px; + margin-bottom: 25px; + text-align: center; +} + +.password-input-container { + position: relative; + width: 100%; +} + +.password-toggle-icon { + position: absolute; + right: 3.5%; + top: 41%; + transform: translateY(-50%); + color: #ffffff; /* Or any color that suits your design */ + cursor: pointer; +} + +.signup-card input[type="password"] { + padding-right: 50px; /* Adjust padding to fit the icon */ +} + .login-btn { background-color: var( - --brand-color + --brand-color-light ); /* Variable for the primary brand color */ color: white; margin-bottom: 10px; /* Spacing between the button and the divider */ } .login-btn:hover { - background-color: var(--brand-color-light); /* Lighter brand color on hover */ + background-color: var(--brand-color); /* Lighter brand color on hover */ } .create-account-btn { - background-color: #c2a200; /* Darker gold for creating an account */ - color: white; - margin-top: 10px; /* Spacing between the divider and the button */ + background-color: #dee0bb; + color: rgba(0, 0, 0, 0.714); + margin-top: 10px; } .create-account-btn:hover { - background-color: var(--brand-color-2); /* Even darker gold on hover */ + background-color: #ddd; } .divider { diff --git a/src/components/modal/UserLoginModal/index.js b/src/components/modal/UserLoginModal/index.js index 6347290..fb64aa3 100644 --- a/src/components/modal/UserLoginModal/index.js +++ b/src/components/modal/UserLoginModal/index.js @@ -2,6 +2,7 @@ import React, { useState } from "react"; import { Amplify } from "aws-amplify"; import { signIn, signInWithRedirect } from "@aws-amplify/auth"; +import { AiFillEye, AiFillEyeInvisible } from "react-icons/ai"; // Import eye icons for password visibility import { AMPLIFY_CONFIG } from "../../../utils/constants/appConstants"; import GoogleSignInButton from "./GoogleSignInButton"; import NewAccountModal from "./NewAccountModal"; @@ -15,6 +16,7 @@ const UserLoginModal = ({ onLogin, onClose }) => { const [error, setError] = useState(""); const [showNewAccountModal, setShowNewAccountModal] = useState(false); const [showLoginModal, setShowLoginModal] = useState(true); + const [passwordVisible, setPasswordVisible] = useState(false); const handleLogin = async () => { try { @@ -30,6 +32,10 @@ const UserLoginModal = ({ onLogin, onClose }) => { setShowNewAccountModal(true); }; + const togglePasswordVisibility = () => { + setPasswordVisible(!passwordVisible); + }; + const handleCloseModal = () => { if (showNewAccountModal) { setShowNewAccountModal(false); @@ -45,6 +51,10 @@ const UserLoginModal = ({ onLogin, onClose }) => { {showNewAccountModal && } {showLoginModal && (
+
Sign In
+
+ Enter your KontraX account email/phone and password. +
{" "} {error &&
{error}
} { value={email} onChange={(e) => setEmail(e.target.value)} /> - setPassword(e.target.value)} - /> +
+ setPassword(e.target.value)} + /> + + {passwordVisible ? : }{" "} + +
signInWithRedirect({ provider: "Google" })} /> -
)} diff --git a/src/pages/SignUp/SignUp.css b/src/pages/SignUp/SignUp.css index a8f15ab..7c0913e 100644 --- a/src/pages/SignUp/SignUp.css +++ b/src/pages/SignUp/SignUp.css @@ -35,31 +35,31 @@ justify-content: center; align-items: center; opacity: 0; - animation: fadeInRight 3s ease forwards; - animation-delay: 4.3s; + animation: fadeInRight 2.4s ease forwards; + animation-delay: 3.5s; } .name-header { color: var(--brand-color-2); - animation: fadeIn 1s ease-in-out forwards; + animation: fadeIn 0.8s ease-in-out forwards; text-shadow: 1px 0px 1px var(--brand-color); } .kontra-x { opacity: 0; /* Start with X hidden */ - animation: fadeInRight 3s ease-in-out forwards; - animation-delay: 2.7s; /* Wait for previous animations to finish */ + animation: fadeInRight 3s 2.4s ease-in-out forwards, + flashAndShake 1s 3.5s ease-in-out 3 forwards; } .kontra-x-multiply { opacity: 0; /* Start with X hidden */ animation: fadeInLeft 2s ease-in-out forwards; - animation-delay: 2.7s; /* Adjust as needed */ + animation-delay: 2.4s; /* Adjust as needed */ } .animated-text { animation: fadeIn 2s ease-in-out forwards; - animation-delay: 1s; + animation-delay: 0.7s; opacity: 0; color: var(--brand-color-2); } @@ -75,15 +75,6 @@ } } -@keyframes fadeInX { - from { - opacity: 0; - } - to { - opacity: 1; - } -} - @keyframes fadeInLeft { from { opacity: 0; @@ -106,13 +97,25 @@ } } -@keyframes slideInFromLeft { - from { - opacity: 0; - transform: translateX(-100%); - } - to { +@keyframes flashAndShake { + 0%, + 100%, + 40%, + 60% { opacity: 1; - transform: translateX(0); + } + 25%, + 30%, + 50% { + opacity: 0.4; + } + + 70%, + 90% { + transform: translateX(-14px); + } + + 80% { + transform: translateX(14px); } } From df877360ca8de362547b4d0c54b2c4d63768f771 Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Tue, 26 Mar 2024 23:40:10 -0400 Subject: [PATCH 083/118] Major updates and also inclusive of sign up verification, functionality --- package-lock.json | 15 +- package.json | 1 + .../GoogleSignInButton/GoogleSignInButton.css | 17 +- .../UserLoginModal/NewAccountModal/index.js | 177 ++++++++---------- .../modal/UserLoginModal/UserLoginModal.css | 10 +- .../VerifyAccountModal/VerifyAccountModal.css | 79 ++++++++ .../VerifyAccountModal/index.js | 49 +++++ src/components/modal/UserLoginModal/index.js | 43 +++-- src/pages/SignUp/SignUp.css | 2 +- src/utils/commonFunctions.js | 7 +- 10 files changed, 271 insertions(+), 129 deletions(-) create mode 100644 src/components/modal/UserLoginModal/VerifyAccountModal/VerifyAccountModal.css create mode 100644 src/components/modal/UserLoginModal/VerifyAccountModal/index.js diff --git a/package-lock.json b/package-lock.json index 5c1bc9b..70ab5cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,6 +27,7 @@ "chart.js": "^4.4.1", "chartjs-adapter-date-fns": "^3.0.0", "d3": "^7.8.5", + "libphonenumber-js": "^1.10.59", "moment": "^2.29.4", "newman": "^6.0.0", "papaparse": "^5.4.1", @@ -19058,10 +19059,9 @@ } }, "node_modules/libphonenumber-js": { - "version": "1.10.56", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.56.tgz", - "integrity": "sha512-d0GdKshNnyfl5gM7kZ9rXjGiAbxT/zCXp0k+EAzh8H4zrb2R7GXtMCrULrX7UQxtfx6CLy/vz/lomvW79FAFdA==", - "dev": true + "version": "1.10.59", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.59.tgz", + "integrity": "sha512-HeTsOrDF/hWhEiKqZVwg9Cqlep5x2T+IYDENvT2VRj3iX8JQ7Y+omENv+AIn0vC8m6GYhivfCed5Cgfw27r5SA==" }, "node_modules/lilconfig": { "version": "2.1.0", @@ -41324,10 +41324,9 @@ } }, "libphonenumber-js": { - "version": "1.10.56", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.56.tgz", - "integrity": "sha512-d0GdKshNnyfl5gM7kZ9rXjGiAbxT/zCXp0k+EAzh8H4zrb2R7GXtMCrULrX7UQxtfx6CLy/vz/lomvW79FAFdA==", - "dev": true + "version": "1.10.59", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.59.tgz", + "integrity": "sha512-HeTsOrDF/hWhEiKqZVwg9Cqlep5x2T+IYDENvT2VRj3iX8JQ7Y+omENv+AIn0vC8m6GYhivfCed5Cgfw27r5SA==" }, "lilconfig": { "version": "2.1.0", diff --git a/package.json b/package.json index 6442860..449427b 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "chart.js": "^4.4.1", "chartjs-adapter-date-fns": "^3.0.0", "d3": "^7.8.5", + "libphonenumber-js": "^1.10.59", "moment": "^2.29.4", "newman": "^6.0.0", "papaparse": "^5.4.1", diff --git a/src/components/modal/UserLoginModal/GoogleSignInButton/GoogleSignInButton.css b/src/components/modal/UserLoginModal/GoogleSignInButton/GoogleSignInButton.css index 501189a..dd1fb39 100644 --- a/src/components/modal/UserLoginModal/GoogleSignInButton/GoogleSignInButton.css +++ b/src/components/modal/UserLoginModal/GoogleSignInButton/GoogleSignInButton.css @@ -3,14 +3,14 @@ -webkit-user-select: none; -ms-user-select: none; -webkit-appearance: none; - background-color: WHITE; + background-color: #131314; background-image: none; border: 1px solid #747775; -webkit-border-radius: 20px; border-radius: 20px; -webkit-box-sizing: border-box; box-sizing: border-box; - color: #1f1f1f; + color: #e3e3e3; cursor: pointer; font-family: "Roboto", arial, sans-serif; font-size: 14px; @@ -29,6 +29,7 @@ width: auto; max-width: 400px; min-width: min-content; + border-color: #8e918f; } .gsi-material-button .gsi-material-button-icon { @@ -75,8 +76,12 @@ .gsi-material-button:disabled { cursor: default; - background-color: #ffffff61; - border-color: #1f1f1f1f; + background-color: #13131461; + border-color: #8e918f1f; +} + +.gsi-material-button:disabled .gsi-material-button-state { + background-color: #e3e3e31f; } .gsi-material-button:disabled .gsi-material-button-contents { @@ -89,7 +94,7 @@ .gsi-material-button:not(:disabled):active .gsi-material-button-state, .gsi-material-button:not(:disabled):focus .gsi-material-button-state { - background-color: #303030; + background-color: white; opacity: 12%; } @@ -101,6 +106,6 @@ } .gsi-material-button:not(:disabled):hover .gsi-material-button-state { - background-color: #303030; + background-color: white; opacity: 8%; } diff --git a/src/components/modal/UserLoginModal/NewAccountModal/index.js b/src/components/modal/UserLoginModal/NewAccountModal/index.js index 0565553..36922ee 100644 --- a/src/components/modal/UserLoginModal/NewAccountModal/index.js +++ b/src/components/modal/UserLoginModal/NewAccountModal/index.js @@ -2,21 +2,20 @@ import React, { useState } from "react"; import { signUp } from "@aws-amplify/auth"; import Button from "../../../shared/Button"; +import { AiFillEye, AiFillEyeInvisible } from "react-icons/ai"; import { MODAL_LABELS } from "../../../../utils/constants/uiConstants"; -import { SUBSCRIPTION_OPTIONS } from "../../../../utils/constants/appConstants"; -import Select from "@mui/material/Select"; -import MenuItem from "@mui/material/MenuItem"; -import "./NewAccountModal.css"; // Make sure to create a CSS file for styling +import { formatPhoneNumberToE164 } from "../../../../utils/commonFunctions"; +import "./NewAccountModal.css"; -const NewAccountModal = ({ onClose }) => { +const NewAccountModal = ({ onClose, onShowVerify }) => { + const [error, setError] = useState(""); + const [passwordVisible, setPasswordVisible] = useState(false); const [formState, setFormState] = useState({ name: "", email: "", phone: "", password: "", - subscriptionType: "", }); - const [error, setError] = useState(""); const handleInputChange = (e) => { const { name, value } = e.target; @@ -25,20 +24,20 @@ const NewAccountModal = ({ onClose }) => { const handleSignUp = async () => { const { name, email, phone, password } = formState; - debugger; try { - const user = await signUp({ + await signUp({ username: email, password, - attributes: { - email, - phone_number: phone, // Must be in E.164 format - name: name, - "custom:subscriptionType": subscriptionType, + options: { + userAttributes: { + email, + phone_number: formatPhoneNumberToE164(phone), // Must be in E.164 format + name, + }, }, }); - console.log("Sign up successful", user); - onClose(); + console.log("Sign up successful"); + onShowVerify(email); } catch (error) { console.error("Error signing up:", error); setError(error.message); @@ -47,86 +46,76 @@ const NewAccountModal = ({ onClose }) => { return (
-
- {error &&
{error}
} -
- - -
-
- - -
-
- - -
-
- - -
-
- {/* */} -
-
- - + /> +
+
+ + +
+
+ + +
+
+ +
+ + setPasswordVisible(!passwordVisible)} + > + {passwordVisible ? : } + +
+
+ +
+
+ + +
diff --git a/src/components/modal/UserLoginModal/UserLoginModal.css b/src/components/modal/UserLoginModal/UserLoginModal.css index 3a0ea24..8ef397f 100644 --- a/src/components/modal/UserLoginModal/UserLoginModal.css +++ b/src/components/modal/UserLoginModal/UserLoginModal.css @@ -73,9 +73,7 @@ } .login-btn { - background-color: var( - --brand-color-light - ); /* Variable for the primary brand color */ + background-color: var(--brand-color-light); color: white; margin-bottom: 10px; /* Spacing between the button and the divider */ } @@ -85,13 +83,13 @@ } .create-account-btn { - background-color: #dee0bb; - color: rgba(0, 0, 0, 0.714); + background-color: var(--brand-color-2-transparent); + color: white; margin-top: 10px; } .create-account-btn:hover { - background-color: #ddd; + background-color: var(--brand-color-hover); } .divider { diff --git a/src/components/modal/UserLoginModal/VerifyAccountModal/VerifyAccountModal.css b/src/components/modal/UserLoginModal/VerifyAccountModal/VerifyAccountModal.css new file mode 100644 index 0000000..30c673d --- /dev/null +++ b/src/components/modal/UserLoginModal/VerifyAccountModal/VerifyAccountModal.css @@ -0,0 +1,79 @@ +.verify-account-modal { + display: flex; + justify-content: center; + align-items: center; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + font-family: var(--font-family); +} + +.modal-content { + background: rgba(255, 255, 255, 0.15); + padding: 60px; + border-radius: 11px; + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25); + display: flex; + flex-direction: column; + gap: 24px; + align-items: center; + max-width: 500px; + width: 90%; + position: relative; +} + +.modal-content input { + width: 100%; + padding: 13px; + margin-bottom: 10px; + background: rgba(255, 255, 255, 0.05); + color: #ffffff; + border: 1px solid rgba(255, 255, 255, 0.15); + border-radius: 5px; + box-sizing: border-box; +} + +.input-group label { + display: block; + color: #ffffff; + margin-bottom: 5px; +} + +.close-btn, +.verify-btn { + border: none; + font-size: 1.5rem; + cursor: pointer; + color: #ffffff; + background: none; +} + +.verify-btn { + background-color: var(--brand-color-light); + color: white; + padding: 10px 20px; + font-weight: bold; + border-radius: 4px; + align-self: center; + transition: background-color 0.3s; +} + +.verify-btn:hover { + background-color: var(--brand-color); +} + +.error-message { + background-color: #f2dede; + color: #d9534f; + padding: 10px; + border-radius: 4px; + width: 100%; + text-align: center; +} + +.required-asterisk { + color: #d9534f; +} diff --git a/src/components/modal/UserLoginModal/VerifyAccountModal/index.js b/src/components/modal/UserLoginModal/VerifyAccountModal/index.js new file mode 100644 index 0000000..5e014de --- /dev/null +++ b/src/components/modal/UserLoginModal/VerifyAccountModal/index.js @@ -0,0 +1,49 @@ +import React, { useState } from "react"; +import { confirmSignUp } from "@aws-amplify/auth"; +import "./VerifyAccountModal.css"; // Your CSS styles + +const VerifyAccountModal = ({ username, onClose }) => { + const [verificationCode, setVerificationCode] = useState(""); + const [error, setError] = useState(""); + + const handleVerify = async () => { + try { + const { isSignUpComplete, nextStep } = await confirmSignUp({ + username, + confirmationCode: verificationCode, + }); + console.log("Account verified successfully"); + onClose(); // Close modal and proceed + } catch (error) { + console.error("Error verifying account:", error); + setError(error.message); + } + }; + + return ( +
+
+ {error &&
{error}
} +
+ + setVerificationCode(e.target.value)} + required + /> +
+
+ + +
+
+
+ ); +}; + +export default VerifyAccountModal; diff --git a/src/components/modal/UserLoginModal/index.js b/src/components/modal/UserLoginModal/index.js index fb64aa3..c57e216 100644 --- a/src/components/modal/UserLoginModal/index.js +++ b/src/components/modal/UserLoginModal/index.js @@ -2,10 +2,11 @@ import React, { useState } from "react"; import { Amplify } from "aws-amplify"; import { signIn, signInWithRedirect } from "@aws-amplify/auth"; -import { AiFillEye, AiFillEyeInvisible } from "react-icons/ai"; // Import eye icons for password visibility +import { AiFillEye, AiFillEyeInvisible } from "react-icons/ai"; import { AMPLIFY_CONFIG } from "../../../utils/constants/appConstants"; import GoogleSignInButton from "./GoogleSignInButton"; import NewAccountModal from "./NewAccountModal"; +import VerifyAccountModal from "./VerifyAccountModal"; import "./UserLoginModal.css"; Amplify.configure(AMPLIFY_CONFIG); @@ -17,6 +18,21 @@ const UserLoginModal = ({ onLogin, onClose }) => { const [showNewAccountModal, setShowNewAccountModal] = useState(false); const [showLoginModal, setShowLoginModal] = useState(true); const [passwordVisible, setPasswordVisible] = useState(false); + const [showVerifyAccountModal, setShowVerifyAccountModal] = useState(false); + const [newUserUsername, setNewUserUsername] = useState(""); + + const handleCloseAllModals = () => { + setShowLoginModal(true); + setShowNewAccountModal(false); + setShowVerifyAccountModal(false); + }; + + const handleShowVerifyModal = (username) => { + setNewUserUsername(username); + setShowLoginModal(false); + setShowNewAccountModal(false); + setShowVerifyAccountModal(true); + }; const handleLogin = async () => { try { @@ -36,20 +52,21 @@ const UserLoginModal = ({ onLogin, onClose }) => { setPasswordVisible(!passwordVisible); }; - const handleCloseModal = () => { - if (showNewAccountModal) { - setShowNewAccountModal(false); - setShowLoginModal(true); - } else { - setShowLoginModal(false); - setShowNewAccountModal(true); - } - }; - return (
- {showNewAccountModal && } - {showLoginModal && ( + {showNewAccountModal && !showVerifyAccountModal && ( + + )} + {showVerifyAccountModal && ( + + )} + {showLoginModal && !showVerifyAccountModal && !showNewAccountModal && (
Sign In
diff --git a/src/pages/SignUp/SignUp.css b/src/pages/SignUp/SignUp.css index 7c0913e..f7be0a1 100644 --- a/src/pages/SignUp/SignUp.css +++ b/src/pages/SignUp/SignUp.css @@ -48,7 +48,7 @@ .kontra-x { opacity: 0; /* Start with X hidden */ animation: fadeInRight 3s 2.4s ease-in-out forwards, - flashAndShake 1s 3.5s ease-in-out 3 forwards; + flashAndShake 1s 3.5s ease-in-out 2 forwards; } .kontra-x-multiply { diff --git a/src/utils/commonFunctions.js b/src/utils/commonFunctions.js index f29206a..1132dd7 100644 --- a/src/utils/commonFunctions.js +++ b/src/utils/commonFunctions.js @@ -1,5 +1,5 @@ -import Papa from "papaparse"; import moment from "moment"; +import { parsePhoneNumberFromString } from "libphonenumber-js"; import { SKIPTRACE_API_EXPECTED_HEADERS } from "./constants/apiConstants"; import { LEAD_STATUS_FIELDS } from "./constants/appConstants"; @@ -35,6 +35,11 @@ export const decodeBase64Content = (base64Content) => { return decodedContent; }; +export const formatPhoneNumberToE164 = (phoneNumber) => { + const phone = parsePhoneNumberFromString(phoneNumber); + return phone ? phone.formatInternational() : ""; +}; + export const flipMappings = (mappings) => { const flipped = {}; Object.entries(mappings).forEach(([key, value]) => { From f08a71e840a8c76555a65d860067e3a1c621cb1c Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Tue, 26 Mar 2024 23:47:29 -0400 Subject: [PATCH 084/118] minor tweaks to sign up page styling --- .../NewAccountModal/NewAccountModal.css | 3 - .../UserLoginModal/NewAccountModal/index.js | 126 +++++++++--------- 2 files changed, 62 insertions(+), 67 deletions(-) diff --git a/src/components/modal/UserLoginModal/NewAccountModal/NewAccountModal.css b/src/components/modal/UserLoginModal/NewAccountModal/NewAccountModal.css index 08d587a..dc38f9b 100644 --- a/src/components/modal/UserLoginModal/NewAccountModal/NewAccountModal.css +++ b/src/components/modal/UserLoginModal/NewAccountModal/NewAccountModal.css @@ -3,12 +3,9 @@ justify-content: center; align-items: center; position: fixed; - top: -50px; left: -20px; - width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); - padding: 60px; border-radius: 11px; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25); margin: 0 auto; diff --git a/src/components/modal/UserLoginModal/NewAccountModal/index.js b/src/components/modal/UserLoginModal/NewAccountModal/index.js index 36922ee..4897f2a 100644 --- a/src/components/modal/UserLoginModal/NewAccountModal/index.js +++ b/src/components/modal/UserLoginModal/NewAccountModal/index.js @@ -46,76 +46,74 @@ const NewAccountModal = ({ onClose, onShowVerify }) => { return (
-
-
- {error &&
{error}
} -
- - -
-
- +
+ {error &&
{error}
} +
+ + +
+
+ + +
+
+ + +
+
+ +
+ setPasswordVisible(!passwordVisible)} + > + {passwordVisible ? : } +
-
- - -
-
- -
- - setPasswordVisible(!passwordVisible)} - > - {passwordVisible ? : } - -
-
+
-
-
- - -
+
+
+ +
From 4bb242f71a621d8e49591e3fa61b6a0c898935ce Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Tue, 26 Mar 2024 23:56:12 -0400 Subject: [PATCH 085/118] More minor styling tweaks --- src/components/modal/UserLoginModal/UserLoginModal.css | 6 +++--- src/components/modal/UserLoginModal/index.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/modal/UserLoginModal/UserLoginModal.css b/src/components/modal/UserLoginModal/UserLoginModal.css index 8ef397f..0ce4fdd 100644 --- a/src/components/modal/UserLoginModal/UserLoginModal.css +++ b/src/components/modal/UserLoginModal/UserLoginModal.css @@ -73,13 +73,13 @@ } .login-btn { - background-color: var(--brand-color-light); + background-color: var(--brand-color); color: white; margin-bottom: 10px; /* Spacing between the button and the divider */ } .login-btn:hover { - background-color: var(--brand-color); /* Lighter brand color on hover */ + background-color: var(--brand-color-light); /* Lighter brand color on hover */ } .create-account-btn { @@ -89,7 +89,7 @@ } .create-account-btn:hover { - background-color: var(--brand-color-hover); + background-color: var(--brand-color-2); } .divider { diff --git a/src/components/modal/UserLoginModal/index.js b/src/components/modal/UserLoginModal/index.js index c57e216..08efa76 100644 --- a/src/components/modal/UserLoginModal/index.js +++ b/src/components/modal/UserLoginModal/index.js @@ -70,7 +70,7 @@ const UserLoginModal = ({ onLogin, onClose }) => {
Sign In
- Enter your KontraX account email/phone and password. + Enter your KontraX account credentials.
{" "} {error &&
{error}
} Date: Wed, 27 Mar 2024 15:20:18 -0400 Subject: [PATCH 086/118] login functionality --- src/components/modal/UserLoginModal/index.js | 4 +++- src/pages/SignUp/index.js | 11 ++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/components/modal/UserLoginModal/index.js b/src/components/modal/UserLoginModal/index.js index 08efa76..3b71dfe 100644 --- a/src/components/modal/UserLoginModal/index.js +++ b/src/components/modal/UserLoginModal/index.js @@ -11,7 +11,7 @@ import "./UserLoginModal.css"; Amplify.configure(AMPLIFY_CONFIG); -const UserLoginModal = ({ onLogin, onClose }) => { +const UserLoginModal = ({ onLogin }) => { const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(""); @@ -37,6 +37,8 @@ const UserLoginModal = ({ onLogin, onClose }) => { const handleLogin = async () => { try { const { isSignedIn, nextStep } = await signIn({ username, password }); + console.log("Login successful", user); + onLogin(); } catch (error) { console.error("Error signing in", error); setError(error.message); diff --git a/src/pages/SignUp/index.js b/src/pages/SignUp/index.js index bbe6bb6..a54ac7a 100644 --- a/src/pages/SignUp/index.js +++ b/src/pages/SignUp/index.js @@ -1,22 +1,27 @@ import React, { useState } from "react"; import "./SignUp.css"; -import { signUp } from "aws-amplify/auth"; import UserLoginModal from "../../components/modal/UserLoginModal"; +import { useNavigate } from "react-router-dom"; const SignUp = () => { + const navigate = useNavigate(); + + const handleLogin = () => { + navigate("/dashboard"); // Redirect the user to the dashboard page + }; + return (

KontraX

- {/* Apply the kontra-x class to the word "Multiply" */}

Multiply your deals.

- +
); From d64d1bbb591ff7e3e06e0fe815f17ceacea10a0b Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Wed, 27 Mar 2024 17:53:25 -0400 Subject: [PATCH 087/118] Updates for signing and signing out functionality. Also a few stylistic changes --- TODO.md | 14 +++++++++ src/AppContent.js | 29 ++++++++++------- src/components/ProtectedRoute/index.js | 31 +++++++++++++++++++ src/components/layout/LeftNav/LeftNav.css | 5 +++ .../layout/LeftNav/NavListItem/index.js | 24 +++++++++----- src/components/layout/LeftNav/index.js | 20 ++++++++++-- .../GoogleSignInButton/index.js | 2 +- .../VerifyAccountModal/index.js | 6 ++-- src/components/modal/UserLoginModal/index.js | 19 +++++++++--- .../{SignUp/SignUp.css => Auth/Auth.css} | 0 src/pages/{SignUp => Auth}/index.js | 24 +++++++++++--- src/utils/constants/uiConstants.js | 6 ++-- 12 files changed, 145 insertions(+), 35 deletions(-) create mode 100644 src/components/ProtectedRoute/index.js rename src/pages/{SignUp/SignUp.css => Auth/Auth.css} (100%) rename src/pages/{SignUp => Auth}/index.js (60%) diff --git a/TODO.md b/TODO.md index ff03557..0fb6678 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,19 @@ # TODO.md +## Top Nav Development To-Do List + +- [ ] Develop Top nav with a stylish transparency but it has pageheader title + icon and also noti and settings icon +- [ ] Add User Id + +## Left Nav Development To-Do List + +- [ ] Add Sign Out + +## Auth page Development To-Do List + +- [ ] Add forgot your password feature +- [ ] Handle google sign in vs manual sign in caveats + ## Dashboard Development To-Do List - [ ] **Overview Section** diff --git a/src/AppContent.js b/src/AppContent.js index 9fb6f6a..e3dfb27 100644 --- a/src/AppContent.js +++ b/src/AppContent.js @@ -1,3 +1,4 @@ +// AppContent.js or wherever you define your routes import React from "react"; import { Route, Routes } from "react-router-dom"; import { PageHeaderProvider } from "./context"; @@ -6,7 +7,8 @@ import SignUpLayout from "./components/layout/SignUpLayout"; import Dashboard from "./pages/Dashboard"; import Prospects from "./pages/Prospects"; import Leads from "./pages/Leads"; -import SignUp from "./pages/SignUp"; +import SignUp from "./pages/Auth"; +import ProtectedRoute from "./components/ProtectedRoute"; const AppContent = () => { return ( @@ -20,29 +22,34 @@ const AppContent = () => { } /> - - - + + + + + } /> - - + + + + + } /> - - + + + + + } /> diff --git a/src/components/ProtectedRoute/index.js b/src/components/ProtectedRoute/index.js new file mode 100644 index 0000000..ca7f1f5 --- /dev/null +++ b/src/components/ProtectedRoute/index.js @@ -0,0 +1,31 @@ +import React, { useEffect, useState } from "react"; +import { Navigate } from "react-router-dom"; +import { getCurrentUser } from "@aws-amplify/auth"; +import LoadingSpinner from "../shared/LoadingSpinner"; + +const ProtectedRoute = ({ children }) => { + const [isAuthenticated, setIsAuthenticated] = useState(false); + const [isLoading, setIsLoading] = useState(true); + + useEffect(() => { + checkAuthState(); + }, []); + + async function checkAuthState() { + try { + await getCurrentUser(); + setIsAuthenticated(true); + } catch (error) { + setIsAuthenticated(false); + } + setIsLoading(false); + } + + if (isLoading) { + return ; + } + + return isAuthenticated ? children : ; +}; + +export default ProtectedRoute; diff --git a/src/components/layout/LeftNav/LeftNav.css b/src/components/layout/LeftNav/LeftNav.css index 377a8e5..5ff19d3 100644 --- a/src/components/layout/LeftNav/LeftNav.css +++ b/src/components/layout/LeftNav/LeftNav.css @@ -4,6 +4,7 @@ position: fixed; display: flex; flex-direction: column; + justify-content: space-between; padding-top: 20px; /* adjusted padding */ background-color: var(--brand-color); margin-top: 64px; @@ -47,3 +48,7 @@ .MuiListItemButton-root:hover { color: #bdc3c7; } + +.nav-item-spacer { + flex-grow: 0.5; +} diff --git a/src/components/layout/LeftNav/NavListItem/index.js b/src/components/layout/LeftNav/NavListItem/index.js index 7d5ace6..c9fc4fd 100644 --- a/src/components/layout/LeftNav/NavListItem/index.js +++ b/src/components/layout/LeftNav/NavListItem/index.js @@ -3,13 +3,21 @@ import ListItem from "@mui/material/ListItem"; import ListItemButton from "@mui/material/ListItemButton"; import { Link } from "react-router-dom"; -const NavListItem = ({ to, icon, label }) => ( - - {icon} - - {label} - - -); +const NavListItem = ({ to, icon, label, onClick }) => { + const isActionItem = Boolean(onClick); + + return ( + + {icon} + {isActionItem ? ( + {label} + ) : ( + + {label} + + )} + + ); +}; export default NavListItem; diff --git a/src/components/layout/LeftNav/index.js b/src/components/layout/LeftNav/index.js index 11cb2c0..ee322bc 100644 --- a/src/components/layout/LeftNav/index.js +++ b/src/components/layout/LeftNav/index.js @@ -2,13 +2,23 @@ import React from "react"; import List from "@mui/material/List"; import NavListItem from "./NavListItem"; import "./LeftNav.css"; -import { NAV_ITEMS } from "../../../utils/constants/uiConstants"; +import { NAV_ITEMS, SIGN_OUT_ITEM } from "../../../utils/constants/uiConstants"; +import { signOut } from "aws-amplify/auth"; const LeftNav = () => { + const handleSignOut = async () => { + try { + await signOut(); + console.log("User signed out successfully"); + } catch (error) { + console.log("error signing out: ", error); + } + }; + return ( {NAV_ITEMS.map((item) => ( - + { item.label === "Offer Outreach") &&
} ))} +
+ ); }; diff --git a/src/components/modal/UserLoginModal/GoogleSignInButton/index.js b/src/components/modal/UserLoginModal/GoogleSignInButton/index.js index fb9cec2..b759761 100644 --- a/src/components/modal/UserLoginModal/GoogleSignInButton/index.js +++ b/src/components/modal/UserLoginModal/GoogleSignInButton/index.js @@ -35,7 +35,7 @@ const GoogleSignInButton = ({ onSignIn }) => {
- Sign in with Google + Continue with Google
diff --git a/src/components/modal/UserLoginModal/VerifyAccountModal/index.js b/src/components/modal/UserLoginModal/VerifyAccountModal/index.js index 5e014de..a74b467 100644 --- a/src/components/modal/UserLoginModal/VerifyAccountModal/index.js +++ b/src/components/modal/UserLoginModal/VerifyAccountModal/index.js @@ -1,19 +1,21 @@ import React, { useState } from "react"; import { confirmSignUp } from "@aws-amplify/auth"; +import { useNavigate } from "react-router-dom"; import "./VerifyAccountModal.css"; // Your CSS styles const VerifyAccountModal = ({ username, onClose }) => { const [verificationCode, setVerificationCode] = useState(""); const [error, setError] = useState(""); + const navigate = useNavigate(); const handleVerify = async () => { try { - const { isSignUpComplete, nextStep } = await confirmSignUp({ + await confirmSignUp({ username, confirmationCode: verificationCode, }); console.log("Account verified successfully"); - onClose(); // Close modal and proceed + navigate("/dashboard"); } catch (error) { console.error("Error verifying account:", error); setError(error.message); diff --git a/src/components/modal/UserLoginModal/index.js b/src/components/modal/UserLoginModal/index.js index 3b71dfe..1245f38 100644 --- a/src/components/modal/UserLoginModal/index.js +++ b/src/components/modal/UserLoginModal/index.js @@ -36,8 +36,11 @@ const UserLoginModal = ({ onLogin }) => { const handleLogin = async () => { try { - const { isSignedIn, nextStep } = await signIn({ username, password }); - console.log("Login successful", user); + await signIn({ + username: email, + password, + }); + console.log("Login successful"); onLogin(); } catch (error) { console.error("Error signing in", error); @@ -45,6 +48,12 @@ const UserLoginModal = ({ onLogin }) => { } }; + const handleKeyDown = (event) => { + if (event.key === "Enter") { + handleLogin(); + } + }; + const handleSignUp = () => { setShowLoginModal(false); setShowNewAccountModal(true); @@ -72,14 +81,15 @@ const UserLoginModal = ({ onLogin }) => {
Sign In
- Enter your KontraX account credentials. + Enter your KontraX account email address and password.
{" "} {error &&
{error}
} setEmail(e.target.value)} + onKeyDown={handleKeyDown} />
{ placeholder="Password" value={password} onChange={(e) => setPassword(e.target.value)} + onKeyDown={handleKeyDown} /> { +const Auth = () => { const navigate = useNavigate(); + useEffect(() => { + checkCurrentUser(); + }, []); + + async function checkCurrentUser() { + try { + await getCurrentUser(); + navigate("/dashboard"); + } catch (err) { + console.log(err); + } + } + const handleLogin = () => { - navigate("/dashboard"); // Redirect the user to the dashboard page + navigate("/dashboard"); }; return ( @@ -27,4 +41,4 @@ const SignUp = () => { ); }; -export default SignUp; +export default Auth; diff --git a/src/utils/constants/uiConstants.js b/src/utils/constants/uiConstants.js index ae1df44..c341ebd 100644 --- a/src/utils/constants/uiConstants.js +++ b/src/utils/constants/uiConstants.js @@ -27,7 +27,7 @@ export const MAPPING_MODAL_TEXT = { export const MODAL_LABELS = { MARKET_LABEL: "Market", SUBMIT_BUTTON: "Submit", - SIGN_UP: "Sign Up" + SIGN_UP: "Sign Up", }; export const DOWNLOAD_MESSAGES = { @@ -44,7 +44,7 @@ export const SMALL_NOTIFICATIONS_MESSAGES = { }; export const NAV_ITEMS = [ - { to: "/", icon: "analytics", label: "Main Dashboard" }, + { to: "/dashboard", icon: "analytics", label: "Main Dashboard" }, { to: "/prospects", icon: "location_searching", label: "Prospects" }, { to: "/leads", icon: "supervised_user_circle", label: "Leads" }, { to: "/offer-oracle", icon: "psychology", label: "Offer Oracle" }, @@ -59,6 +59,8 @@ export const NAV_ITEMS = [ { to: "/title", icon: "gavel", label: "Title Kickstart" }, ]; +export const SIGN_OUT_ITEM = { icon: "logout", label: "Sign Out" }; + export const CTA_ITEMS = [ { label: "Sign Up Now!", From f95a6f94d17b5a75ba6471456ee1f589d3a72fb2 Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Wed, 27 Mar 2024 20:05:19 -0400 Subject: [PATCH 088/118] final updates --- src/components/layout/LeftNav/index.js | 4 + .../UserLoginModal/NewAccountModal/index.js | 98 +++++++++++-------- src/components/modal/UserLoginModal/index.js | 16 ++- .../shared/InputField/InputField.css | 0 src/components/shared/InputField/index.js | 27 +++++ src/utils/constants/errorConstants.js | 41 ++++++-- src/utils/constants/uiConstants.js | 8 ++ 7 files changed, 145 insertions(+), 49 deletions(-) create mode 100644 src/components/shared/InputField/InputField.css create mode 100644 src/components/shared/InputField/index.js diff --git a/src/components/layout/LeftNav/index.js b/src/components/layout/LeftNav/index.js index ee322bc..338a662 100644 --- a/src/components/layout/LeftNav/index.js +++ b/src/components/layout/LeftNav/index.js @@ -4,12 +4,16 @@ import NavListItem from "./NavListItem"; import "./LeftNav.css"; import { NAV_ITEMS, SIGN_OUT_ITEM } from "../../../utils/constants/uiConstants"; import { signOut } from "aws-amplify/auth"; +import { useNavigate } from "react-router-dom"; const LeftNav = () => { + const navigate = useNavigate(); + const handleSignOut = async () => { try { await signOut(); console.log("User signed out successfully"); + navigate("/"); } catch (error) { console.log("error signing out: ", error); } diff --git a/src/components/modal/UserLoginModal/NewAccountModal/index.js b/src/components/modal/UserLoginModal/NewAccountModal/index.js index 4897f2a..23963ba 100644 --- a/src/components/modal/UserLoginModal/NewAccountModal/index.js +++ b/src/components/modal/UserLoginModal/NewAccountModal/index.js @@ -6,10 +6,14 @@ import { AiFillEye, AiFillEyeInvisible } from "react-icons/ai"; import { MODAL_LABELS } from "../../../../utils/constants/uiConstants"; import { formatPhoneNumberToE164 } from "../../../../utils/commonFunctions"; import "./NewAccountModal.css"; +import { ERROR_MESSAGES } from "../../../../utils/constants/errorConstants"; +import { SIGN_UP_PLACEHOLDERS } from "../../../../utils/constants/uiConstants"; +import InputField from "../../../shared/InputField"; const NewAccountModal = ({ onClose, onShowVerify }) => { const [error, setError] = useState(""); const [passwordVisible, setPasswordVisible] = useState(false); + const [isLoading, setIsLoading] = useState(false); const [formState, setFormState] = useState({ name: "", email: "", @@ -24,6 +28,18 @@ const NewAccountModal = ({ onClose, onShowVerify }) => { const handleSignUp = async () => { const { name, email, phone, password } = formState; + + if (!validateEmail(email)) { + setError(ERROR_MESSAGES.EMAIL_INVALID); + return; + } + + if (!validatePassword(password)) { + setError(ERROR_MESSAGES.PASSWORD_STRENGTH); + return; + } + + setIsLoading(true); try { await signUp({ username: email, @@ -37,10 +53,12 @@ const NewAccountModal = ({ onClose, onShowVerify }) => { }, }); console.log("Sign up successful"); + setIsLoading(false); onShowVerify(email); } catch (error) { console.error("Error signing up:", error); - setError(error.message); + setError(ERROR_MESSAGES.SIGN_UP_FAILED); + setIsLoading(false); } }; @@ -48,42 +66,37 @@ const NewAccountModal = ({ onClose, onShowVerify }) => {
{error &&
{error}
} -
- - -
-
- - -
-
- - -
+ + Full name + + + Email + + + Phone number +

KPRa^-ZI9_!zECSkb%Q)4oN02n9iGrBoJY=FYd!BMf{{VUg2-{z#8T^{ z($%HOK7SE^Na≦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 { + const handleDropdownChange = (fileHeader, selectedValue) => { + onMappingChange(fileHeader, selectedValue); + }; + + return ( +
+

{MAPPING_MODAL_TEXT.TITLE}

+

{MAPPING_MODAL_TEXT.INSTRUCTIONS}

+
+ {fileHeaders.map((header, index) => { + const availableOptions = SKIPTRACE_API_EXPECTED_HEADERS.filter( + (opt) => + !Object.values(headerMappings).includes(opt.value) || + headerMappings[header] === opt.value + ); + + return ( +
+ + handleDropdownChange(header, e.target.value)} + placeholder="Select a field..." + /> +
+ ); + })} +
+
+ ); +}; + +export default HeaderMapping; diff --git a/src/components/PageHeader/PageHeader.css b/src/components/PageHeader/PageHeader.css new file mode 100644 index 0000000..ff490e2 --- /dev/null +++ b/src/components/PageHeader/PageHeader.css @@ -0,0 +1,18 @@ +/* src/components/PageHeader/PageHeader.css */ + +.page-header { + font-size: 2em; + color: rgba(0, 0, 0, 0.5); + text-shadow: 0px 0px 0px var(--brand-color-light); + margin-top: 15px; + display: flex; + justify-content: center; /* Center the content horizontally */ + align-items: center; + margin-bottom: 20px; +} + +.page-header-icon { + font-size: 1.3em; + vertical-align: middle; + margin-right: 10px; /* Add some space between the icon and title */ +} diff --git a/src/components/PageHeader/index.js b/src/components/PageHeader/index.js new file mode 100644 index 0000000..10c9328 --- /dev/null +++ b/src/components/PageHeader/index.js @@ -0,0 +1,13 @@ +import React from "react"; +import "./PageHeader.css"; + +const PageHeader = ({ title, iconName }) => { + return ( +
+ {title} + {iconName} +
+ ); +}; + +export default PageHeader; diff --git a/src/components/dataVisualizations/Charts/BubbleChart/index.js b/src/components/dataVisualizations/Charts/BubbleChart/index.js new file mode 100644 index 0000000..d363c6d --- /dev/null +++ b/src/components/dataVisualizations/Charts/BubbleChart/index.js @@ -0,0 +1,132 @@ +import React, { useRef, useEffect, useMemo } from "react"; +import { Chart, registerables } from "chart.js"; +import "chartjs-adapter-date-fns"; + +Chart.register(...registerables); + +const BubbleChart = ({ data }) => { + const chartRef = useRef(null); + const chartInstance = useRef(null); + + const marketColors = useMemo( + () => ({ + Atlanta: "#1e3a5f", + Charlotte: "#50e3c2", + Columbus: "#FF0000", + Indianapolis: "#ffa600", // Orange + Jacksonville: "#FFFF00", + "Las Vegas": "#964B00", + Memphis: "#bc5090", // Purple + Philadelphia: "#7ed321", + Tampa: "#58508d", // Dark violet + }), + [] + ); + + useEffect(() => { + if (chartRef.current && data) { + if (chartInstance.current) { + chartInstance.current.destroy(); + } + + const chartContext = chartRef.current.getContext("2d"); + + // Group the data by market + const dataByMarket = data.reduce((acc, item) => { + const market = item.market; + if (!acc[market]) { + acc[market] = []; + } + acc[market].push({ + x: new Date(item.date).getTime(), + y: item.dealsClosed, + r: Math.sqrt(item.dealsClosed), // Adjust the radius calculation as needed + }); + return acc; + }, {}); + + // Create a dataset for each market + const datasets = Object.entries(dataByMarket).map(([market, data]) => ({ + label: market, + data: data, + backgroundColor: marketColors[market] || "rgba(0,0,0,0.1)", + })); + + chartInstance.current = new Chart(chartContext, { + type: "bubble", + data: { datasets }, + options: { + responsive: true, + maintainAspectRatio: false, + scales: { + x: { + type: "time", + time: { + unit: "month", + tooltipFormat: "MMM yyyy", + }, + title: { + display: true, + text: "Date", + }, + grid: { + display: false, + }, + }, + y: { + beginAtZero: true, + title: { + display: true, + text: "Deals Closed", + }, + min: 0, // Minimum value for Y-axis + max: 35, // Maximum value for Y-axis - adjust as needed + ticks: { + stepSize: 5, // Adjust tick marks - for example, every 50 units + }, + grid: { + display: false, + }, + }, + }, + plugins: { + tooltip: { + callbacks: { + label: function (context) { + const label = context.dataset.label || ""; + const value = context.parsed.y || ""; + return `${label}: ${value} deals closed`; + }, + }, + }, + legend: { + display: true, // Set this to true if you want to display the legend + position: "bottom", // Ensures the legend is at the top + align: "start", + labels: { + padding: 15, + // Optionally add this to control the size of the color box in the legend + boxWidth: 12, // Default is 40 + }, + }, + }, + layout: { + padding: { + bottom: 50, // Increase this value to add more space above the chart and below the legend + }, + }, + }, + }); + } + + return () => { + if (chartInstance.current) { + chartInstance.current.destroy(); + } + }; + }, [data, marketColors]); + + return ; +}; + +export default BubbleChart; diff --git a/src/components/dataVisualizations/Charts/CustomPieChart/CustomPieChart.css b/src/components/dataVisualizations/Charts/CustomPieChart/CustomPieChart.css new file mode 100644 index 0000000..12214b5 --- /dev/null +++ b/src/components/dataVisualizations/Charts/CustomPieChart/CustomPieChart.css @@ -0,0 +1,4 @@ +.recharts-legend-wrapper { + /* You might need to make this value negative to move the legend up */ + margin-top: -15%; /* Adjust this value */ +} diff --git a/src/components/dataVisualizations/Charts/CustomPieChart/index.js b/src/components/dataVisualizations/Charts/CustomPieChart/index.js new file mode 100644 index 0000000..8d4d3c9 --- /dev/null +++ b/src/components/dataVisualizations/Charts/CustomPieChart/index.js @@ -0,0 +1,51 @@ +import React from "react"; +import { + PieChart, + Pie, + Tooltip, + Cell, + Legend, + ResponsiveContainer, +} from "recharts"; +import ChartToolTip from "../../../shared/ChartToolTip"; +import "./CustomPieChart.css"; + +const CustomPieChart = ({ data }) => { + const gradientColors = ["#1e3a5f", "#d5b5a3"]; + + return ( + + + + `${name} (${(percent * 100).toFixed(0)}%)` + } + > + {data.map((entry, index) => ( + + ))} + + } /> + + + + ); +}; + +export default CustomPieChart; diff --git a/src/components/dataVisualizations/Charts/RadarChart/RadarChart.css b/src/components/dataVisualizations/Charts/RadarChart/RadarChart.css new file mode 100644 index 0000000..1a02c2b --- /dev/null +++ b/src/components/dataVisualizations/Charts/RadarChart/RadarChart.css @@ -0,0 +1,14 @@ +.custom-tooltip { + background: rgba(255, 255, 255, 0.9); + border: 1px solid #cccccc; + padding: 10px; + border-radius: 5px; +} + +.custom-tooltip .label { + font-weight: bold; +} + +.custom-tooltip .intro { + margin: 0; +} diff --git a/src/components/dataVisualizations/Charts/RadarChart/index.js b/src/components/dataVisualizations/Charts/RadarChart/index.js new file mode 100644 index 0000000..e321bf6 --- /dev/null +++ b/src/components/dataVisualizations/Charts/RadarChart/index.js @@ -0,0 +1,43 @@ +import React from "react"; +import "./RadarChart.css"; +import { + Radar, + RadarChart, + PolarGrid, + PolarAngleAxis, + PolarRadiusAxis, + ResponsiveContainer, + Tooltip, +} from "recharts"; +import ChartTooltip from "../../../shared/ChartToolTip"; + +const SalesRadarChart = (props) => { + const gradientColors = ["#d5b5a3", "#1e3a5f"]; + + return ( + + + + + + } colors={gradientColors} /> + + + + + ); +}; + +export default SalesRadarChart; diff --git a/src/components/dataVisualizations/Charts/StackedBarChart/StackedBarChart.css b/src/components/dataVisualizations/Charts/StackedBarChart/StackedBarChart.css new file mode 100644 index 0000000..d9c3ba2 --- /dev/null +++ b/src/components/dataVisualizations/Charts/StackedBarChart/StackedBarChart.css @@ -0,0 +1,47 @@ +.legend-wrapper { + display: flex; + justify-content: center; + align-items: center; + margin-top: 10px; +} + +.legend-item { + display: flex; + align-items: center; + color: var(--brand-color); + margin-right: 10px; +} + +.legend-color { + height: 12px; + margin-right: 5px; +} + +.legend-item:nth-child(2) { + color: #695017; /* color for "Conversations Had" */ +} + +.legend-item:nth-child(3) { + color: var(--brand-color-2); /* color for "Signed Agreements" */ +} + +.bar-chart-container { + padding-bottom: 10px; + width: 131%; +} + +.custom-tooltip { + background: rgba(255, 255, 255, 0.9); + border: 1px solid #cccccc; + padding: 10px; + border-radius: 5px; +} + +.custom-tooltip .label { + font-weight: bold; + color: var(--brand-color); +} + +.custom-tooltip .intro { + margin: 0; +} diff --git a/src/components/dataVisualizations/Charts/StackedBarChart/index.js b/src/components/dataVisualizations/Charts/StackedBarChart/index.js new file mode 100644 index 0000000..829069f --- /dev/null +++ b/src/components/dataVisualizations/Charts/StackedBarChart/index.js @@ -0,0 +1,81 @@ +import React from "react"; +import { + BarChart, + Bar, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Text, +} from "recharts"; + +import "./StackedBarChart.css"; +import ChartTooltip from "../../../shared/ChartToolTip"; + +const StackedBarChart = ({ data, barKeys, yAxisLabel }) => { + const barChartColors = [ + "url(#colorGradient1)", + "url(#colorGradient2)", + "url(#colorGradient3)", + ]; + + const gradientColors = ["#1e3a5f", "#2e4c74", "#d5b5a3"]; + + return ( +
+ + + + + + + + + + + + + + + + + + + {yAxisLabel} + + } + /> + } /> + + {barKeys.bars.map((key, index) => ( + + ))} + +
+ ); +}; + +export default StackedBarChart; diff --git a/src/components/dataVisualizations/SingleValueCard/SingleValueCard.css b/src/components/dataVisualizations/SingleValueCard/SingleValueCard.css new file mode 100644 index 0000000..19df7c7 --- /dev/null +++ b/src/components/dataVisualizations/SingleValueCard/SingleValueCard.css @@ -0,0 +1,69 @@ +.card-container { + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + background-color: var(--white); + border: 1px solid var(--light-gray); + border-radius: 20px; /* Updated rounded corners based on mockup */ + padding: 10px 20px; + box-shadow: 0px 3px 15px rgb(30 58 95 / 20%); + width: 350px; + margin: 1rem 0; + transition: transform 0.2s ease-in-out; +} + +.card-content { + display: flex; + align-items: center; + flex-grow: 1; +} + +.card-title { + color: #535b63; + font-size: 0.8rem; /* Smaller font size for title */ + width: 100%; + margin-bottom: 5px; /* A bit of space below the title */ + text-shadow: 2px 2px 4px rgba(35, 25, 7, 0.3); +} + +.card-value { + color: #000000a3; + font-size: 2.5rem; +} + +.card-change { + color: green; + margin-top: 5px; /* If you want some space between value and change */ +} + +.card-icon { + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; + flex-shrink: 0; + margin-left: 20px; + height: auto; + width: 35px; +} + +.card-icon-svg { + flex-shrink: 0; + font-size: 2.5rem !important; + color: var(--brand-color-light); +} + +.card-container:hover { + transform: scale(1.02); +} + +.card-container.small { + padding: 5px 20px; + border-radius: 30px; + width: 235px; +} + +.card-title.center-title { + text-align: center; /* Centered alignment */ +} diff --git a/src/components/dataVisualizations/SingleValueCard/index.js b/src/components/dataVisualizations/SingleValueCard/index.js new file mode 100644 index 0000000..4e48698 --- /dev/null +++ b/src/components/dataVisualizations/SingleValueCard/index.js @@ -0,0 +1,21 @@ +import React from "react"; +import "./SingleValueCard.css"; + +const SingleValueCard = ({ title, value, change, icon: Icon, variant }) => { + return ( +
+ + {title} + +
+ {Icon ? : null} + {value} +
+ {change && {change}} +
+ ); +}; + +export default SingleValueCard; diff --git a/src/components/dataVisualizations/SingleValueCardsGrid/SingleValueCardsGrid.css b/src/components/dataVisualizations/SingleValueCardsGrid/SingleValueCardsGrid.css new file mode 100644 index 0000000..31ce8df --- /dev/null +++ b/src/components/dataVisualizations/SingleValueCardsGrid/SingleValueCardsGrid.css @@ -0,0 +1,10 @@ +.cards-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); /* Creates two columns */ + gap: 16px; /* Space between grid items */ + width: 100%; +} + +.cards-grid-small .single-value-card { + width: 100%; +} diff --git a/src/components/dataVisualizations/SingleValueCardsGrid/index.js b/src/components/dataVisualizations/SingleValueCardsGrid/index.js new file mode 100644 index 0000000..35b39f7 --- /dev/null +++ b/src/components/dataVisualizations/SingleValueCardsGrid/index.js @@ -0,0 +1,22 @@ +import React from "react"; +import SingleValueCard from "../SingleValueCard/index"; +import "./SingleValueCardsGrid.css"; + +const SingleValueCardsGrid = ({ kpis, variant }) => { + return ( +
+ {kpis.map((kpi, index) => ( + + ))} +
+ ); +}; + +export default SingleValueCardsGrid; diff --git a/src/components/layout/HomePageLayout/HomePageLayout.css b/src/components/layout/HomePageLayout/HomePageLayout.css new file mode 100644 index 0000000..51229a3 --- /dev/null +++ b/src/components/layout/HomePageLayout/HomePageLayout.css @@ -0,0 +1,113 @@ +/* HomePageLayout.css */ + +:root { + --dropdown-bg: #3e5f8a; + --dropdown-hover: #2c4a73; + --dropdown-header: #d5b5a3; +} + +.header-labels { + font-weight: bold; + padding-left: 20px; /* or any value that aligns it as in your mockup */ +} + +.navbar-custom { + background-color: var(--brand-color); + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); +} + +.navbar { + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); +} + +.navbar-brand { + padding-left: 20px; +} + +.navbar-brand, +.nav-link { + color: var(--brand-color-2); +} + +.navbar-brand:hover, +.nav-link:hover { + color: var(--white-color); +} + +.nav-bar { + width: 200px; /* Adjust width as needed */ + background-color: #092d4e; + color: #f1e9da; + padding: 20px; + /* ... other styles ... */ +} + +.content { + padding: 50px 0; +} + +.container { + width: 100%; + max-width: 100%; + padding: 0; + display: flex; + justify-content: center; + font-family: var(--font-family); +} + +.navbar-collapse-custom { + padding-right: 2%; +} + +h2.text-center { + font-size: 2.5rem; + font-weight: bold; + color: var(--white-color); + margin-bottom: 40px; +} + +.nav-link .fa { + font-size: 1.2rem; +} + +.navbar-custom .dropdown-menu { + background-color: var(--dropdown-bg); + border-radius: 4px; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.1); +} + +.navbar-custom .dropdown-menu .dropdown-item { + color: var(--brand-color); + font-weight: 600; + padding: 8px 16px; +} + +.navbar-custom .dropdown-menu .dropdown-item:hover { + background-color: var(--dropdown-hover); + color: var(--brand-color); +} + +.navbar-custom .dropdown-menu .dropdown-item i { + margin-right: 8px; +} + +.navbar-custom .dropdown-menu .dropdown-header { + color: var(--dropdown-header); + font-weight: bold; + font-size: 0.8em; + padding-top: 10px; + padding-bottom: 10px; +} + +.navbar-custom .dropdown-menu .dropdown-header:hover { + color: var(--dropdown-header); +} + +.header { + width: 100%; + display: flex; + justify-content: space-between; + padding: 10px 20px; + background-color: #092d4e; /* Darker Blue */ + color: #f1e9da; /* Cream */ +} diff --git a/src/components/layout/HomePageLayout/index.js b/src/components/layout/HomePageLayout/index.js new file mode 100644 index 0000000..ad36f67 --- /dev/null +++ b/src/components/layout/HomePageLayout/index.js @@ -0,0 +1,31 @@ +import React, { useState } from "react"; +import { Container } from "react-bootstrap"; +import LeftNav from "../LeftNav"; +import TopNav from "../TopNav"; +import PageHeader from "../../PageHeader"; +import Drawer from "@mui/material/Drawer"; +import "bootstrap/dist/css/bootstrap.min.css"; +import "./HomePageLayout.css"; +import { usePageHeader } from "../../../hooks/usePageHeader"; + +const HomePageLayout = ({ children }) => { + const [drawerOpen, setDrawerOpen] = useState(false); + const { title, iconName } = usePageHeader(); + + const handleDrawerToggle = () => { + setDrawerOpen(!drawerOpen); + }; + + return ( + <> + + + + + + {children} + + ); +}; + +export default HomePageLayout; diff --git a/src/components/layout/LeftNav/LeftNav.css b/src/components/layout/LeftNav/LeftNav.css new file mode 100644 index 0000000..377a8e5 --- /dev/null +++ b/src/components/layout/LeftNav/LeftNav.css @@ -0,0 +1,49 @@ +.left-nav { + width: 240px; + height: 100vh; + position: fixed; + display: flex; + flex-direction: column; + padding-top: 20px; /* adjusted padding */ + background-color: var(--brand-color); + margin-top: 64px; + color: #ffffff; + padding-left: 30px !important; + box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.2); +} + +.left-nav li { + margin-bottom: 16px; /* Space between list items */ +} + +/* Specific top margin for the first item */ +.left-nav li:first-child { + margin-top: 15px; /* Reduce space above Main Dashboard */ + margin-bottom: 5px; +} + +.nav-item, +.MuiListItemButton-root { + color: #ffffff; + text-decoration: none; + font-size: 18px; + transition: color 0.3s ease; +} + +.main-dashboard-item .MuiListItemButton-root { + font-weight: bold; /* Makes the Main Dashboard bold */ + font-size: 20px; /* Slightly larger font for Main Dashboard */ + margin-bottom: 8px; /* Reduce space above the dashed line */ +} + +.dashed-line { + border-top: 1px dashed #ffffff; + width: 80%; /* or whatever percentage/value you prefer */ + margin-top: 8px; /* Reduced space below Main Dashboard */ + margin-bottom: 16px; /* Consistent space below the dashed line */ +} + +.nav-item:hover, +.MuiListItemButton-root:hover { + color: #bdc3c7; +} diff --git a/src/components/layout/LeftNav/NavListItem/index.js b/src/components/layout/LeftNav/NavListItem/index.js new file mode 100644 index 0000000..7d5ace6 --- /dev/null +++ b/src/components/layout/LeftNav/NavListItem/index.js @@ -0,0 +1,15 @@ +import React from "react"; +import ListItem from "@mui/material/ListItem"; +import ListItemButton from "@mui/material/ListItemButton"; +import { Link } from "react-router-dom"; + +const NavListItem = ({ to, icon, label }) => ( + + {icon} + + {label} + + +); + +export default NavListItem; diff --git a/src/components/layout/LeftNav/NavigationDrawer/index.js b/src/components/layout/LeftNav/NavigationDrawer/index.js new file mode 100644 index 0000000..5859db2 --- /dev/null +++ b/src/components/layout/LeftNav/NavigationDrawer/index.js @@ -0,0 +1,37 @@ +// NavigationDrawer.jsx + +import React, { useState } from "react"; +import { AppBar, Toolbar, IconButton, Drawer } from "@mui/material"; +import MenuIcon from "@mui/icons-material/Menu"; +import LeftNav from ".."; + +const NavigationDrawer = () => { + const [open, setOpen] = useState(false); + + const toggleDrawer = () => { + setOpen(!open); + }; + + return ( + <> + + + + + + + + + + + + + ); +}; + +export default NavigationDrawer; diff --git a/src/components/layout/LeftNav/index.js b/src/components/layout/LeftNav/index.js new file mode 100644 index 0000000..021d7dd --- /dev/null +++ b/src/components/layout/LeftNav/index.js @@ -0,0 +1,41 @@ +import React from "react"; +import List from "@mui/material/List"; +import NavListItem from "./NavListItem"; +import "./LeftNav.css"; + +const LeftNav = () => { + const navItems = [ + { to: "/", icon: "analytics", label: "Main Dashboard" }, + { to: "/prospects", icon: "location_searching", label: "Prospects" }, + { to: "/leads", icon: "supervised_user_circle", label: "Leads" }, + { to: "/offer-oracle", icon: "psychology", label: "Offer Oracle" }, + { to: "/offers", icon: "send", label: "Offer Outreach" }, + { + to: "/inspections", + icon: "fact_check", + label: "Inspections", + }, + { to: "/buyers", icon: "group", label: "Buyers" }, + { to: "/deal-distribution", icon: "rocket_launch", label: "Deal Deploy" }, + { to: "/title", icon: "gavel", label: "Title Kickstart" }, + ]; + + return ( + + {navItems.map((item, index) => ( + + + {(item.label === "Main Dashboard" || + item.label === "Offer Outreach") &&
} + + ))} + + ); +}; + +export default LeftNav; diff --git a/src/components/layout/Section/Section.css b/src/components/layout/Section/Section.css new file mode 100644 index 0000000..377a27b --- /dev/null +++ b/src/components/layout/Section/Section.css @@ -0,0 +1,33 @@ +.section { + background: #fafafa; /* Light grey to soften the look */ + border-radius: 13px; /* Slightly larger radius for a more modern look */ + box-shadow: 0 6px 16px rgba(0, 0, 0, 0.45); /* Softer shadow for depth */ + padding: 23px; + width: calc(100% - 60px); + display: flex; + flex-direction: column; + align-items: flex-start; + margin: 2% auto 5%; +} + +.section-overview { + background: #fafafa; /* Light grey to soften the look */ + border-radius: 13px; /* Slightly larger radius for a more modern look */ + box-shadow: 0 6px 16px rgba(0, 0, 0, 0.45); /* Softer shadow for depth */ + padding: 23px; + margin: 30px 0; /* Give more space around the section */ + width: calc(100% - 60px); /* Adjust width based on new padding/margin */ + display: flex; + flex-direction: column; + align-items: flex-start; /* Align items to the start for a cleaner look */ +} + +.section-title { + font-family: "Helvetica Neue", sans-serif; /* Modern, clean typeface */ + font-size: 1.75em; /* Slightly larger for emphasis */ + color: var(--brand-color); + letter-spacing: 0.5px; /* Add letter spacing */ + margin-bottom: 23px; + width: 100%; + text-align: left; +} diff --git a/src/components/layout/Section/index.js b/src/components/layout/Section/index.js new file mode 100644 index 0000000..6c6788a --- /dev/null +++ b/src/components/layout/Section/index.js @@ -0,0 +1,10 @@ +import "./Section.css"; + +const Section = ({ title, children, className }) => ( +
+

{title}

+ {children} +
+); + +export default Section; diff --git a/src/components/layout/TopNav/TopNav.css b/src/components/layout/TopNav/TopNav.css new file mode 100644 index 0000000..6870c4b --- /dev/null +++ b/src/components/layout/TopNav/TopNav.css @@ -0,0 +1,67 @@ +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.05); + } + 100% { + transform: scale(1); + } +} + +.top-nav, +.MuiAppBar-root { + background-color: #ffffff; + color: #ecf0f1; +} + +.top-nav { + padding-left: 15px !important; +} + +.MuiAppBar-root { + box-shadow: none !important; + background-color: #ffffff !important; + color: var(--brand-color-1) !important; +} + +.top-nav .logo, +.MuiIconButton-root { + font-size: 24px; + font-weight: bold; +} + +.top-nav .nav-link, +.MuiIconButton-root { + color: #ecf0f1; +} + +.top-nav .nav-link:hover, +.MuiIconButton-root:hover { + color: #bdc3c7; +} + +.pageHeader { + display: flex; + align-items: center; +} + +.logo-img { + height: 40px; + width: auto; + margin-right: 15px; +} + +/* New styles for the Menu button with pulse effect */ +.menu-button { + animation: pulse 1.5s infinite; + display: flex; + align-items: center; + gap: 8px; /* space between icon and Menu text */ +} + +.menu-button > span { + font-size: 10px; /* adjust font size for Menu text as needed */ + color: #ecf0f1; /* color of the Menu text */ +} diff --git a/src/components/layout/TopNav/index.js b/src/components/layout/TopNav/index.js new file mode 100644 index 0000000..f6eda17 --- /dev/null +++ b/src/components/layout/TopNav/index.js @@ -0,0 +1,36 @@ +import React from "react"; +import AppBar from "@mui/material/AppBar"; +import Toolbar from "@mui/material/Toolbar"; +import IconButton from "@mui/material/IconButton"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faBell, faCog } from "@fortawesome/free-solid-svg-icons"; +import MenuIcon from "@mui/icons-material/Menu"; +import "./TopNav.css"; + +const TopNav = ({ handleDrawerToggle }) => { + return ( + + + + + Menu + +
+ + + + + + +
+
+ ); +}; + +export default TopNav; diff --git a/src/components/modal/HeaderMappingModal/HeaderMappingModal.css b/src/components/modal/HeaderMappingModal/HeaderMappingModal.css new file mode 100644 index 0000000..51a0713 --- /dev/null +++ b/src/components/modal/HeaderMappingModal/HeaderMappingModal.css @@ -0,0 +1,50 @@ +.mapping-modal-backdrop { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.4); /* Semi-transparent black */ + display: flex; + justify-content: center; + align-items: center; + z-index: 1050; /* Ensure this is higher than any other modal */ +} + +.mapping-modal-content { + background: white; + padding: 2rem; + border-radius: 10px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + width: 80%; + max-width: 600px; + z-index: 2; /* Ensure this is higher than the backdrop but less than the overall container */ + display: flex; + flex-direction: column; + align-items: center; /* Center the content horizontally */ +} + +.modal-actions { + display: flex; + justify-content: space-around; /* Evenly distribute the buttons */ + flex-wrap: wrap; /* Allow buttons to wrap onto the next line */ + gap: 10px; /* Spacing between buttons */ + margin-top: 20px; +} + +/* Secondary button styles */ +.modal-actions .cancel-btn { + padding: 10px 20px; + font-size: 0.9rem; + border: 1px solid var(--brand-color); /* Use your app's brand color */ + border-radius: 5px; + cursor: pointer; + transition: background-color 0.3s ease; + background-color: transparent; + color: var(--brand-color); /* Use your app's brand color */ + flex: none; /* Do not grow or shrink */ +} + +.modal-actions .cancel-btn:hover { + background-color: #f2f2f2; /* Light grey for hover effect */ +} diff --git a/src/components/modal/HeaderMappingModal/index.js b/src/components/modal/HeaderMappingModal/index.js new file mode 100644 index 0000000..8096f9e --- /dev/null +++ b/src/components/modal/HeaderMappingModal/index.js @@ -0,0 +1,65 @@ +import React, { useState } from "react"; +import HeaderMapping from "../../HeaderMapping"; +import "./HeaderMappingModal.css"; +import { validateRequiredFields } from "../../../utils/commonFunctions"; +import MessageDisplay from "../../shared/MessageDisplay"; +import { ERROR_MESSAGES } from "../../../utils/constants/errorConstants"; +import { MODAL_STRINGS } from "../../../utils/constants/uiConstants"; +import Button from "../../shared/Button"; +import CancelButton from "../../shared/Button/CancelButton"; + +const HeaderMappingModal = ({ + fileHeaders, + onMappingComplete, + onClose, + resetFile, +}) => { + const [headerMappings, setHeaderMappings] = useState({}); + const [errorMessage, setErrorMessage] = useState(""); + + const handleMappingChange = (fileHeader, expectedHeaderKey) => { + setHeaderMappings((prevMappings) => ({ + ...prevMappings, + [fileHeader]: expectedHeaderKey, + })); + }; + + const handleCancel = () => { + resetFile(); // Resets the selected file + onClose(); // Closes the modal + }; + + const handleCompleteMapping = () => { + const allFieldsValid = validateRequiredFields(headerMappings); + if (allFieldsValid) { + onMappingComplete(headerMappings); + onClose(false); + } else { + setErrorMessage(ERROR_MESSAGES.ALL_FIELDS_REQUIRED); + } + }; + + return ( +
+
e.stopPropagation()} + > + + {errorMessage && } +
+ + +
+
+
+ ); +}; + +export default HeaderMappingModal; diff --git a/src/components/modal/PropertyInputModal/PropertyInputModal.css b/src/components/modal/PropertyInputModal/PropertyInputModal.css new file mode 100644 index 0000000..7fce596 --- /dev/null +++ b/src/components/modal/PropertyInputModal/PropertyInputModal.css @@ -0,0 +1,104 @@ +/* components/Modal/PropertyInputModal.css */ +.property-input-modal { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.5); /* Semi-transparent background */ + display: flex; + justify-content: center; + align-items: center; + z-index: 1000; /* Ensure it's above other content */ + cursor: pointer; +} + +.modal-content { + background: white; + padding: 30px; + border-radius: 8px; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); /* Subtle shadow for depth */ + width: 90%; /* Or a fixed width, depending on your design */ + max-width: 500px; /* Maximum width of the modal */ + position: relative; /* For absolute positioning of children */ + cursor: default; + margin: 20px; + min-height: 300px; +} + +/* Close button styles */ +.modal-content > button { + background: none; + border: none; + font-size: 1.5rem; + position: absolute; + top: 0rem; + right: 0.25rem; + cursor: pointer; +} + +.modal-content > button:hover { + background-color: #e1e1e1; /* Slightly darker on hover for button interaction */ +} + +/* Form styles */ +.modal-content form { + display: flex; + flex-direction: column; + padding: 20px 0; +} + +.modal-content form label { + font-weight: 600; + margin-top: 10px; +} + +.modal-content form input, +.modal-content form select { + padding: 10px; + margin-top: 5px; + border: 1px solid #ddd; + border-radius: 4px; + font-size: 1rem; +} + +.modal-content form select { + -webkit-appearance: none; /* For Safari */ + -moz-appearance: none; /* For Firefox */ + appearance: none; /* Standard syntax */ + /* Custom styles */ + background-color: #fff; + padding: 10px; + border: 1px solid #ddd; + border-radius: 4px; + position: relative; + background-repeat: no-repeat; + background-position: right 10px center; /* Position the background image */ + cursor: pointer; +} + +.modal-content form button[type="submit"] { + margin-top: 20px; + padding: 10px 15px; + background: var(--brand-color-light); + color: white; + border: none; + border-radius: 4px; + cursor: pointer; + transition: background-color 0.2s ease; +} + +.modal-content form button[type="submit"]:hover { + background-color: var(--brand-color-2); +} + +.modal-content form input, +.modal-content form select, +.modal-content form button[type="submit"] { + margin-bottom: 15px; /* Adds more space between form elements */ +} + +.modal-content form button[type="submit"]:disabled { + background-color: #ccc; /* Grayed out background */ + cursor: not-allowed; /* Cursor to indicate the button is disabled */ +} diff --git a/src/components/modal/PropertyInputModal/index.js b/src/components/modal/PropertyInputModal/index.js new file mode 100644 index 0000000..3c7d9fb --- /dev/null +++ b/src/components/modal/PropertyInputModal/index.js @@ -0,0 +1,106 @@ +// components/Modal/PropertyInputModal.js +import React, { useState, useRef, useEffect } from "react"; +import "./PropertyInputModal.css"; +import { MARKETS } from "../../../utils/constants/appConstants"; +import LoadingSpinner from "../../shared/LoadingSpinner"; +import MessageDisplay from "../../shared/MessageDisplay"; +import { fetchMockDataWithSimulation } from "../../../utils/mockData/mockService"; +import { ERROR_MESSAGES } from "../../../utils/constants/errorConstants"; +import { DOWNLOAD_MESSAGES } from "../../../utils/constants/uiConstants"; +import { MODAL_LABELS } from "../../../utils/constants/uiConstants"; +import Button from "../../shared/Button"; + +const PropertyInputModal = ({ closeModal }) => { + const [formData, setFormData] = useState({ + market: MARKETS[0], + }); + const [isLoading, setIsLoading] = useState(false); + const [message, setMessage] = useState(null); + const [isSubmitDisabled, setIsSubmitDisabled] = useState(false); + const firstInputRef = useRef(null); + + useEffect(() => { + if (firstInputRef.current) { + firstInputRef.current.focus(); + } + }, []); + + const handleChange = (e) => { + const { name, value } = e.target; + setFormData((prevFormData) => ({ + ...prevFormData, + [name]: value, + })); + setIsSubmitDisabled(false); + setMessage(null); + }; + + const successActions = () => { + setMessage(DOWNLOAD_MESSAGES.DOWNLOAD_COMPLETE); + setIsSubmitDisabled(true); + }; + + const errorActions = (error) => { + console.error(ERROR_MESSAGES.MOCK_DOWNLOAD_ERROR, error); + setMessage(ERROR_MESSAGES.DOWNLOAD_ERROR); + setIsSubmitDisabled(false); + }; + + const handleSubmit = async (e) => { + e.preventDefault(); + setIsLoading(true); + setMessage(null); + + try { + await fetchMockDataWithSimulation("mockData.txt"); + successActions(); + } catch (error) { + errorActions(error); + } finally { + setIsLoading(false); + } + }; + + return ( +
+
e.stopPropagation()}> + + {isLoading ? ( + + ) : ( + <> + {message && ( + + )} +
+ + + +
+ + )} +
+
+ ); +}; + +export default PropertyInputModal; diff --git a/src/components/modal/SkiptraceListModal/FileProcessing.js b/src/components/modal/SkiptraceListModal/FileProcessing.js new file mode 100644 index 0000000..56ea903 --- /dev/null +++ b/src/components/modal/SkiptraceListModal/FileProcessing.js @@ -0,0 +1,145 @@ +import React, { useState, useEffect } from "react"; +import PropTypes from "prop-types"; +import { + simulateFileProcessApiCall, + createMockFile, +} from "../../../utils/mockData/mockService"; +import "./SkiptraceListModal.css"; +import MessageDisplay from "../../shared/MessageDisplay"; +import { SKIPTRACE_MESSAGES } from "../../../utils/constants/uiConstants"; +import { MODAL_STRINGS } from "../../../utils/constants/uiConstants"; +import { ERROR_MESSAGES } from "../../../utils/constants/errorConstants"; +import { + triggerFileDownload, + extractHeadersFromFile, + transformFileContent, +} from "../../../utils/commonFunctions"; +import LoadingSpinner from "../../shared/LoadingSpinner"; +import HeaderMappingModal from "../HeaderMappingModal"; + +const FileProcessing = ({ + selectedFile, + resetSelectedFile, + messageInfo, + setMessageInfo, + processedFile, + setProcessedFile, + resetMessage, +}) => { + const [isProcessing, setIsProcessing] = useState(false); + const [showHeaderMappingModal, setShowHeaderMappingModal] = useState(false); + const [fileHeaders, setFileHeaders] = useState([]); + const [headerMappings, setHeaderMappings] = useState({}); + + // Process file with given mappings + const handleProcessing = async (mappings) => { + setIsProcessing(true); + resetMessage(); + + try { + const fileContent = selectedFile[0].content; // Assuming this is the text content of the file + const transformedData = transformFileContent(fileContent, mappings); + + const processedData = await simulateFileProcessApiCall( + [transformedData] // Ensure array format + ); + + const mockFile = await createMockFile(processedData); + triggerFileDownload(mockFile, mockFile.name); + + setProcessedFile(mockFile); + setMessageInfo({ + message: SKIPTRACE_MESSAGES.SKIPTRACE_COMPLETE, + type: "success", + }); + } catch (error) { + console.error(ERROR_MESSAGES.FILE_PROCESSING_ERROR, error); + setMessageInfo({ + message: ERROR_MESSAGES.SKIPTRACE_ERROR, + type: "error", + }); + } finally { + setIsProcessing(false); + } + }; + + // Initiate header mapping process + useEffect(() => { + const initiateHeaderMapping = async () => { + if (selectedFile && selectedFile.length > 0) { + try { + const headers = await extractHeadersFromFile(selectedFile[0]); + setFileHeaders(headers); + setShowHeaderMappingModal(true); + } catch (error) { + console.error("Error extracting headers from file:", error); + setMessageInfo({ + message: ERROR_MESSAGES.HEADER_EXTRACTION_ERROR, + type: "error", + }); + } + } + }; + + initiateHeaderMapping(); + }, [selectedFile, setMessageInfo]); + + return ( +
+
+ {selectedFile && selectedFile.length > 0 ? ( + <> + {MODAL_STRINGS.FILE_SELECTED}: + {selectedFile[0].name} + + ) : ( + MODAL_STRINGS.NO_FILE_SELECTED + )} +
+ + {isProcessing && } + + {((!isProcessing && + !processedFile && + selectedFile && + selectedFile.length > 0) || + messageInfo.type === "error") && ( + + )} + + {!isProcessing && messageInfo.message && ( + + )} + + {showHeaderMappingModal && ( + { + setHeaderMappings(headerMappings); + setShowHeaderMappingModal(false); + handleProcessing(headerMappings); + }} + onClose={() => setShowHeaderMappingModal(false)} + resetFile={resetSelectedFile} + /> + )} +
+ ); +}; + +FileProcessing.propTypes = { + selectedFile: PropTypes.array.isRequired, + messageInfo: PropTypes.object.isRequired, + setMessageInfo: PropTypes.func.isRequired, + processedFile: PropTypes.object, + setProcessedFile: PropTypes.func.isRequired, + resetMessage: PropTypes.func.isRequired, +}; + +export default FileProcessing; diff --git a/src/components/modal/SkiptraceListModal/FileUploadArea.js b/src/components/modal/SkiptraceListModal/FileUploadArea.js new file mode 100644 index 0000000..1ae3f8f --- /dev/null +++ b/src/components/modal/SkiptraceListModal/FileUploadArea.js @@ -0,0 +1,40 @@ +import React from "react"; + +const FileUploadArea = ({ + uploadPropertyIcon, + dragActive, + handleDrag, + handleDrop, + handleFileSelect, + fileInputRef, +}) => { + return ( +
+ Upload +

+ Drag and drop or +

+ +
+ ); +}; + +export default FileUploadArea; diff --git a/src/components/modal/SkiptraceListModal/SkiptraceListModal.css b/src/components/modal/SkiptraceListModal/SkiptraceListModal.css new file mode 100644 index 0000000..69da563 --- /dev/null +++ b/src/components/modal/SkiptraceListModal/SkiptraceListModal.css @@ -0,0 +1,172 @@ +/* SkiptraceListModal.css */ +.skiptrace-upload-modal { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + display: flex; + justify-content: center; + align-items: center; + z-index: 1000; +} + +.modal-content { + background: white; + padding: 2rem; + border-radius: 10px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); + width: 500px; + max-width: 90%; + position: relative; + display: flex; + flex-direction: column; +} + +.modal-header { + display: flex; + flex-direction: column; /* Stack flex children vertically */ + align-items: center; /* Center-align the flex children */ + text-align: center; /* Center-align the text */ + margin-bottom: 20px; /* Space below the subtitle */ +} + +.modal-header h2 { + margin: 0 0 10px 0; +} + +.upload-title { + margin: 0; + /* additional styles if needed */ +} + +.upload-subtitle { + margin: 0; + /* additional styles if needed */ +} + +.sub-text { + margin-bottom: 1rem; +} + +.upload-graphic { + width: 25%; + height: auto; + margin-top: 1rem; +} + +.upload-graphic, +.upload-instructions { + opacity: 1; /* Full opacity when dragging */ +} + +.drag-inactive { + opacity: 0.7; +} + +.upload-drag-container { + /* Container for the image for better control */ + display: flex; + border: 2px dashed #ccc; + align-items: center; + justify-content: center; /* Centers the image horizontally */ + margin-bottom: 1rem; + flex-direction: column; +} + +.upload-instructions { + text-align: center; + margin-bottom: 1rem; /* Space between instructions and button */ + color: #808080; /* This is a medium grey */ +} + +.upload-instructions.drag-inactive { + opacity: 0.7; /* Normal opacity when not dragging */ +} + +.upload-area { + border: 2px dashed #ccc; + padding: 1rem; + width: 100%; /* Adjust to fit content width */ + margin: 1rem 0; /* Space above and below the upload area */ + text-align: center; + position: relative; +} + +.upload-label { + font-size: 1rem; + color: var(--brand-color-light); + cursor: pointer; +} + +.browse-files { + font-weight: bold; + text-decoration: none; + color: var(--brand-color); + display: inline; +} + +.file-status-list { + list-style: none; + padding: 0; + margin-top: 20px; +} + +.file-status { + background: #f8f9fa; + margin-bottom: 10px; + padding: 10px; + border-radius: 5px; + display: flex; + justify-content: space-between; + align-items: center; +} + +.close-modal { + position: absolute; + top: 1rem; + right: 1rem; + border: none; + background: none; + cursor: pointer; + font-size: 1.5rem; + color: var(--brand-color); +} + +.file-info { + margin-top: 1rem; /* Spacing from the top */ + margin-bottom: 15px; + font-size: 0.9rem; /* Font size for file info */ + color: var(--brand-color); /* Color for the file info */ + font-weight: bold; +} + +.processing-button { + margin-bottom: 15px; + padding: 10px 20px; /* Padding for button */ + font-size: 1rem; /* Font size for button text */ + color: white; /* Text color */ + background-color: var(--brand-color-2); /* Background color from your theme */ + border: none; /* No border */ + border-radius: 5px; /* Rounded corners */ + cursor: pointer; /* Cursor to pointer to indicate it's clickable */ + outline: none; /* Remove outline to make it cleaner */ + transition: background-color 0.3s ease; /* Transition for a smooth color change */ +} + +.button-container { + display: flex; + justify-content: center; /* Center horizontally */ + align-items: center; /* Center vertically */ + height: 100%; /* Set to the desired height */ +} + +.processing-button:hover { + background-color: var(--brand-color-light); /* Slightly darker on hover */ +} + +.file-name { + color: var(--brand-color-light); + font-weight: bold; +} diff --git a/src/components/modal/SkiptraceListModal/index.js b/src/components/modal/SkiptraceListModal/index.js new file mode 100644 index 0000000..19dae24 --- /dev/null +++ b/src/components/modal/SkiptraceListModal/index.js @@ -0,0 +1,102 @@ +import React, { useState, useRef } from "react"; +import "./SkiptraceListModal.css"; +import uploadPropertyIcon from "../../../assets/images/propertyAnalysis.png"; // Ensure the path is correct +import FileUploadArea from "./FileUploadArea"; +import FileProcessing from "./FileProcessing"; +import { readFileContent } from "../../../utils/commonFunctions"; +import { MODAL_STRINGS } from "../../../utils/constants/uiConstants"; +import { ERROR_MESSAGES } from "../../../utils/constants/errorConstants"; +import Button from "../../shared/Button"; + +const SkiptraceListModal = ({ closeModal }) => { + const [selectedFile, setSelectedFile] = useState([]); + const [dragActive, setDragActive] = useState(false); + const [messageInfo, setMessageInfo] = useState({ message: "", type: "" }); + const [processedFile, setProcessedFile] = useState(null); + const fileInputRef = useRef(null); + + const resetMessage = () => { + setMessageInfo({ message: "", type: "" }); + setProcessedFile(null); + }; + + const resetSelectedFile = () => { + setSelectedFile([]); + }; + + const processFiles = async (files) => { + const filesWithContent = []; + for (const file of files) { + try { + const fileWithContent = await readFileContent(file); + filesWithContent.push(fileWithContent); + } catch (error) { + console.error(ERROR_MESSAGES.FILE_READ_ERROR, error); + setMessageInfo({ message: MODAL_STRINGS.UPLOAD_ERROR, type: "error" }); + } + } + setSelectedFile(filesWithContent); + resetMessage(); + }; + + const handleDrag = (e) => { + e.preventDefault(); + e.stopPropagation(); + if (e.type === "dragenter" || e.type === "dragover") { + setDragActive(true); + } else if (e.type === "dragleave") { + setDragActive(false); + } + }; + + const handleDrop = async (e) => { + e.preventDefault(); + e.stopPropagation(); + setDragActive(false); + await processFiles([...e.dataTransfer.files]); + }; + + const handleFileSelect = async (e) => { + await processFiles([...e.target.files]); + }; + + return ( +
+
e.stopPropagation()}> +
+

{MODAL_STRINGS.UPLOAD_TITLE}

+

{MODAL_STRINGS.UPLOAD_SUBTITLE}

+
+ +
+ +
+ {selectedFile.length > 0 && ( + + )} + +
+
+ ); +}; + +export default SkiptraceListModal; diff --git a/src/components/shared/Button/Button.css b/src/components/shared/Button/Button.css new file mode 100644 index 0000000..bc5aff1 --- /dev/null +++ b/src/components/shared/Button/Button.css @@ -0,0 +1,34 @@ +/* Apply this class to both buttons */ +.common-button-style { + padding: 10px 20px; /* Adjust padding to control height */ + font-size: 0.9rem; /* Keep font size consistent */ + border-radius: 5px; /* Match border-radius */ + cursor: pointer; + transition: background-color 0.3s ease; + display: inline-block; /* Use inline-block for better control */ + line-height: 1.5; /* Adjust line height as needed */ +} + +/* Specific to the 'Complete Mapping' button */ +.custom-btn { + border: none; + color: white; + background-color: var(--brand-color); /* Use your app's brand color */ +} + +.custom-btn:hover { + background-color: var( + --brand-color-light + ); /* Lighter brand color for hover effect */ +} + +/* Specific to the 'Cancel' button */ +.cancel-btn { + border: 1px solid var(--brand-color); /* Make sure border width is same as 'Complete Mapping' button if it has one */ + color: var(--brand-color); /* Use your app's brand color */ + background-color: transparent; +} + +.cancel-btn:hover { + background-color: #f2f2f2; /* Light grey for hover effect */ +} diff --git a/src/components/shared/Button/CancelButton.js b/src/components/shared/Button/CancelButton.js new file mode 100644 index 0000000..c545545 --- /dev/null +++ b/src/components/shared/Button/CancelButton.js @@ -0,0 +1,15 @@ +import React from "react"; +import "./Button.css"; // Assuming your styles are in this file + +const CancelButton = ({ onClose }) => { + return ( + + ); +}; + +export default CancelButton; diff --git a/src/components/shared/Button/index.js b/src/components/shared/Button/index.js new file mode 100644 index 0000000..89d3984 --- /dev/null +++ b/src/components/shared/Button/index.js @@ -0,0 +1,18 @@ +// src/components/Button/Button.js + +import React from "react"; +import "./Button.css"; + +const Button = ({ children, onClick, className, ...props }) => { + return ( + + ); +}; + +export default Button; diff --git a/src/components/shared/ChartToolTip/ChartToolTip.css b/src/components/shared/ChartToolTip/ChartToolTip.css new file mode 100644 index 0000000..7fb52e5 --- /dev/null +++ b/src/components/shared/ChartToolTip/ChartToolTip.css @@ -0,0 +1,15 @@ +.chart-tooltip { + background: rgba(255, 255, 255, 0.9); + border: 1px solid #cccccc; + padding: 10px; + border-radius: 5px; +} + +.chart-tooltip .label { + font-weight: bold; + color: var(--brand-color); +} + +.chart-tooltip .intro { + margin: 0; +} diff --git a/src/components/shared/ChartToolTip/index.js b/src/components/shared/ChartToolTip/index.js new file mode 100644 index 0000000..872d804 --- /dev/null +++ b/src/components/shared/ChartToolTip/index.js @@ -0,0 +1,26 @@ +import React from "react"; +import { camelCaseToTitleCase } from "../../../utils/commonFunctions"; +import "./ChartToolTip.css"; + +const ChartTooltip = ({ active, payload, label, colors }) => { + if (active && payload && payload.length) { + return ( +
+

{label || ""}

+ {payload.map((entry, index) => ( +

+ {`${camelCaseToTitleCase(entry.name)}: ${entry.value}`} +

+ ))} +
+ ); + } + + return null; +}; + +export default ChartTooltip; diff --git a/src/components/shared/FilterToggleButton/FilterToggleButton.css b/src/components/shared/FilterToggleButton/FilterToggleButton.css new file mode 100644 index 0000000..e69de29 diff --git a/src/components/shared/FilterToggleButton/index.js b/src/components/shared/FilterToggleButton/index.js new file mode 100644 index 0000000..9ba007f --- /dev/null +++ b/src/components/shared/FilterToggleButton/index.js @@ -0,0 +1,17 @@ +import React from "react"; +import ToggleButton from "@mui/material/ToggleButton"; +import "./FilterToggleButton.css"; // Assuming you have a CSS file for this component + +const FilterToggleButton = ({ selected, onChange, Icon }) => { + return ( + + {Icon && } + + ); +}; + +export default FilterToggleButton; diff --git a/src/components/shared/LoadingSpinner/LoadingSpinner.css b/src/components/shared/LoadingSpinner/LoadingSpinner.css new file mode 100644 index 0000000..c37ff66 --- /dev/null +++ b/src/components/shared/LoadingSpinner/LoadingSpinner.css @@ -0,0 +1,12 @@ +.spinner-container { + display: flex; + justify-content: center; + align-items: center; + height: 100vh; /* You can adjust the height as needed */ + width: 100%; + position: fixed; /* or 'absolute' depending on use case */ + top: 0; + left: 0; + background-color: rgba(255, 255, 255, 0.8); /* Light overlay */ + z-index: 1000; /* Ensure it's above other content */ +} diff --git a/src/components/shared/LoadingSpinner/index.js b/src/components/shared/LoadingSpinner/index.js new file mode 100644 index 0000000..5d91f89 --- /dev/null +++ b/src/components/shared/LoadingSpinner/index.js @@ -0,0 +1,13 @@ +import React from "react"; +import ClipLoader from "react-spinners/ClipLoader"; +import "./LoadingSpinner.css"; // Assuming you have a separate CSS file for the spinner + +const LoadingSpinner = () => { + return ( +
+ +
+ ); +}; + +export default LoadingSpinner; diff --git a/src/components/shared/MessageDisplay/MessageDisplay.css b/src/components/shared/MessageDisplay/MessageDisplay.css new file mode 100644 index 0000000..d5b1fde --- /dev/null +++ b/src/components/shared/MessageDisplay/MessageDisplay.css @@ -0,0 +1,17 @@ +.modal-message { + padding: 10px; + margin-bottom: 10px; + border-radius: 4px; + text-align: center; + /* Other styling as needed */ +} + +.modal-message.success { + color: #28a745; /* Success color */ + background-color: #dff0d8; /* Light green background */ +} + +.modal-message.error { + color: #dc3545; /* Error color */ + background-color: #f8d7da; /* Light red background */ +} diff --git a/src/components/shared/MessageDisplay/index.js b/src/components/shared/MessageDisplay/index.js new file mode 100644 index 0000000..df2c2ea --- /dev/null +++ b/src/components/shared/MessageDisplay/index.js @@ -0,0 +1,9 @@ +// components/MessageDisplay/MessageDisplay.js +import React from "react"; +import "./MessageDisplay.css"; // Make sure to create and style this CSS file accordingly + +const MessageDisplay = ({ message, type }) => { + return
{message}
; +}; + +export default MessageDisplay; diff --git a/src/components/shared/Pagination/Pagination.css b/src/components/shared/Pagination/Pagination.css new file mode 100644 index 0000000..a54443c --- /dev/null +++ b/src/components/shared/Pagination/Pagination.css @@ -0,0 +1,76 @@ +.pagination-wrapper { + display: flex; + flex-direction: column; + align-items: center; + margin-top: 20px; + margin-bottom: 20px; +} + +.pagination-info { + font-size: 0.9rem; + color: #666; + margin-top: 10px; + text-align: center; +} + +.pagination-container { + display: flex; + justify-content: center; + align-items: center; +} + +.pagination { + display: flex; + list-style: none; + padding: 0; +} + +.pagination li { + margin: 0 5px; +} + +.pagination li button { + background: #ffffff; + border: 1px solid #dddddd; + color: var(--brand-color-light); + padding: 8px 16px; + transition: all 0.3s; + border-radius: 20px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + cursor: pointer; +} + +.pagination li.active button, +.pagination li button:hover:not(:disabled) { + color: #ffffff; + background-color: var(--brand-color-light); + border-color: var(--brand-color-light); +} + +.pagination .prev-next button { + font-weight: bold; +} + +.pagination li button:hover:not(:disabled) { + background-color: #e9ecef; + border-color: #dee2e6; +} + +.pagination .active button { + background-color: #007bff; + border-color: #007bff; + color: #fff; +} + +.pagination .disabled button { + color: #6c757d; + background-color: #e9ecef; + border-color: #dee2e6; + cursor: not-allowed; +} + +.pagination button { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} diff --git a/src/components/shared/Pagination/index.js b/src/components/shared/Pagination/index.js new file mode 100644 index 0000000..8a288bd --- /dev/null +++ b/src/components/shared/Pagination/index.js @@ -0,0 +1,76 @@ +import React from "react"; +import "./Pagination.css"; +import { + ELLIPSIS, + NUM_DISPLAY_PAGES, +} from "../../../utils/constants/uiConstants"; +import { getDisplayedPages } from "../../../utils/commonFunctions"; + +const Pagination = ({ + currentPage, + setPage, + totalPages, + leadsPerPage, + totalLeads, +}) => { + const displayedPages = getDisplayedPages( + totalPages, + currentPage, + NUM_DISPLAY_PAGES, + ELLIPSIS + ); + + const startItem = (currentPage - 1) * leadsPerPage + 1; + const endItem = Math.min(startItem + leadsPerPage - 1, totalLeads); + + return ( +
+ +
+ Showing page {currentPage} of {totalPages} - {startItem} to {endItem} of{" "} + {totalLeads} leads +
+
+ ); +}; + +export default Pagination; diff --git a/src/components/shared/SearchBar/SearchBar.css b/src/components/shared/SearchBar/SearchBar.css new file mode 100644 index 0000000..c3b677b --- /dev/null +++ b/src/components/shared/SearchBar/SearchBar.css @@ -0,0 +1,36 @@ +/* SearchBar.css */ + +.search-bar { + padding: 8px 10px; /* Consistent padding with select elements */ + border: 1px solid #ccd6f6; /* Soft border color similar to select */ + border-radius: 5px; /* Consistent border-radius */ + outline: none; /* Remove default focus outline */ + width: 100%; /* Full width to fill its container */ + transition: border-color 0.3s ease; /* Smooth transition for border color */ + font-size: 0.9rem; /* Font size consistent with other inputs */ + color: #333; /* Text color */ + background-color: #fff; /* Background color */ +} + +.search-bar::placeholder { + color: #aaa; /* Placeholder text color */ +} + +.search-bar:focus { + border-color: var(--brand-color); /* Focus state border color */ + box-shadow: 0 0 0 2px rgba(136, 146, 176, 0.5); /* Subtle focus shadow */ +} + +/* Adjustments for the search bar inside the filter bar */ +.filter-bar .search-bar { + margin-right: 10px; /* Space between search bar and next filter control */ + flex-grow: 1; /* Allow the search bar to grow as needed */ + cursor: text; +} + +@media (max-width: 768px) { + .filter-bar .search-bar { + margin-right: 0; /* Adjust margin for smaller screens */ + margin-bottom: 10px; /* Space below on smaller screens */ + } +} diff --git a/src/components/shared/SearchBar/index.js b/src/components/shared/SearchBar/index.js new file mode 100644 index 0000000..ddf9134 --- /dev/null +++ b/src/components/shared/SearchBar/index.js @@ -0,0 +1,27 @@ +import React, { useState, useEffect } from "react"; +import "./SearchBar.css"; + +const SearchBar = ({ onSearch, debounceTime = 300, placeholder }) => { + const [searchTerm, setSearchTerm] = useState(""); + + useEffect(() => { + const handler = setTimeout(() => { + onSearch(searchTerm); + }, debounceTime); + + return () => { + clearTimeout(handler); + }; + }, [searchTerm, debounceTime, onSearch]); + + return ( + setSearchTerm(e.target.value)} + /> + ); +}; + +export default SearchBar; diff --git a/src/components/shared/SmallNotification/SmallNotification.css b/src/components/shared/SmallNotification/SmallNotification.css new file mode 100644 index 0000000..94fdf30 --- /dev/null +++ b/src/components/shared/SmallNotification/SmallNotification.css @@ -0,0 +1,21 @@ +.small-notification { + position: fixed; + bottom: 75%; + left: 50%; + transform: translateX(-50%); + background-color: #333; /* Dark background for visibility */ + color: #fff; /* White text for contrast */ + padding: 8px 16px; + border-radius: 4px; + box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.2); + font-size: 0.9rem; + z-index: 9999; /* High z-index to ensure it appears above other content */ + opacity: 0; + visibility: hidden; + transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out; +} + +.small-notification-show { + opacity: 1; + visibility: visible; +} diff --git a/src/components/shared/SmallNotification/index.js b/src/components/shared/SmallNotification/index.js new file mode 100644 index 0000000..ee34783 --- /dev/null +++ b/src/components/shared/SmallNotification/index.js @@ -0,0 +1,18 @@ +import React from "react"; +import ReactDOM from "react-dom"; +import "./SmallNotification.css"; // Make sure to import the correct CSS file + +const smallNotificationRoot = document.getElementById( + "small-notification-root" +); + +const SmallNotification = ({ message, show }) => { + if (!message || !show) return null; + + return ReactDOM.createPortal( +
{message}
, + smallNotificationRoot + ); +}; + +export default SmallNotification; diff --git a/src/components/shared/Table/CommonTable.css b/src/components/shared/Table/CommonTable.css new file mode 100644 index 0000000..e69de29 diff --git a/src/components/shared/Table/CommonTable.js b/src/components/shared/Table/CommonTable.js new file mode 100644 index 0000000..e69de29 diff --git a/src/components/shared/dropdowns/CustomDropdown/CustomDropdown.css b/src/components/shared/dropdowns/CustomDropdown/CustomDropdown.css new file mode 100644 index 0000000..503de9b --- /dev/null +++ b/src/components/shared/dropdowns/CustomDropdown/CustomDropdown.css @@ -0,0 +1,53 @@ +/* src/components/CustomDropdown/CustomDropdown.css */ +.custom-dropdown { + position: relative; + display: flex; + align-items: center; + width: 60%; +} + +.custom-dropdown select { + width: 100%; + padding: 8px; + border: 1px solid #ccc; + border-radius: 5px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + padding-right: 2em; /* Make room for the icon */ + transition: border-color 0.3s ease; +} + +.dropdown-icon { + position: absolute; + right: 12px; + top: 50%; + transform: translateY(-50%); + color: var(--brand-color); + transition: color 0.3s ease; + pointer-events: none; /* This ensures clicks go through the icon to the select element */ +} + +.custom-dropdown:hover select { + border-color: var(--brand-color-light); /* Highlight color on hover */ +} + +.custom-dropdown:hover .dropdown-icon { + color: var(--brand-color-light); /* Highlight color on hover */ +} + +.custom-dropdown select:focus { + border-color: #007bff; /* Your highlight color */ + outline: none; /* Removes the default outline */ + box-shadow: 0 0 0 1px #007bff; /* Mimics a focused style */ +} + +/* Placeholder styles */ +.custom-dropdown select::placeholder { + color: #aaa; +} + +/* Single value styles */ +.custom-dropdown .select__single-value { + color: #333; +} diff --git a/src/components/shared/dropdowns/CustomDropdown/index.js b/src/components/shared/dropdowns/CustomDropdown/index.js new file mode 100644 index 0000000..72c263b --- /dev/null +++ b/src/components/shared/dropdowns/CustomDropdown/index.js @@ -0,0 +1,29 @@ +// src/components/CustomDropdown/CustomDropdown.js + +import React from "react"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faSquareCaretDown } from "@fortawesome/free-solid-svg-icons"; +import "./CustomDropdown.css"; + +const CustomDropdown = ({ options, value, onChange, placeholder, name }) => { + return ( +
+ + +
+ ); +}; + +export default CustomDropdown; diff --git a/src/components/shared/dropdowns/FilterBar/FilterBar.css b/src/components/shared/dropdowns/FilterBar/FilterBar.css new file mode 100644 index 0000000..b06d627 --- /dev/null +++ b/src/components/shared/dropdowns/FilterBar/FilterBar.css @@ -0,0 +1,157 @@ +/* FilterBar.css */ + +.filter-bar { + padding: 10px; + display: flex; + gap: 10px; /* Space between filter controls */ + background-color: var(--background-color); + overflow: hidden; + border-radius: 10px; + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); + width: 100%; /* Use full width */ + max-width: 82%; + margin: 0 auto 20px; +} + +.filter-control { + display: flex; + align-items: center; +} + +.filter-control, +.filter-bar .search-bar { + flex-grow: 1; + flex-basis: auto; +} +.filter-bar .offer-toggle .MuiToggleButton-root { + margin-left: auto; +} + +.filter-control label { + font-size: 0.9rem; + margin-right: 10px; /* Adjust the right margin to add space between the label and the select */ + background-color: #f0f0f0; /* Restore the label background color */ + padding: 6px 10px; /* Padding inside the label */ + border: 1px solid #ccc; /* Restore the label border */ + border-radius: 5px; /* Border radius for the label */ + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); /* Restore the label shadow */ + color: #333; /* Text color for the label */ +} + +.filter-control select { + padding: 8px 10px; /* Adjust padding for a cleaner look */ + border: 1px solid #ccd6f6; /* Soften the border color */ + border-radius: 5px; /* Border radius for the select */ + cursor: pointer; + outline: none; + -webkit-appearance: none; /* Remove default styling */ + -moz-appearance: none; /* Remove default styling */ + appearance: none; + background-color: #fff; /* Background color for the select */ + transition: all 0.3s ease; /* Smooth transition for interaction states */ + font-size: 0.9rem; /* Adjust font size for readability */ + color: #333; /* Text color */ + text-align-last: center; /* This centers the text in the dropdown */ + text-align: center; /* This attempts to center the option text, but may not work in all browsers */ + -moz-text-align-last: center; /* This is for Firefox specifically */ +} + +.filter-control .custom-select-wrapper { + position: relative; + display: flex; + align-items: center; +} + +.filter-control select { + padding: 8px 30px 8px 10px; /* Padding to make room for the icon */ + border: 1px solid #ccc; /* Border for the select */ + border-radius: 5px; /* Border radius for the select */ + cursor: pointer; + outline: none; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; /* Background color for the select */ + transition: border-color 0.3s ease; +} + +.filterbar-dropdown-icon { + position: absolute; + right: 15px; + top: 33%; + transform: translateY(-50%); + color: #555; + pointer-events: none; + transition: color 0.3s ease; +} + +.filter-control:hover select { + border-color: #8892b0; /* Darker border on hover for emphasis */ +} + +.filter-control:hover .dropdown-icon { + color: #8892b0; /* Icon color changes on hover */ +} + +.filter-control select:focus { + border-color: #8892b0; /* Focus state border color */ + box-shadow: 0 0 0 2px rgba(136, 146, 176, 0.5); /* Subtle focus shadow */ +} + +.filter-control .MuiToggleButton-root { + height: 38px; /* Adjust this value to match your select elements */ + margin: 0; /* Adjust margin as necessary */ + padding: 6px 12px; /* Adjust padding to center the content */ + display: flex; /* Use flexbox to center the content */ + justify-content: center; /* Center content horizontally */ + align-items: center; /* Center content vertically */ + border-radius: 10px; /* Rounded corners */ + transition: background-color 0.3s, transform 0.3s; /* Smooth transitions for hover and click */ +} + +/* When the toggle button is off, use a more muted color */ +.filter-control .MuiToggleButton-root { + background-color: var(--brand-color-2); /* Off state color */ + color: #757575; /* Muted icon color for off state */ +} + +/* When the toggle button is on, use the primary brand color */ +.filter-control .MuiToggleButton-root.Mui-selected { + background-color: var(--brand-color-light); /* On state color */ + color: #fff; /* White icon color for on state */ +} + +/* Style for the icon inside the toggle button */ +.filter-control .MuiToggleButton-root .MuiSvgIcon-root { + color: #fff; /* Color of the icon */ +} + +.filter-control .MuiToggleButton-root:hover { + background-color: rgba( + 213, + 181, + 163, + 0.7 + ); /* Slightly darker for hover on off state */ +} + +.filter-control .MuiToggleButton-root.Mui-selected:hover { + background-color: rgba( + 30, + 58, + 95, + 0.6 + ); /* Lighten the on state color on hover */ +} + +@media (max-width: 768px) { + .filter-bar { + flex-direction: column; /* Stack filters on smaller screens */ + } + .filter-control { + width: 100%; /* Full width for mobile */ + } + .filter-control .MuiToggleButton-root { + margin-left: 0; /* Adjust margin for smaller screens */ + } +} diff --git a/src/components/shared/dropdowns/FilterBar/index.js b/src/components/shared/dropdowns/FilterBar/index.js new file mode 100644 index 0000000..27b0ead --- /dev/null +++ b/src/components/shared/dropdowns/FilterBar/index.js @@ -0,0 +1,77 @@ +import React from "react"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faCircleChevronDown } from "@fortawesome/free-solid-svg-icons"; +import ToggleButton from "@mui/material/ToggleButton"; +import Filter7Icon from "@mui/icons-material/Filter7"; +import { PsychologyAltOutlined } from "@mui/icons-material"; +import SearchBar from "../../SearchBar"; +import "./FilterBar.css"; + +const FilterBar = ({ + filters, + onFilterChange, + hasToggle, + onTogglePriorityLeads, + isPriorityFilterOn, + onToggleMAOFilter, + isMAOFilterOn, + showSearchBar, + onSearch, + searchPlaceholder, +}) => { + return ( +
+
+ {hasToggle && ( + + + + )} +
+ {filters.map((filter) => ( +
+ +
+ + +
+
+ ))} +
+ {hasToggle && ( + + + + )} +
+ {showSearchBar && ( + + )} +
+ ); +}; + +export default FilterBar; diff --git a/src/components/shared/modal/ErrorModal/ErrorModal.css b/src/components/shared/modal/ErrorModal/ErrorModal.css new file mode 100644 index 0000000..793a74f --- /dev/null +++ b/src/components/shared/modal/ErrorModal/ErrorModal.css @@ -0,0 +1,95 @@ +.error-modal-backdrop { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + background-color: rgba(0, 0, 0, 0.5); + z-index: 1000; +} + +.error-modal-content { + background: white; + padding: 20px; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); + border-radius: 8px; + font-family: var(--font-family); +} + +.error-modal-title { + margin: 0; + color: #d32f2f; + font-size: 1.5rem; + font-weight: bold; +} + +.error-modal-close { + background: none; + border: none; + cursor: pointer; + font-size: 1.5rem; + color: #757575; +} + +.error-modal-header { + margin-bottom: 20px; + display: flex; + justify-content: space-between; + align-items: center; +} + +.modal-message.error { + /* Styles for error message */ + color: #d32f2f; + margin: 1rem 0; +} + +.error-modal-body { + color: #333; /* A softer color for the message text */ + padding: 20px; +} + +.error-modal-footer > button { + background-color: #e8a0a6; /* A soft shade of red */ + color: #721c24; /* A color that complements the soft red */ + border: 1px solid #f5c6cb; /* A soft border color */ + padding: 10px 20px; + border-radius: 4px; + cursor: pointer; + font-size: 1rem; + font-weight: bold; + margin-top: 1rem; + /* Transition for a smooth color change on hover */ + transition: background-color 0.3s ease-in-out, color 0.3s ease-in-out; +} + +.close-modal { + background: none; + border: none; + cursor: pointer; + font-size: 1.5rem; + /* Styles to ensure the button doesn't have default browser styles */ +} + +.error-modal-btn { + background-color: #dc3545; + color: white; + border: none; + padding: 10px 20px; + border-radius: 4px; + cursor: pointer; + font-size: 1rem; + font-weight: bold; + margin-top: 1rem; + width: 100%; + box-sizing: border-box; +} + +@media (max-width: 600px) { + .error-modal-content { + width: 90%; + } +} diff --git a/src/components/shared/modal/ErrorModal/index.js b/src/components/shared/modal/ErrorModal/index.js new file mode 100644 index 0000000..4289f45 --- /dev/null +++ b/src/components/shared/modal/ErrorModal/index.js @@ -0,0 +1,31 @@ +import React from "react"; +import "./ErrorModal.css"; +import MessageDisplay from "../../MessageDisplay"; + +const ErrorModal = ({ message, onClose }) => { + const handleBackdropClick = (e) => { + onClose(); + }; + + const handleModalContentClick = (e) => { + e.stopPropagation(); + }; + + return ( +
+
+ +
+ +
+
+
+ ); +}; + +export default ErrorModal; diff --git a/src/components/tableCells/AnalyzeOfferCell/AnalyzeOfferCell.css b/src/components/tableCells/AnalyzeOfferCell/AnalyzeOfferCell.css new file mode 100644 index 0000000..2ed2fa7 --- /dev/null +++ b/src/components/tableCells/AnalyzeOfferCell/AnalyzeOfferCell.css @@ -0,0 +1,35 @@ +.analyze-offer-cell { + text-align: center; + padding: 12px 15px; + vertical-align: middle; + border-bottom: 1px solid var(--border-color); + position: relative; + cursor: pointer; +} + +.analyze-offer-cell .action-icon { + cursor: pointer; + color: var(--brand-color); /* Adjust the color as per your theme */ + font-size: 1.5rem; +} + +.analyze-offer-cell .hover-details { + display: none; + position: absolute; + background-color: rgba(0, 0, 0, 0.8); + color: #fff; + border: 1px solid #ddd; + border-radius: 8px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); + z-index: 1000; + left: -25%; + top: 8%; + transform: translateX(-50%); + padding: 10px; + white-space: nowrap; + font-size: 0.9rem; +} + +.analyze-offer-cell:hover .hover-details { + display: block; +} diff --git a/src/components/tableCells/AnalyzeOfferCell/index.js b/src/components/tableCells/AnalyzeOfferCell/index.js new file mode 100644 index 0000000..f3d3aac --- /dev/null +++ b/src/components/tableCells/AnalyzeOfferCell/index.js @@ -0,0 +1,33 @@ +import React, { useState } from "react"; +import Psychology from "@mui/icons-material/Psychology"; +import "./AnalyzeOfferCell.css"; // Make sure to create and import the corresponding CSS file + +const AnalyzeOfferCell = ({ leadId, onAnalyzeOffer }) => { + const [isHovered, setIsHovered] = useState(false); + + const handleIconClick = () => { + if (onAnalyzeOffer) { + onAnalyzeOffer(leadId); + } + }; + + return ( + setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)} + > + + {isHovered && ( +
+ Tooltip: +
+ Review detailed calculations +
and offer analysis for this lead. +
+ )} + + ); +}; + +export default AnalyzeOfferCell; diff --git a/src/components/tableCells/ContactDetailsCell/ContactDetailsCell.css b/src/components/tableCells/ContactDetailsCell/ContactDetailsCell.css new file mode 100644 index 0000000..309e0fc --- /dev/null +++ b/src/components/tableCells/ContactDetailsCell/ContactDetailsCell.css @@ -0,0 +1,37 @@ +.contact-details-cell { + position: relative; + cursor: pointer; + font-size: 0.9rem; /* Smaller font size for the content */ + color: var(--text-color); +} + +.contact-details-cell div { + margin-bottom: 4px; /* Space between lines of data */ +} + +.contact-details-cell .hover-details { + display: none; + position: absolute; + background-color: rgba(0, 0, 0, 0.7); + color: #fff; + border: 1px solid #ddd; + border-radius: 8px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); + z-index: 1000; /* High z-index to ensure it's on top */ + left: -50%; /* Start from the middle of the cell */ + top: 15%; + padding: 10px; + white-space: nowrap; + font-size: 0.9rem; + margin-bottom: 5px; /* Add some space between the cell and the tooltip */ +} + +.contact-details-cell:hover .hover-details { + display: block; +} + +.contact-details-cell .phone-number, +.contact-details-cell .email { + color: var(--brand-color); + font-weight: bold; +} diff --git a/src/components/tableCells/ContactDetailsCell/index.js b/src/components/tableCells/ContactDetailsCell/index.js new file mode 100644 index 0000000..ace6623 --- /dev/null +++ b/src/components/tableCells/ContactDetailsCell/index.js @@ -0,0 +1,72 @@ +import React, { useState } from "react"; +import { + formatPhoneNumber, + truncateEmail, +} from "../../../utils/commonFunctions"; +import "./ContactDetailsCell.css"; +import SmallNotification from "../../shared/SmallNotification"; +import { useSmallNotification } from "../../../hooks/useSmallNotification"; + +const ContactDetailsCell = ({ lead }) => { + const [hovered, setHovered] = useState({ type: "", id: null }); + const { smallNotification, showSmallNotification } = useSmallNotification(); + + const handleCopy = (text, type) => { + navigator.clipboard.writeText(text).then( + () => { + // Show notification with the type of content copied + showSmallNotification(`Copied ${type}!`); + }, + (err) => { + // Show an error if the copy failed + console.error("Failed to copy:", err); + showSmallNotification("Failed to copy. Please try again."); + } + ); + }; + + const handleHover = (type, id) => { + setHovered({ type, id }); + }; + + const handleHoverLeave = () => { + setHovered({ type: "", id: null }); + }; + + return ( + <> + handleHover("contact", lead.id)} + onMouseLeave={handleHoverLeave} + onClick={() => { + const contentToCopy = + hovered.type === "phone" + ? formatPhoneNumber(lead.phone) + : lead.email; + const type = hovered.type === "phone" ? "phone number" : "email"; + handleCopy(contentToCopy, type); + }} + > +
{formatPhoneNumber(lead.phone)}
+
{truncateEmail(lead.email)}
+ {hovered.id === lead.id && ( +
+
handleHover("phone", lead.id)}> + {formatPhoneNumber(lead.phone)} +
+
handleHover("email", lead.id)}> + {lead.email} +
+
+ )} + + + + ); +}; + +export default ContactDetailsCell; diff --git a/src/components/tableCells/FollowUpCell/FollowUpCell.css b/src/components/tableCells/FollowUpCell/FollowUpCell.css new file mode 100644 index 0000000..fcebba6 --- /dev/null +++ b/src/components/tableCells/FollowUpCell/FollowUpCell.css @@ -0,0 +1,17 @@ +.follow-up-cell { + text-align: left; + padding: 12px 15px; + font-size: 0.8rem; + vertical-align: middle; + border-bottom: 1px solid var(--border-color); +} + +.follow-up-cell .static-text { + font-weight: bold; + color: black; +} + +.follow-up-cell .date-span { + white-space: nowrap; + color: var(--data-text-color); +} diff --git a/src/components/tableCells/FollowUpCell/index.js b/src/components/tableCells/FollowUpCell/index.js new file mode 100644 index 0000000..f590f5e --- /dev/null +++ b/src/components/tableCells/FollowUpCell/index.js @@ -0,0 +1,20 @@ +import React from "react"; +import { formatDate } from "../../../utils/commonFunctions"; +import "./FollowUpCell.css"; // Make sure to create and import the corresponding CSS file + +const FollowUpCell = ({ lead }) => { + return ( + +
+ Last Contact: + {formatDate(lead.lastContactDate)} +
+
+ Next Follow Up: + {formatDate(lead.nextFollowUpDate)} +
+ + ); +}; + +export default FollowUpCell; diff --git a/src/components/tableCells/MarketCell/MarketCell.css b/src/components/tableCells/MarketCell/MarketCell.css new file mode 100644 index 0000000..c2b1033 --- /dev/null +++ b/src/components/tableCells/MarketCell/MarketCell.css @@ -0,0 +1,29 @@ +.market-cell { + /* Add your styles here */ + padding: 8px; + text-align: left; + font-size: 0.9rem; + color: #333; + text-align: center; +} + +.market-cell .address { + /* Styles specifically for the address part */ + margin-bottom: 4px; /* Space between address and market info */ +} + +.market-cell .market-info { + justify-content: center; /* Horizontally centers the flex items */ + display: flex; +} + +.market-cell .static-text { + /* Styles for the label part of the market info */ + font-weight: bold; + margin-right: 5px; +} + +.market-cell .data-span { + font-weight: normal; + color: var(--brand-color); +} diff --git a/src/components/tableCells/MarketCell/index.js b/src/components/tableCells/MarketCell/index.js new file mode 100644 index 0000000..deb45b8 --- /dev/null +++ b/src/components/tableCells/MarketCell/index.js @@ -0,0 +1,18 @@ +import React from "react"; +import "./MarketCell.css"; // Ensure you have the corresponding CSS file + +const MarketCell = ({ address, market }) => { + return ( + +
{address}
+ {market && ( +
+ Market: + {market} +
+ )} + + ); +}; + +export default MarketCell; diff --git a/src/components/tableCells/OffersSentCell/OffersSentCell.css b/src/components/tableCells/OffersSentCell/OffersSentCell.css new file mode 100644 index 0000000..f389d5e --- /dev/null +++ b/src/components/tableCells/OffersSentCell/OffersSentCell.css @@ -0,0 +1,18 @@ +.offers-sent-cell { + text-align: left; + padding: 12px 15px; + font-size: 0.8rem; + vertical-align: middle; /* Align the content vertically in the middle */ + border-bottom: 1px solid var(--border-color); /* Assuming there is a border as in other cells */ +} + +.offers-sent-cell .static-text { + font-weight: bold; + color: black; /* Color for static text */ +} + +.offers-sent-cell .data-span, +.offers-sent-cell .date-span { + white-space: nowrap; /* Keep data in one line */ + color: var(--data-text-color); /* Color for data */ +} diff --git a/src/components/tableCells/OffersSentCell/index.js b/src/components/tableCells/OffersSentCell/index.js new file mode 100644 index 0000000..753f3fc --- /dev/null +++ b/src/components/tableCells/OffersSentCell/index.js @@ -0,0 +1,24 @@ +import React from "react"; +import { formatDate } from "../../../utils/commonFunctions"; +import "./OffersSentCell.css"; // Make sure to create and import the corresponding CSS file + +const OffersSentCell = ({ lead }) => { + return ( + +
+ Sent: + {formatDate(lead.dateOfferSent)} +
+
+ Amount: + ${lead.offerPrice.toLocaleString()} +
+
+ MAO: + ${lead.mao.toLocaleString()} +
+ + ); +}; + +export default OffersSentCell; diff --git a/src/components/tableCells/StatusLabelCell/StatusLabelCell.css b/src/components/tableCells/StatusLabelCell/StatusLabelCell.css new file mode 100644 index 0000000..0c37faa --- /dev/null +++ b/src/components/tableCells/StatusLabelCell/StatusLabelCell.css @@ -0,0 +1,52 @@ +.status-cell { + text-align: center; + padding: 12px 15px; + vertical-align: middle; + border-bottom: 1px solid var(--border-color); +} + +.status-cell .status-label { + padding: 0.5em 1em; + border-radius: 15px; + color: #fff; + text-align: center; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + font-family: "Arial", sans-serif; + font-weight: bold; + font-size: 0.9em; + display: inline-block; + vertical-align: middle; + min-width: 100px; +} + +.status-cell .status-h7 { + background-image: linear-gradient(to bottom right, #007bff, #0056b3); +} + +.status-cell .status-pnhot { + background-image: linear-gradient( + to bottom right, + var(--brand-color-2), + var(--brand-color) + ); +} + +.status-cell .status-hot { + background-image: linear-gradient(to bottom right, #edb303, #b22e02); +} + +.status-cell .status-newlead { + background-image: linear-gradient(to bottom right, #ba2121ae, #a40909ee); +} + +.status-cell .status-nurture { + background-image: linear-gradient(to bottom right, #17a2b8, #5326b4c2); +} + +.status-cell .status-closed { + background-image: linear-gradient(to bottom right, #1f963bc6, #0d5c1f92); +} + +.status-cell .status-contracted { + background-image: linear-gradient(to bottom right, #5c0654d4, #ae7821); +} diff --git a/src/components/tableCells/StatusLabelCell/index.js b/src/components/tableCells/StatusLabelCell/index.js new file mode 100644 index 0000000..da11282 --- /dev/null +++ b/src/components/tableCells/StatusLabelCell/index.js @@ -0,0 +1,14 @@ +import React from "react"; +import "./StatusLabelCell.css"; // Make sure to create and import the corresponding CSS file + +const StatusCell = ({ status }) => { + const statusClass = `status-${status.toLowerCase().replace(/\s+/g, "")}`; + + return ( + + {status} + + ); +}; + +export default StatusCell; diff --git a/src/components/tables/LeadsTable/LeadsTable.css b/src/components/tables/LeadsTable/LeadsTable.css new file mode 100644 index 0000000..925ab0a --- /dev/null +++ b/src/components/tables/LeadsTable/LeadsTable.css @@ -0,0 +1,89 @@ +.leads-table-container { + display: block; + max-width: 82%; + margin: 20px auto; + background-color: var(--background-color); + border-radius: 10px; + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); + overflow: hidden; +} +.leads-table { + width: 100%; + border-collapse: collapse; + table-layout: fixed; /* Keeps the table layout fixed */ +} + +.leads-table th, +.leads-table td { + padding: 12px 15px; + border-bottom: 1px solid var(--border-color); + color: var(--text-color); + vertical-align: middle; + text-align: center; + word-wrap: break-word; /* Ensure text wraps within the cell */ +} + +.sort-icon { + cursor: pointer; +} + +.leads-table tbody { + display: block; + overflow-y: auto; + max-height: 500px; +} + +.leads-table tbody tr:hover { + background-color: var(--light-gray); + cursor: default; +} + +.leads-table thead, /* Fixing the thead */ +.leads-table tbody tr { + /* and tr elements to display table */ + display: table; + width: 100%; + table-layout: fixed; /* Fixed table layout for consistent column width */ +} + +.leads-thead { + background-color: var(--brand-color-light); + color: #f2f2f2; + border-top-left-radius: 10px; + border-top-right-radius: 10px; + width: calc(100% - 17px); +} + +.leads-table th.stretch-cell, +.leads-table td.stretch-cell { + min-width: 150px; + width: auto; +} + +.hover-details { + display: none; + position: absolute; + background-color: rgba(0, 0, 0, 0.7); + color: #fff; + border: 1px solid #ddd; + border-radius: 8px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); + z-index: 2; + left: 0; + top: 100%; + padding: 10px; + white-space: nowrap; + font-size: 0.9rem; +} + +.leads-table th.contact-details-header, +.leads-table td.contact-details { + width: 20%; /* Fixed width */ + min-width: 200px; /* Optional: Set a minimum width if needed */ + word-break: break-word; /* Allows text to wrap within the cell */ + white-space: normal; /* Overrides any previous white-space settings that prevent wrapping */ +} + +.leads-table td.contact-details:hover { + cursor: pointer; +} diff --git a/src/components/tables/LeadsTable/index.js b/src/components/tables/LeadsTable/index.js new file mode 100644 index 0000000..ce48eb9 --- /dev/null +++ b/src/components/tables/LeadsTable/index.js @@ -0,0 +1,130 @@ +import React, { useState, useMemo } from "react"; +import "./LeadsTable.css"; +import ContactDetailsCell from "../../tableCells/ContactDetailsCell"; +import StatusLabelCell from "../../tableCells/StatusLabelCell"; +import OffersSentCell from "../../tableCells/OffersSentCell"; +import FollowUpCell from "../../tableCells/FollowUpCell"; +import AnalyzeOfferCell from "../../tableCells/AnalyzeOfferCell"; +import MarketCell from "../../tableCells/MarketCell"; + +/** + * LeadsTable displays a table of leads with sortable columns. + * + * @param {Object[]} leads - Array of lead objects to be displayed. + * @param {Function} onSort - Function to handle sorting of columns. + * @param {boolean} isPriorityFilterOn - Flag indicating if priority sorting is active. + */ +const LeadsTable = ({ leads, onSort, isPriorityFilterOn }) => { + const [sortConfig, setSortConfig] = useState({ key: null, direction: null }); + + // useMemo hook to sort leads only when leads or sortConfig changes. + const sortedLeads = useMemo(() => { + let sortableLeads = [...leads]; + + // Sorting logic is applied only if a sort key and direction are set. + if (sortConfig.key !== null && sortConfig.direction !== null) { + sortableLeads.sort((a, b) => { + let comparison = 0; + + // Custom sorting logic for date-based columns + if (sortConfig.key === "offersSent") { + const dateA = new Date(a.dateOfferSent); + const dateB = new Date(b.dateOfferSent); + comparison = dateA - dateB; + } else if (sortConfig.key === "followUp") { + const dateA = new Date(a.lastContactDate); + const dateB = new Date(b.lastContactDate); + comparison = dateA - dateB; + } else { + // General string comparison for other columns + comparison = a[sortConfig.key].localeCompare(b[sortConfig.key]); + } + // Adjust comparison for ascending/descending order + return sortConfig.direction === "ascending" ? comparison : -comparison; + }); + } + return sortableLeads; + }, [leads, sortConfig]); + + /** + * Handles requests to sort the table based on the specified key. + * + * @param {string} key - The key to sort by. + */ + const requestSort = (key) => { + if (isPriorityFilterOn) { + return; + } + + // Determine the direction of the sorting + let direction = "ascending"; + if (sortConfig.key === key) { + if (sortConfig.direction === "ascending") { + direction = "descending"; + } else if (sortConfig.direction === "descending") { + direction = null; // Reset to unsorted + } + } + setSortConfig({ key, direction }); + onSort(key, direction); + }; + + /** + * Returns the appropriate sort icon for a column. + * + * @param {string} key - The key of the column. + * @returns {string} - The icon representing the current sort state. + */ + const getSortIcon = (key) => { + if (sortConfig.key === key) { + if (sortConfig.direction === "ascending") return "↓"; + else if (sortConfig.direction === "descending") return "↑"; + } + return "⬍"; // Default icon for unsorted state + }; + + return ( +
+ + + + + + + + + + + + + + {sortedLeads.map((lead) => ( + + + + + + + + {}} /> + + ))} + +
requestSort("name")}> + Name {getSortIcon("name")} + Contact DetailsProperty AddressStatus requestSort("followUp")} + > + Follow Up {getSortIcon("followUp")} + requestSort("offersSent")} + > + Offers Sent {getSortIcon("offersSent")} + Analyze Offer
{lead.name}
+
+ ); +}; + +export default LeadsTable; diff --git a/src/context/global/pageHeader/PageHeaderContext.js b/src/context/global/pageHeader/PageHeaderContext.js new file mode 100644 index 0000000..3d3a92b --- /dev/null +++ b/src/context/global/pageHeader/PageHeaderContext.js @@ -0,0 +1,9 @@ +import { createContext } from "react"; + +const PageHeaderContext = createContext({ + title: "", + iconName: "", + setPageHeaderInfo: () => {}, +}); + +export default PageHeaderContext; diff --git a/src/context/global/pageHeader/PageHeaderProvider.js b/src/context/global/pageHeader/PageHeaderProvider.js new file mode 100644 index 0000000..b421aab --- /dev/null +++ b/src/context/global/pageHeader/PageHeaderProvider.js @@ -0,0 +1,16 @@ +import React, { useState, useCallback } from "react"; +import PageHeaderContext from "./PageHeaderContext"; + +export const PageHeaderProvider = ({ children }) => { + const [headerInfo, setHeaderInfo] = useState({ title: "", iconName: "" }); + + const setPageHeaderInfo = useCallback((title, iconName) => { + setHeaderInfo({ title, iconName }); + }, []); + + return ( + + {children} + + ); +}; diff --git a/src/context/global/theme/ThemeContext.js b/src/context/global/theme/ThemeContext.js new file mode 100644 index 0000000..cbdcc0c --- /dev/null +++ b/src/context/global/theme/ThemeContext.js @@ -0,0 +1,33 @@ +// import React, { createContext, useContext, useState } from "react"; + +// const ThemeContext = createContext(); + +// export const useTheme = () => { +// return useContext(ThemeContext); +// }; + +// export const ThemeProvider = ({ children }) => { +// const [theme, setTheme] = useState("light"); + +// const toggleTheme = () => { +// setTheme((prevTheme) => { +// const newTheme = prevTheme === "light" ? "dark" : "light"; + +// if (newTheme === "dark") { +// document.body.classList.add("dark"); +// document.body.classList.remove("light"); +// } else { +// document.body.classList.add("light"); +// document.body.classList.remove("dark"); +// } + +// return newTheme; +// }); +// }; + +// return ( +// +// {children} +// +// ); +// }; diff --git a/src/context/global/theme/ThemeProvider.js b/src/context/global/theme/ThemeProvider.js new file mode 100644 index 0000000..e69de29 diff --git a/src/context/index.js b/src/context/index.js new file mode 100644 index 0000000..a621ada --- /dev/null +++ b/src/context/index.js @@ -0,0 +1 @@ +export { PageHeaderProvider } from "./global/pageHeader/PageHeaderProvider"; diff --git a/src/hooks/useDashboardData.js b/src/hooks/useDashboardData.js new file mode 100644 index 0000000..0920d2d --- /dev/null +++ b/src/hooks/useDashboardData.js @@ -0,0 +1,81 @@ +import { useState, useEffect, useMemo } from "react"; +import { mockBarChartData } from "../utils/mockData/dataVisualizations/barChartData"; +import { mockSingleValueCardData } from "../utils/mockData/dataVisualizations/singleValueCard"; +import { mockSalesRadarChart } from "../utils/mockData/dataVisualizations/radarChart"; +import { mockROIByLeadSourceData } from "../utils/mockData/dataVisualizations/barChartData"; +import { mockMarketPopulations } from "../utils/mockData/dataVisualizations/marketShareData"; +import { calculateMarketShare } from "../utils/commonFunctions"; +import { mockBubbleChartData } from "../utils/mockData/dataVisualizations/mockBubbleChartData"; + +const useDashboardData = () => { + const [data, setData] = useState({ + singleValueCardData: [], + barChartData: [], + dealsClosedByMarketData: [], + salesRadarChartData: [], + roiByLeadSourceData: [], + marketShareData: [], + bubbleChartData: [], + }); + const [isLoading, setIsLoading] = useState(true); + const [error, setError] = useState(null); + + const clearError = () => setError(null); + + const totalPopulation = mockMarketPopulations.reduce( + (acc, market) => acc + market.population, + 0 + ); + const totalDealsDone = 20; // Assuming a fixed number for this example + + const businessMarketShare = useMemo(() => { + const share = calculateMarketShare(totalDealsDone, totalPopulation); + return Number(share.toFixed(2)); + }, [totalDealsDone, totalPopulation]); + + const remainingMarketShare = useMemo(() => { + const share = 100 - businessMarketShare; + return Number(share.toFixed(2)); + }, [businessMarketShare]); + + const marketShareData = useMemo( + () => [ + { + name: "My Business", + value: businessMarketShare, + color: "#d5b5a3", // Color for your business + }, + { + name: "Market Share", + value: remainingMarketShare, + color: "#3e5f8a", // Different color for the remaining market + }, + ], + [businessMarketShare, remainingMarketShare] + ); + + useEffect(() => { + setTimeout(() => { + // Simulating a data fetch with a 15% chance of error + const didFail = Math.random() < 0.15; + + if (didFail) { + setError(new Error("Failed to fetch data.")); + } else { + setData({ + singleValueCardData: mockSingleValueCardData, + barChartData: mockBarChartData, + salesRadarChartData: mockSalesRadarChart, + roiByLeadSourceData: mockROIByLeadSourceData, + marketShareData, + bubbleChartData: mockBubbleChartData, + }); + } + setIsLoading(false); + }, 1000); + }, [marketShareData]); + + return { data, isLoading, error, clearError }; +}; + +export default useDashboardData; diff --git a/src/hooks/useLeadsData.js b/src/hooks/useLeadsData.js new file mode 100644 index 0000000..633b78a --- /dev/null +++ b/src/hooks/useLeadsData.js @@ -0,0 +1,41 @@ +// useLeadsData.js +import { useState, useCallback } from "react"; +import { simulateFetchLeadsData } from "../utils/mockData/mockService"; // Adjust the import path as needed + +export const useLeadsData = () => { + const [leads, setLeads] = useState([]); + const [isLoading, setIsLoading] = useState(false); + const [error, setError] = useState(null); + + const fetchLeads = useCallback(async (filters = {}) => { + setIsLoading(true); + setError(null); + try { + let leadsData = await simulateFetchLeadsData(); + + // Apply each filter to the leads data + Object.keys(filters).forEach((filterName) => { + // Check if the filter value is a string before calling toLowerCase + if (typeof filters[filterName] === "string") { + const filterValue = filters[filterName].toLowerCase(); + + leadsData = leadsData.filter((lead) => { + // Check if the lead property is a string before calling toLowerCase + if (typeof lead[filterName] === "string") { + return lead[filterName].toLowerCase() === filterValue; + } + return false; + }); + } + }); + + setLeads(leadsData); + } catch (error) { + setError(error); + } finally { + setIsLoading(false); + } + }, []); + + return { leads, isLoading, error, fetchLeads }; +}; diff --git a/src/hooks/usePageHeader.js b/src/hooks/usePageHeader.js new file mode 100644 index 0000000..5f9efa0 --- /dev/null +++ b/src/hooks/usePageHeader.js @@ -0,0 +1,6 @@ +import { useContext } from "react"; +import PageHeaderContext from "../context/global/pageHeader/PageHeaderContext"; + +export const usePageHeader = () => { + return useContext(PageHeaderContext); +}; diff --git a/src/hooks/useSmallNotification.js b/src/hooks/useSmallNotification.js new file mode 100644 index 0000000..a4518d8 --- /dev/null +++ b/src/hooks/useSmallNotification.js @@ -0,0 +1,21 @@ +// useNotification.js +import { useState } from "react"; + +export const useSmallNotification = () => { + const [smallNotification, setSmallNotification] = useState({ + message: "", + show: false, + }); + + const showSmallNotification = (message, duration = 2000) => { + setSmallNotification({ message, show: true }); + setTimeout(() => { + setSmallNotification({ message: "", show: false }); + }, duration); + }; + + return { + smallNotification, + showSmallNotification, + }; +}; diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..09ecba7 --- /dev/null +++ b/src/index.css @@ -0,0 +1,97 @@ +/* Typography */ +@import url("https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap"); + +:root { + --font-family: "Lato", sans-serif; + --brand-color: #1e3a5f; /* Dark Blue */ + --brand-color-transparent: rgba(30, 58, 95, 0.5); + --brand-color-rgb: rgba(30, 58, 95); + --brand-color-light: #3e5f8a; /* Lighter Blue */ + --brand-color-2: #d5b5a3; /* Cream */ + --brand-color-2-transparent: rgba(213, 181, 163, 0.5); + --brand-color-hover: #2d3748; /* Even Darker Blue */ + --white: #ffffff; + --light-gray: #d3d3d3; + --dropdown-bg: #3e5f8a; + --dropdown-hover: #2d3748; + --dropdown-header: #d5b5a3; + --data-text-color: #333; +} + +body { + margin: 0; + font-family: var(--font-family); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", + monospace; +} + +/* Utility Classes */ +.text-center { + text-align: center; +} + +.flexbox { + display: flex; +} + +.flex-column { + flex-direction: column; +} + +.flex-row { + flex-direction: row; +} + +.align-center { + align-items: center; +} + +.justify-between { + justify-content: space-between; +} + +.full-width { + width: 100%; +} + +.white-text { + color: var(--white-color); +} + +/* Components */ +.button { + background-color: var(--brand-color); + color: var(--white-color); + padding: var(--standard-padding); + border: none; + border-radius: 4px; + cursor: pointer; + transition: background-color 0.3s ease; +} + +.button:hover, +.button:focus { + background-color: var(--brand-color-hover); +} + +.button:active { + background-color: var(--brand-color-2); +} + +/* Responsive Design */ +@media only screen and (max-width: 600px) { + .standard-container { + padding: 0.5rem; + margin: 0.5rem; + } +} + +.ellipsis span { + cursor: default; + padding: 8px 16px; +} diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..d563c0f --- /dev/null +++ b/src/index.js @@ -0,0 +1,17 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import './index.css'; +import App from './App'; +import reportWebVitals from './reportWebVitals'; + +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render( + + + +); + +// If you want to start measuring performance in your app, pass a function +// to log results (for example: reportWebVitals(console.log)) +// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals +reportWebVitals(); diff --git a/src/pages/Buyers/BuyerOasis.css b/src/pages/Buyers/BuyerOasis.css new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/Buyers/index.js b/src/pages/Buyers/index.js new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/CreamDashboard/CreamDashboard.css b/src/pages/CreamDashboard/CreamDashboard.css new file mode 100644 index 0000000..39ffd2c --- /dev/null +++ b/src/pages/CreamDashboard/CreamDashboard.css @@ -0,0 +1,86 @@ +.cream-dashboard-container { + display: flex; + flex-direction: column; + gap: 20px; + align-items: center; +} + +.single-value-cards { + display: flex; + justify-content: space-between; + gap: 1rem; + flex: 1; + width: 100%; +} + +.cream-dashboard-set-performance { + display: flex; + justify-content: space-between; + width: 100%; + gap: 20px; +} + +.cream-dashboard-set { + margin-top: 2%; + display: flex; + width: 100%; + height: auto; + max-height: 600px; +} + +.radar-chart-container { + display: flex; + width: 100%; /* Full width of its parent container */ +} + +/* This targets the SVG rendered by Recharts inside your radar chart container */ +.radar-chart-container svg { + width: 100% !important; /* Stretch to the container width */ + height: 100% !important; /* Stretch to the container height */ +} + +.radar-chart-container .recharts-wrapper { + width: 100% !important; + height: 100% !important; +} + +.cream-dashboard-set > :only-child { + min-height: 220px; +} + +.dashboard-content-container { + height: calc(100vh - var(--top-offset)); + margin-top: 20px; + max-width: 100%; + background-color: #3e5f8a12; + border-radius: 10px; + box-shadow: 0 4px 10px rgba(30, 58, 95, 1); + width: 100%; + overflow-y: auto; + overflow-x: hidden; + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + margin-bottom: 6%; +} + +.bubble-chart-container { + width: 100%; /* Full width of its container */ + max-width: 400px; /* Or any maximum width you prefer */ + height: 400px; /* Set a fixed height for the chart container */ + padding: 20px; /* Optional padding */ + display: flex; /* Use flex to control the size of children */ + flex-direction: column; /* Stack children vertically */ + justify-content: center; /* Center children vertically */ +} + +.bubble-chart-container svg { + width: 100%; /* Make the SVG responsive */ + height: 100%; /* SVG should fill the container */ +} + +.bubble-chart-container canvas { + flex: 1; /* Allow the canvas to grow */ + height: 100%; +} diff --git a/src/pages/CreamDashboard/index.js b/src/pages/CreamDashboard/index.js new file mode 100644 index 0000000..766ece9 --- /dev/null +++ b/src/pages/CreamDashboard/index.js @@ -0,0 +1,132 @@ +import React, { useEffect, useState } from "react"; +import useDashboardData from "../../hooks/useDashboardData"; +import ErrorModal from "../../components/shared/modal/ErrorModal"; +import LoadingSpinner from "../../components/shared/LoadingSpinner"; +import SingleValueCard from "../../components/dataVisualizations/SingleValueCard"; +import SingleValueCardsContainer from "../../components/dataVisualizations/SingleValueCardsGrid"; +import StackedBarChart from "../../components/dataVisualizations/Charts/StackedBarChart"; +import SalesRadarChart from "../../components/dataVisualizations/Charts/RadarChart"; +import { APP_NAME } from "../../utils/constants/appConstants"; +import { ERROR_MODAL } from "../../utils/constants/errorConstants"; +import "./CreamDashboard.css"; +import { usePageHeader } from "../../hooks/usePageHeader"; +import Section from "../../components/layout/Section"; +import CustomPieChart from "../../components/dataVisualizations/Charts/CustomPieChart"; +import FilterBar from "../../components/shared/dropdowns/FilterBar"; +import { DASHBOARD_FILTER_OPTIONS } from "../../utils/constants/uiConstants"; +import BubbleChart from "../../components/dataVisualizations/Charts/BubbleChart"; + +const CreamDashboard = () => { + const { data, isLoading, error, clearError } = useDashboardData(); + const { setPageHeaderInfo } = usePageHeader(); + const [filters, setFilters] = useState(""); + + useEffect(() => { + setPageHeaderInfo(APP_NAME, "analytics"); + }, [setPageHeaderInfo]); + + const handleFilterChange = (filterName, value) => { + // Reset the priority filter when other filters are applied + setFilters((prevFilters) => ({ + ...prevFilters, + [filterName]: value, + })); + }; + + if (isLoading) { + return ; + } + + const marketInsightsKeys = { + nameKey: "name", + bars: ["offersSent", "conversationsHad", "signedAgreements"], + }; + + const leadSourceAnalysisKeys = { + nameKey: "listName", + bars: ["investmentCost", "revenue", "netProfit"], + }; + + if (error) { + return ( + + ); + } + + const { + singleValueCardData, + barChartData, + salesRadarChartData, + roiByLeadSourceData, + marketShareData, + bubbleChartData, + } = data; + + return ( +
+ +
+
+ {singleValueCardData.slice(0, 3).map((cardData) => ( + + ))} +
+
+ {/*
*/} +
+
+ + +
+
+
+
+ + +
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+
+
+ ); +}; + +export default CreamDashboard; diff --git a/src/pages/DealDeploy/DealDeploy.css b/src/pages/DealDeploy/DealDeploy.css new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/DealDeploy/index.js b/src/pages/DealDeploy/index.js new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/Inspections/InspectionScheduler.css b/src/pages/Inspections/InspectionScheduler.css new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/Inspections/index.js b/src/pages/Inspections/index.js new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/Leads/Leads.css b/src/pages/Leads/Leads.css new file mode 100644 index 0000000..5a081f9 --- /dev/null +++ b/src/pages/Leads/Leads.css @@ -0,0 +1,4 @@ +.leads-container { + padding: 20px; + font-family: var(--font-family); +} diff --git a/src/pages/Leads/index.js b/src/pages/Leads/index.js new file mode 100644 index 0000000..86b9f1c --- /dev/null +++ b/src/pages/Leads/index.js @@ -0,0 +1,214 @@ +import React, { useState, useEffect, useCallback } from "react"; +import FilterBar from "../../components/shared/dropdowns/FilterBar"; +import LeadsTable from "../../components/tables/LeadsTable"; +import { usePageHeader } from "../../hooks/usePageHeader"; +import { useLeadsData } from "../../hooks/useLeadsData"; +import ErrorModal from "../../components/shared/modal/ErrorModal"; +import LoadingSpinner from "../../components/shared/LoadingSpinner"; +import "./Leads.css"; +import { APP_NAME } from "../../utils/constants/appConstants"; +import { LEADS_FILTER_OPTIONS } from "../../utils/constants/uiConstants"; +import { ERROR_MODAL } from "../../utils/constants/errorConstants"; +import Pagination from "../../components/shared/Pagination"; +import { getPriorityLeads, getNonMaoLeads } from "../../utils/commonFunctions"; +import { LEADS_SEARCH_PLACEHOLDER } from "../../utils/constants/uiConstants"; + +/** + * Leads component to manage and display leads with filtering, sorting, and pagination. + */ +const Leads = () => { + // State management for various functionalities + const [filters, setFilters] = useState(""); + const [isPriorityFilterOn, setIsPriorityFilterOn] = useState(false); + const [isMAOFilterOn, setIsMAOFilterOn] = useState(false); + const [topPriorityLeads, setTopPriorityLeads] = useState([]); + const [nonMaoLeads, setNonMaoLeads] = useState([]); + const { setPageHeaderInfo } = usePageHeader(); + const { leads, isLoading, error, fetchLeads } = useLeadsData(); + const [currentPage, setCurrentPage] = useState(1); + const [leadsPerPage] = useState(10); + const [searchTerm, setSearchTerm] = useState(""); + const [searchedLeads, setSearchedLeads] = useState([]); + + // Calculating total leads and pagination details + // Calculating total leads and pagination details + const totalLeads = isPriorityFilterOn + ? topPriorityLeads.length + : isMAOFilterOn + ? nonMaoLeads.length + : searchTerm.trim() + ? searchedLeads.length + : leads.length; + + const totalPages = Math.ceil(totalLeads / leadsPerPage); + + const indexOfLastLead = currentPage * leadsPerPage; + const indexOfFirstLead = indexOfLastLead - leadsPerPage; + + useEffect(() => { + setPageHeaderInfo(APP_NAME, "supervised_user_circle"); + fetchLeads(); + }, [setPageHeaderInfo, fetchLeads]); + + // Fetch leads based on filters, excluding when priority filter is on + useEffect(() => { + if (!isPriorityFilterOn && filters) { + fetchLeads(filters); + } + }, [filters, fetchLeads, isPriorityFilterOn]); + + // Update top priority leads when the priority filter is toggled + useEffect(() => { + if (isPriorityFilterOn) { + setTopPriorityLeads(getPriorityLeads(leads)); + } else if (isMAOFilterOn) { + setNonMaoLeads(getNonMaoLeads(leads)); + } + }, [isPriorityFilterOn, isMAOFilterOn, leads]); + + // Effect to filter leads based on search term + useEffect(() => { + if (!searchTerm.trim()) { + setSearchedLeads(leads); + return; + } + + const lowerCaseSearchTerm = searchTerm.toLowerCase(); + const filtered = leads.filter((lead) => { + return ( + lead.name.toLowerCase().includes(lowerCaseSearchTerm) || + lead.phone.toLowerCase().includes(lowerCaseSearchTerm) || + lead.email.toLowerCase().includes(lowerCaseSearchTerm) || + lead.address.toLowerCase().includes(lowerCaseSearchTerm) + ); + }); + + setSearchedLeads(filtered); + }, [searchTerm, leads]); + + // Handle changes in filters + const handleFilterChange = (filterName, value) => { + // Reset the priority filter when other filters are applied + setIsPriorityFilterOn(false); + setCurrentPage(1); + setFilters((prevFilters) => ({ + ...prevFilters, + [filterName]: value, + })); + }; + + // Toggle priority leads filter + const handlePriorityLeadsFilterToggle = () => { + setIsPriorityFilterOn(!isPriorityFilterOn); + if (!isPriorityFilterOn) { + setIsMAOFilterOn(false); // Turn off MAO filter when turning on priority filter + setTopPriorityLeads(getPriorityLeads(leads)); + } + }; + + const handleMAOToggle = () => { + setIsMAOFilterOn(!isMAOFilterOn); + if (!isMAOFilterOn) { + setIsPriorityFilterOn(false); // Turn off priority filter when turning on MAO filter + setNonMaoLeads(getNonMaoLeads(leads)); + } + }; + + const getSortValue = (lead, sortKey) => { + if (sortKey === "offersSent" || sortKey === "followUp") { + return new Date( + lead[sortKey === "offersSent" ? "dateOfferSent" : "lastContactDate"] + ); + } + return lead[sortKey]; + }; + + // Handle sorting of leads + const handleSort = useCallback( + (sortKey, direction) => { + // Do not sort if the priority filter is on + if (isPriorityFilterOn) { + return; + } + + const leadsToSort = isMAOFilterOn ? nonMaoLeads : searchedLeads; + + const sorted = leadsToSort.sort((a, b) => { + const valueA = getSortValue(a, sortKey); + const valueB = getSortValue(b, sortKey); + + if (sortKey === "offersSent" || sortKey === "followUp") { + return direction === "ascending" ? valueA - valueB : valueB - valueA; + } + return direction === "ascending" + ? String(valueA).localeCompare(String(valueB)) + : String(valueB).localeCompare(String(valueA)); + }); + + if (isMAOFilterOn) { + setNonMaoLeads([...sorted]); + } else { + setSearchedLeads([...sorted]); + } + }, + [isPriorityFilterOn, isMAOFilterOn, nonMaoLeads, searchedLeads] + ); + + // Determine which leads to display based on active filters + const displayedLeads = isPriorityFilterOn + ? topPriorityLeads.slice(indexOfFirstLead, indexOfLastLead) + : isMAOFilterOn + ? nonMaoLeads.slice(indexOfFirstLead, indexOfLastLead) + : searchedLeads.slice(indexOfFirstLead, indexOfLastLead); + + const handleSearch = useCallback((searchTerm) => { + setSearchTerm(searchTerm); + }, []); + + return ( +
+ + + + + {isLoading && } + {error && ( + fetchLeads(filters)} + /> + )} + {!isLoading && !error && leads.length === 0 && ( + fetchLeads(filters)} + /> + )} +
+ ); +}; + +export default Leads; diff --git a/src/pages/Notifications/Notifications.css b/src/pages/Notifications/Notifications.css new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/Notifications/index.js b/src/pages/Notifications/index.js new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/OfferOracle/OfferOracle.css b/src/pages/OfferOracle/OfferOracle.css new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/OfferOracle/index.js b/src/pages/OfferOracle/index.js new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/OfferOutreach/OfferOutreach.css b/src/pages/OfferOutreach/OfferOutreach.css new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/OfferOutreach/index.js b/src/pages/OfferOutreach/index.js new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/Prospects/Prospects.css b/src/pages/Prospects/Prospects.css new file mode 100644 index 0000000..0c40264 --- /dev/null +++ b/src/pages/Prospects/Prospects.css @@ -0,0 +1,50 @@ +.prospect-ventures-container { + display: flex; + flex-direction: column; + gap: 20px; + align-items: center; + font-family: sans-serif; +} + +.prospect-ventures-title { + font-size: 2rem; /* Matches the dashboard heading style */ + font-weight: bold; + color: #333; /* Assuming a dark font color similar to the dashboard */ + margin-bottom: 20px; + text-align: center; + text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1); /* Subtle text shadow for depth */ +} + +.option-button { + padding: 15px 30px; + background: var(--brand-color-light); /* Your brand color */ + color: #fff; + border: none; + border-radius: 10px; /* Adjust as needed to match your card style */ + cursor: pointer; + font-size: 1rem; + font-weight: 500; + transition: box-shadow 0.3s ease, transform 0.3s ease; + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); /* Subtle shadow for depth */ +} + +.option-button:hover { + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15); /* Slightly more pronounced shadow on hover */ + transform: translateY(-2px); /* Lift effect on hover */ + background-color: var(--brand-color-2); +} + +.options-container { + display: flex; + justify-content: center; + gap: 60px; /* Increased gap between buttons */ + margin-top: 25px; /* Adds space below the header/title */ + margin-bottom: 20px; /* Adds space above the note */ +} + +.small-note { + font-size: 0.8rem; + text-align: center; + color: #666; + white-space: pre-line; /* This will allow for natural text wrapping and recognition of newline characters */ +} diff --git a/src/pages/Prospects/index.js b/src/pages/Prospects/index.js new file mode 100644 index 0000000..f129cc3 --- /dev/null +++ b/src/pages/Prospects/index.js @@ -0,0 +1,55 @@ +import React, { useState, useEffect } from "react"; +import "./Prospects.css"; +import { PROSPECT_VENTURES_NOTES } from "../../utils/constants/uiConstants"; +import PropertyInputModal from "../../components/modal/PropertyInputModal/index"; +import SkiptraceListModal from "../../components/modal/SkiptraceListModal"; +import { usePageHeader } from "../../hooks/usePageHeader"; +import { APP_NAME } from "../../utils/constants/appConstants"; + +const Prospects = () => { + const [isPropertyModalOpen, setIsPropertyModalOpen] = useState(false); + const [isSkiptraceModalOpen, setIsSkiptraceModalOpen] = useState(false); + const { setPageHeaderInfo } = usePageHeader(); + + useEffect(() => { + setPageHeaderInfo(APP_NAME, "location_searching"); + }, [setPageHeaderInfo]); + + const openPropertyModal = () => { + setIsPropertyModalOpen(true); + setIsSkiptraceModalOpen(false); + }; + const closePropertyModal = () => setIsPropertyModalOpen(false); + + const openSkiptraceModal = () => { + setIsSkiptraceModalOpen(true); + setIsPropertyModalOpen(false); + }; + const closeSkiptraceModal = () => setIsSkiptraceModalOpen(false); + + return ( +
+
+ + +
+ {isPropertyModalOpen && ( + + )} + {isSkiptraceModalOpen && ( + + )}{" "} +

+ {" "} + {PROSPECT_VENTURES_NOTES.PULL_LIST} +
*{PROSPECT_VENTURES_NOTES.DATA_COMPLIANCE} +

+
+ ); +}; + +export default Prospects; diff --git a/src/pages/TitleKickstart/TitleKickstart.css b/src/pages/TitleKickstart/TitleKickstart.css new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/TitleKickstart/index.js b/src/pages/TitleKickstart/index.js new file mode 100644 index 0000000..e69de29 diff --git a/src/reportWebVitals.js b/src/reportWebVitals.js new file mode 100644 index 0000000..5253d3a --- /dev/null +++ b/src/reportWebVitals.js @@ -0,0 +1,13 @@ +const reportWebVitals = onPerfEntry => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { + getCLS(onPerfEntry); + getFID(onPerfEntry); + getFCP(onPerfEntry); + getLCP(onPerfEntry); + getTTFB(onPerfEntry); + }); + } +}; + +export default reportWebVitals; diff --git a/src/setupTests.js b/src/setupTests.js new file mode 100644 index 0000000..8f2609b --- /dev/null +++ b/src/setupTests.js @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom'; diff --git a/src/utils/commonFunctions.js b/src/utils/commonFunctions.js new file mode 100644 index 0000000..e83f02c --- /dev/null +++ b/src/utils/commonFunctions.js @@ -0,0 +1,190 @@ +import Papa from "papaparse"; +import moment from "moment"; +import { SKIPTRACE_API_EXPECTED_HEADERS } from "./constants/apiConstants"; +import { LEAD_STATUS_FIELDS } from "./constants/appConstants"; + +export const readFileContent = (file) => { + return new Promise((resolve, reject) => { + if (!file || !file.type) { + reject("Invalid file provided"); + return; + } + + const reader = new FileReader(); + reader.onload = (event) => { + resolve({ + name: file.name, + type: file.type, + size: file.size, + content: event.target.result, + }); + }; + reader.onerror = (error) => reject("File reading failed: " + error.message); + reader.readAsDataURL(file); + }); +}; + +export const triggerFileDownload = (file, fileName) => { + const url = URL.createObjectURL(file); + const a = document.createElement("a"); + a.href = url; + a.download = fileName || "download"; + document.body.appendChild(a); + a.click(); + window.URL.revokeObjectURL(url); + a.remove(); +}; + +export const decodeBase64 = (base64String) => { + return atob(base64String); +}; + +export const isValidCSVFile = (file) => { + return file && file.type === "text/csv"; +}; + +export const extractHeadersFromFile = (fileObj) => { + return new Promise((resolve, reject) => { + try { + const base64Content = fileObj.content.split(",")[1]; + const decodedString = decodeBase64(base64Content); + const headers = decodedString + .split("\n")[0] + .split(",") + .map((header) => header.trim()); + resolve(headers); + } catch (error) { + reject("Error extracting headers: " + error.message); + } + }); +}; + +export const transformFileContent = (content, headerMappings) => { + const parsed = Papa.parse(content, { + header: true, // The first row of the CSV is interpreted as field names + }); + + const transformedRows = parsed.data.map((row) => { + const transformedRow = {}; + Object.entries(headerMappings).forEach(([userHeader, apiField]) => { + transformedRow[apiField] = row[userHeader]; + }); + return transformedRow; + }); + + // Convert the transformed data back to a CSV string + const transformedContent = Papa.unparse(transformedRows); + return transformedContent; +}; + +export const areValuesUnique = (vals) => { + const values = Object.values(vals); + const uniqueValues = new Set(values); + return uniqueValues.size === values.length; +}; + +// Function to validate all required fields are selected +export const validateRequiredFields = (requiredHeaderMappings) => { + const filteredMappings = Object.entries(requiredHeaderMappings) + .filter(([key, value]) => key.trim() !== "" && value.trim() !== "") + .reduce((obj, [key, value]) => { + obj[key] = value; + return obj; + }, {}); + + // Check if all fields are filled and if all values are unique + return ( + Object.keys(filteredMappings).length === + SKIPTRACE_API_EXPECTED_HEADERS.length && areValuesUnique(filteredMappings) + ); +}; + +export const formatPhoneNumber = (phoneNumber) => { + const match = phoneNumber + .replace(/\D/g, "") + .match(/^(1|)?(\d{3})(\d{3})(\d{4})$/); + return match + ? `${match[1] ? "+1 " : ""}(${match[2]}) ${match[3]}-${match[4]}` + : null; +}; + +export const humanReadableFileSize = (bytes) => { + const sizes = ["Bytes", "KB", "MB"]; + if (bytes === 0) return "0 Bytes"; + const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10); + if (i === 0) return `${bytes} ${sizes[i]}`; + return `${(bytes / 1024 ** i).toFixed(1)} ${sizes[i]}`; +}; + +export const truncateEmail = (email) => { + return email.length > 13 ? email.slice(0, 10) + "..." : email; +}; + +export const formatDate = (dateString) => { + return moment(dateString).format("MMM Do, YYYY"); +}; + +export const getPriorityLeads = (leads) => { + let prioritizedLeads = leads.filter( + (lead) => + lead.status.toLowerCase() !== LEAD_STATUS_FIELDS.CLOSED && + lead.status.toLowerCase() !== LEAD_STATUS_FIELDS.CONTRACTED + ); + + // Sort the leads by status, then by 'Next Follow Up' date within each status. + prioritizedLeads.sort((a, b) => { + const statusPriority = ["PN Hot", "Hot", "New Lead", "Nurture"]; + let statusCompare = + statusPriority.indexOf(a.status) - statusPriority.indexOf(b.status); + if (statusCompare !== 0) return statusCompare; + + let followUpA = new Date(a.nextFollowUp); + let followUpB = new Date(b.nextFollowUp); + return followUpA - followUpB; // Sooner dates come first + }); + + // Return the top 7 leads, or fewer if there aren't enough. + return prioritizedLeads.slice(0, 7); +}; + +export const getNonMaoLeads = (leads) => { + return leads.filter((lead) => lead.mao === "N/A"); +}; + +// Helper function to convert camelCase strings to Title Case With Spaces +export const camelCaseToTitleCase = (camelCase) => { + if (camelCase) { + const result = camelCase.replace(/([A-Z])/g, " $1"); + return result.charAt(0).toUpperCase() + result.slice(1); + } + return ""; +}; + +export const calculateMarketShare = (dealsDone, marketPopulation) => { + const potentialDeals = marketPopulation * 0.08; // 8% distressed home percentage + return (dealsDone / potentialDeals) * 100; // Returns the percentage of market share +}; + +const createRange = (from, to) => + Array.from({ length: to - from + 1 }, (_, i) => i + from); + +export const getDisplayedPages = ( + totalPages, + currentPage, + numDisplayPages, + ellipsis +) => { + if (totalPages <= numDisplayPages) return createRange(1, totalPages); + + const startPage = Math.max(2, currentPage - 1); + const endPage = Math.min(totalPages - 1, currentPage + 1); + let pages = [ + 1, + ...(currentPage > 3 ? [ellipsis] : []), + ...createRange(startPage, endPage), + ...(currentPage < totalPages - 2 ? [ellipsis] : []), + totalPages, + ]; + + return pages; +}; diff --git a/src/utils/constants/apiConstants.js b/src/utils/constants/apiConstants.js new file mode 100644 index 0000000..935f876 --- /dev/null +++ b/src/utils/constants/apiConstants.js @@ -0,0 +1,8 @@ +// Constants related to API and data processing + +export const SKIPTRACE_API_EXPECTED_HEADERS = [ + { value: "propertyAddress", label: "Property Address *" }, + { value: "propertyCity", label: "Property City *" }, + { value: "propertyState", label: "Property State *" }, + { value: "propertyZip", label: "Property Zip *" }, +]; diff --git a/src/utils/constants/appConstants.js b/src/utils/constants/appConstants.js new file mode 100644 index 0000000..edebc09 --- /dev/null +++ b/src/utils/constants/appConstants.js @@ -0,0 +1,24 @@ +// General constants related to the application configuration + +export const APP_NAME = "Suite Cream"; + +export const MARKETS = [ + "Atlanta", + "Charlotte", + "Columbus", + "Indianapolis", + "Jacksonville", + "Las Vegas", + "Memphis", + "Philadelphia", + "Tampa", +]; + +export const LEAD_STATUS_FIELDS = { + PRIMARY_NUMBER_HOT: "pn hot", + HOT: "hot", + NEW_LEAD: "new lead", + NURTURE: "nurture", + CONTRACTED: "contracted", + CLOSED: "closed", +}; diff --git a/src/utils/constants/errorConstants.js b/src/utils/constants/errorConstants.js new file mode 100644 index 0000000..5d9e7be --- /dev/null +++ b/src/utils/constants/errorConstants.js @@ -0,0 +1,21 @@ +// Error messages and related constants + +export const ERROR_MESSAGES = { + FILE_PROCESSING_ERROR: "Error during file processing:", + FILE_READ_ERROR: "Error reading file content:", + MOCK_DOWNLOAD_ERROR: "Error during mock download:", + ALL_FIELDS_REQUIRED: "Please assign all required fields before proceeding.", + DOWNLOAD_ERROR: "An error occurred during the download.", + SKIPTRACE_ERROR: "Error Skiptracing File", +}; + +export const ERROR_MODAL = { + TITLE: "Oops!", + DASHBOARD_SPECIFIC_MESSAGE: + "We encountered an error loading your dashboard data. Please try again.", + BUTTON_TEXT: "Close", + LEADS_SPECIFIC_MESSAGE_1: + "We encountered an error loading your leads data. Please try again.", + LEADS_SPECIFIC_MESSAGE_2: + "No leads available. Please try refreshing or adjusting your filters.", +}; diff --git a/src/utils/constants/uiConstants.js b/src/utils/constants/uiConstants.js new file mode 100644 index 0000000..8e1a900 --- /dev/null +++ b/src/utils/constants/uiConstants.js @@ -0,0 +1,98 @@ +// UI strings and labels +import { MARKETS } from "./appConstants"; + +export const PROSPECT_VENTURES_NOTES = { + PULL_LIST: + 'Select "Pull Prospect List" for new opportunities, or use "Skiptrace" to enhance your existing contacts.', + DATA_COMPLIANCE: + "Ensure your lists comply with our data standards before uploading, such as only uploading ONE list at a time.", +}; + +export const MODAL_STRINGS = { + UPLOAD_TITLE: "Upload List", + UPLOAD_SUBTITLE: "Only upload .csv or .xlsx files", + UPLOAD_ERROR: "Error reading file", + CHOOSE_FILE: "Choose File", + FILE_SELECTED: "File selected", + NO_FILE_SELECTED: "No file selected", + COMPLETE_MAPPING: "Complete Mapping", + CLOSE: "×", +}; + +export const MAPPING_MODAL_TEXT = { + TITLE: "Map Your Data Fields", + INSTRUCTIONS: "Align your column headers to the expected fields.", +}; + +export const MODAL_LABELS = { + MARKET_LABEL: "Market", + SUBMIT_BUTTON: "Submit", +}; + +export const DOWNLOAD_MESSAGES = { + DOWNLOAD_COMPLETE: "Download complete.", +}; + +export const SKIPTRACE_MESSAGES = { + SKIPTRACE_COMPLETE: "Skiptrace Complete!", +}; + +export const LEADS_FILTER_OPTIONS = [ + { + name: "status", + label: "Status", + placeholder: "All", + options: [ + { label: "Primary # Hot Leads", value: "pn hot" }, + { label: "Hot Leads", value: "hot" }, + { label: "New Leads", value: "new lead" }, + { label: "Lead Nurtures", value: "nurture" }, + { label: "Deals Pending", value: "contracted" }, + { label: "Deals Closed", value: "closed" }, + ], + }, + { + name: "market", + label: "Market", + placeholder: "All", + options: [ + ...MARKETS.map((market) => ({ + label: market, + value: market.toLowerCase().replace(/\s/g, "_"), + })), + ], + }, +]; + +// Create filter options Markets and Timelines (last 30 days, last quarter, last 6 months, last 12 months, all time) +export const DASHBOARD_FILTER_OPTIONS = [ + { + name: "market", + label: "Market", + placeholder: "All", + options: [ + ...MARKETS.map((market) => ({ + label: market, + value: market.toLowerCase().replace(/\s/g, "_"), + })), + ], + }, + { + name: "timeline", + label: "Timeline", + placeholder: "∞", + options: [ + { label: "30 Days", value: "last 30 days" }, + { label: "3 Months", value: "last quarter" }, + { label: "6 Months", value: "last 6 months" }, + { label: "12 Months", value: "last 12 months" }, + ], + }, +]; + +export const NUM_DISPLAY_PAGES = 5; + +export const ELLIPSIS = "..."; + +export const LEADS_SEARCH_PLACEHOLDER = + "Search for lead by name, contact details, or address"; diff --git a/src/utils/mockData/dataVisualizations/barChartData.js b/src/utils/mockData/dataVisualizations/barChartData.js new file mode 100644 index 0000000..764e321 --- /dev/null +++ b/src/utils/mockData/dataVisualizations/barChartData.js @@ -0,0 +1,131 @@ +export const mockBarChartData = [ + { + name: "Atlanta", + offersSent: 120, + conversationsHad: 150, + signedAgreements: 2, + }, + { + name: "Charlotte", + offersSent: 130, + conversationsHad: 160, + signedAgreements: 9, + }, + { + name: "Columbus", + offersSent: 125, + conversationsHad: 155, + signedAgreements: 4, + }, + { + name: "Indianapolis", + offersSent: 135, + conversationsHad: 170, + signedAgreements: 8, + }, + { + name: "Jacksonville", + offersSent: 140, + conversationsHad: 180, + signedAgreements: 3, + }, + { + name: "Las Vegas", + offersSent: 60, + conversationsHad: 190, + signedAgreements: 1, + }, + { + name: "Memphis", + offersSent: 150, + conversationsHad: 200, + signedAgreements: 1, + }, + { + name: "Philadelphia", + offersSent: 150, + conversationsHad: 165, + signedAgreements: 6, + }, + { + name: "Tampa", + offersSent: 150, + conversationsHad: 100, + signedAgreements: 2, + }, +]; + +export const mockDealsClosedByMarketData = [ + { name: "Atlanta", dealsClosed: 120 }, + { name: "Charlotte", dealsClosed: 150 }, + { name: "Columbus", dealsClosed: 130 }, + { name: "Indianapolis", dealsClosed: 140 }, + { name: "Jacksonville", dealsClosed: 110 }, + { name: "Las Vegas", dealsClosed: 160 }, + { name: "Memphis", dealsClosed: 135 }, + { name: "Philadelphia", dealsClosed: 145 }, + { name: "Tampa", dealsClosed: 125 }, +]; + +export const mockROIByLeadSourceData = [ + { + listName: "Probate", + investmentCost: 5000, + revenue: 15000, + netProfit: 10000, + }, + { + listName: "Unknown Equity", + investmentCost: 3000, + revenue: 9000, + netProfit: 6000, + }, + { + listName: "Tax Delinquent", + investmentCost: 4000, + revenue: 12000, + netProfit: 8000, + }, + { + listName: "Pre-Foreclosure", + investmentCost: 4500, + revenue: 14000, + netProfit: 9500, + }, + { + listName: "Tired Landlord", + investmentCost: 2500, + revenue: 8000, + netProfit: 5500, + }, + { + listName: "Absentee", + investmentCost: 3500, + revenue: 11000, + netProfit: 7500, + }, + { + listName: "Lien", + investmentCost: 2000, + revenue: 7000, + netProfit: 5000, + }, + { + listName: "Vacant", + investmentCost: 3000, + revenue: 9500, + netProfit: 6500, + }, + { + listName: "Inherited", + investmentCost: 4000, + revenue: 10500, + netProfit: 6500, + }, + { + listName: "JV", + investmentCost: 1500, + revenue: 6000, + netProfit: 4500, + }, +]; diff --git a/src/utils/mockData/dataVisualizations/marketShareData.js b/src/utils/mockData/dataVisualizations/marketShareData.js new file mode 100644 index 0000000..7a384c4 --- /dev/null +++ b/src/utils/mockData/dataVisualizations/marketShareData.js @@ -0,0 +1,11 @@ +export const mockMarketPopulations = [ + { name: "Atlanta", population: 500 }, + { name: "Charlotte", population: 850 }, + { name: "Columbus", population: 900 }, + { name: "Indianapolis", population: 700 }, + { name: "Jacksonville", population: 1500 }, + { name: "Las Vegas", population: 600 }, + { name: "Memphis", population: 650 }, + { name: "Philadelphia", population: 1600 }, + { name: "Tampa", population: 400 }, +]; diff --git a/src/utils/mockData/dataVisualizations/mockBubbleChartData.js b/src/utils/mockData/dataVisualizations/mockBubbleChartData.js new file mode 100644 index 0000000..4e5675b --- /dev/null +++ b/src/utils/mockData/dataVisualizations/mockBubbleChartData.js @@ -0,0 +1,542 @@ +export const mockBubbleChartData = [ + { + date: "2022-01-05", + market: "Columbus", + dealsClosed: 3, + }, + { + date: "2022-01-06", + market: "Tampa", + dealsClosed: 9, + }, + { + date: "2022-01-07", + market: "Philadelphia", + dealsClosed: 22, + }, + { + date: "2022-01-08", + market: "Memphis", + dealsClosed: 2, + }, + { + date: "2022-01-09", + market: "Indianapolis", + dealsClosed: 18, + }, + { + date: "2022-01-13", + market: "Jacksonville", + dealsClosed: 23, + }, + { + date: "2022-01-15", + market: "Atlanta", + dealsClosed: 9, + }, + { + date: "2022-01-16", + market: "Las Vegas", + dealsClosed: 3, + }, + { + date: "2022-01-22", + market: "Charlotte", + dealsClosed: 14, + }, + { + date: "2022-02-02", + market: "Columbus", + dealsClosed: 22, + }, + { + date: "2022-02-02", + market: "Jacksonville", + dealsClosed: 7, + }, + { + date: "2022-02-12", + market: "Memphis", + dealsClosed: 5, + }, + { + date: "2022-02-15", + market: "Indianapolis", + dealsClosed: 19, + }, + { + date: "2022-02-16", + market: "Tampa", + dealsClosed: 14, + }, + { + date: "2022-02-21", + market: "Atlanta", + dealsClosed: 21, + }, + { + date: "2022-02-25", + market: "Philadelphia", + dealsClosed: 22, + }, + { + date: "2022-02-26", + market: "Las Vegas", + dealsClosed: 23, + }, + { + date: "2022-02-27", + market: "Charlotte", + dealsClosed: 14, + }, + { + date: "2022-03-03", + market: "Columbus", + dealsClosed: 29, + }, + { + date: "2022-03-07", + market: "Memphis", + dealsClosed: 22, + }, + { + date: "2022-03-11", + market: "Charlotte", + dealsClosed: 28, + }, + { + date: "2022-03-13", + market: "Jacksonville", + dealsClosed: 17, + }, + { + date: "2022-03-13", + market: "Las Vegas", + dealsClosed: 18, + }, + { + date: "2022-03-14", + market: "Tampa", + dealsClosed: 11, + }, + { + date: "2022-03-15", + market: "Philadelphia", + dealsClosed: 24, + }, + { + date: "2022-03-22", + market: "Atlanta", + dealsClosed: 16, + }, + { + date: "2022-03-24", + market: "Indianapolis", + dealsClosed: 3, + }, + { + date: "2022-04-01", + market: "Las Vegas", + dealsClosed: 26, + }, + { + date: "2022-04-02", + market: "Philadelphia", + dealsClosed: 15, + }, + { + date: "2022-04-09", + market: "Jacksonville", + dealsClosed: 28, + }, + { + date: "2022-04-18", + market: "Charlotte", + dealsClosed: 30, + }, + { + date: "2022-04-20", + market: "Columbus", + dealsClosed: 27, + }, + { + date: "2022-04-20", + market: "Memphis", + dealsClosed: 29, + }, + { + date: "2022-04-22", + market: "Atlanta", + dealsClosed: 2, + }, + { + date: "2022-04-24", + market: "Indianapolis", + dealsClosed: 26, + }, + { + date: "2022-04-28", + market: "Tampa", + dealsClosed: 22, + }, + { + date: "2022-05-02", + market: "Indianapolis", + dealsClosed: 22, + }, + { + date: "2022-05-06", + market: "Las Vegas", + dealsClosed: 27, + }, + { + date: "2022-05-10", + market: "Charlotte", + dealsClosed: 26, + }, + { + date: "2022-05-11", + market: "Jacksonville", + dealsClosed: 15, + }, + { + date: "2022-05-19", + market: "Columbus", + dealsClosed: 17, + }, + { + date: "2022-05-21", + market: "Tampa", + dealsClosed: 11, + }, + { + date: "2022-05-23", + market: "Memphis", + dealsClosed: 11, + }, + { + date: "2022-05-25", + market: "Atlanta", + dealsClosed: 21, + }, + { + date: "2022-05-26", + market: "Philadelphia", + dealsClosed: 27, + }, + { + date: "2022-06-09", + market: "Jacksonville", + dealsClosed: 17, + }, + { + date: "2022-06-10", + market: "Indianapolis", + dealsClosed: 8, + }, + { + date: "2022-06-16", + market: "Columbus", + dealsClosed: 23, + }, + { + date: "2022-06-16", + market: "Las Vegas", + dealsClosed: 21, + }, + { + date: "2022-06-21", + market: "Memphis", + dealsClosed: 19, + }, + { + date: "2022-06-24", + market: "Charlotte", + dealsClosed: 2, + }, + { + date: "2022-06-27", + market: "Atlanta", + dealsClosed: 9, + }, + { + date: "2022-06-27", + market: "Tampa", + dealsClosed: 9, + }, + { + date: "2022-06-28", + market: "Philadelphia", + dealsClosed: 9, + }, + { + date: "2022-07-03", + market: "Jacksonville", + dealsClosed: 4, + }, + { + date: "2022-07-04", + market: "Atlanta", + dealsClosed: 17, + }, + { + date: "2022-07-04", + market: "Memphis", + dealsClosed: 13, + }, + { + date: "2022-07-08", + market: "Philadelphia", + dealsClosed: 16, + }, + { + date: "2022-07-10", + market: "Charlotte", + dealsClosed: 29, + }, + { + date: "2022-07-15", + market: "Tampa", + dealsClosed: 29, + }, + { + date: "2022-07-19", + market: "Indianapolis", + dealsClosed: 9, + }, + { + date: "2022-07-20", + market: "Columbus", + dealsClosed: 2, + }, + { + date: "2022-07-26", + market: "Las Vegas", + dealsClosed: 15, + }, + { + date: "2022-08-01", + market: "Columbus", + dealsClosed: 13, + }, + { + date: "2022-08-02", + market: "Las Vegas", + dealsClosed: 15, + }, + { + date: "2022-08-06", + market: "Philadelphia", + dealsClosed: 12, + }, + { + date: "2022-08-07", + market: "Tampa", + dealsClosed: 22, + }, + { + date: "2022-08-09", + market: "Jacksonville", + dealsClosed: 30, + }, + { + date: "2022-08-11", + market: "Atlanta", + dealsClosed: 14, + }, + { + date: "2022-08-21", + market: "Indianapolis", + dealsClosed: 29, + }, + { + date: "2022-08-22", + market: "Charlotte", + dealsClosed: 19, + }, + { + date: "2022-08-27", + market: "Memphis", + dealsClosed: 11, + }, + { + date: "2022-09-02", + market: "Las Vegas", + dealsClosed: 4, + }, + { + date: "2022-09-05", + market: "Atlanta", + dealsClosed: 14, + }, + { + date: "2022-09-06", + market: "Jacksonville", + dealsClosed: 30, + }, + { + date: "2022-09-07", + market: "Memphis", + dealsClosed: 6, + }, + { + date: "2022-09-08", + market: "Tampa", + dealsClosed: 10, + }, + { + date: "2022-09-10", + market: "Philadelphia", + dealsClosed: 7, + }, + { + date: "2022-09-12", + market: "Columbus", + dealsClosed: 16, + }, + { + date: "2022-09-17", + market: "Indianapolis", + dealsClosed: 27, + }, + { + date: "2022-09-24", + market: "Charlotte", + dealsClosed: 28, + }, + { + date: "2022-10-04", + market: "Columbus", + dealsClosed: 6, + }, + { + date: "2022-10-08", + market: "Jacksonville", + dealsClosed: 5, + }, + { + date: "2022-10-08", + market: "Memphis", + dealsClosed: 30, + }, + { + date: "2022-10-15", + market: "Tampa", + dealsClosed: 3, + }, + { + date: "2022-10-19", + market: "Philadelphia", + dealsClosed: 26, + }, + { + date: "2022-10-22", + market: "Charlotte", + dealsClosed: 26, + }, + { + date: "2022-10-22", + market: "Las Vegas", + dealsClosed: 3, + }, + { + date: "2022-10-24", + market: "Indianapolis", + dealsClosed: 10, + }, + { + date: "2022-10-28", + market: "Atlanta", + dealsClosed: 11, + }, + { + date: "2022-11-07", + market: "Columbus", + dealsClosed: 29, + }, + { + date: "2022-11-11", + market: "Charlotte", + dealsClosed: 6, + }, + { + date: "2022-11-12", + market: "Indianapolis", + dealsClosed: 9, + }, + { + date: "2022-11-15", + market: "Jacksonville", + dealsClosed: 2, + }, + { + date: "2022-11-15", + market: "Tampa", + dealsClosed: 4, + }, + { + date: "2022-11-16", + market: "Las Vegas", + dealsClosed: 5, + }, + { + date: "2022-11-18", + market: "Memphis", + dealsClosed: 18, + }, + { + date: "2022-11-19", + market: "Atlanta", + dealsClosed: 30, + }, + { + date: "2022-11-21", + market: "Philadelphia", + dealsClosed: 8, + }, + { + date: "2022-12-02", + market: "Indianapolis", + dealsClosed: 23, + }, + { + date: "2022-12-03", + market: "Columbus", + dealsClosed: 16, + }, + { + date: "2022-12-07", + market: "Charlotte", + dealsClosed: 25, + }, + { + date: "2022-12-07", + market: "Jacksonville", + dealsClosed: 1, + }, + { + date: "2022-12-13", + market: "Tampa", + dealsClosed: 23, + }, + { + date: "2022-12-17", + market: "Atlanta", + dealsClosed: 12, + }, + { + date: "2022-12-17", + market: "Philadelphia", + dealsClosed: 22, + }, + { + date: "2022-12-20", + market: "Las Vegas", + dealsClosed: 5, + }, + { + date: "2022-12-23", + market: "Memphis", + dealsClosed: 5, + }, +]; diff --git a/src/utils/mockData/dataVisualizations/radarChart.js b/src/utils/mockData/dataVisualizations/radarChart.js new file mode 100644 index 0000000..9221927 --- /dev/null +++ b/src/utils/mockData/dataVisualizations/radarChart.js @@ -0,0 +1,62 @@ +export const mockSalesRadarChart = [ + { + subject: "Probate", + A: 55, + B: 77, + fullMark: 100, + }, + { + subject: "Unknown Equity", + A: 82, + B: 30, + fullMark: 100, + }, + { + subject: "Tax Delinquent", + A: 68, + B: 75, + fullMark: 100, + }, + { + subject: "Pre-Foreclosure", + A: 45, + B: 23, + fullMark: 100, + }, + { + subject: "Tired Landlord", + A: 84, + B: 27, + fullMark: 100, + }, + { + subject: "Absentee", + A: 71, + B: 55, + fullMark: 100, + }, + { + subject: "JV", + A: 25, + B: 39, + fullMark: 100, + }, + { + subject: "Inherited", + A: 64, + B: 40, + fullMark: 100, + }, + { + subject: "Vacant", + A: 71, + B: 59, + fullMark: 100, + }, + { + subject: "Lien", + A: 71, + B: 57, + fullMark: 100, + }, +]; diff --git a/src/utils/mockData/dataVisualizations/singleValueCard.js b/src/utils/mockData/dataVisualizations/singleValueCard.js new file mode 100644 index 0000000..a28a0fc --- /dev/null +++ b/src/utils/mockData/dataVisualizations/singleValueCard.js @@ -0,0 +1,17 @@ +// Include also cost per lead, cost per contract, average deal size, and time to close metrics +export const mockSingleValueCardData = [ + { name: "Gross Revenue", value: "$1,204,000" }, + { name: "Net Profit", value: "$775,522" }, + { name: "Deals Closed", value: 15 }, + { name: "Agreements Signed", value: 15 }, + { name: "Leads Generated", value: 30 }, + { name: "Sales Calls Made", value: 67 }, + { name: "Offer Acceptance Rate", value: "4%" }, + { name: "Leads Generated", value: 30 }, + { name: "Conversations to Agreement", value: "30" }, + { name: "Follow Up Calls Made", value: 67 }, + { name: "Cost Per Lead", value: 60 }, + { name: "Average Deal Size", value: "$17,000" }, + { name: "Cost Per Contract", value: 103 }, + { name: "AVG Time to Close (days)", value: 30 }, +]; diff --git a/src/utils/mockData/mockData.js b/src/utils/mockData/mockData.js new file mode 100644 index 0000000..841e8bc --- /dev/null +++ b/src/utils/mockData/mockData.js @@ -0,0 +1,1606 @@ +export const mockFileData = `FirstName,LastName,MailingAddress,MailingCity,MailingState,MailingZip,PropertyAddress,PropertyCity,PropertyState,PropertyZip +Jane,Doe,123 Fake St,Faketown,FA,12345,321 Real Rd,Realtown,RE,54321 +John,Smith,555 Broadway Ave,New York,NY,10010,777 Country Rd,Townsville,TS,77777`; + +export const mockLeadsData = [ + { + id: 1, + name: "Jane Jones", + phone: "940-205-1041", + email: "jane.jones@example.com", + address: "598 Maple Dr, Charlotte, 36640", + status: "New Lead", + lastContactDate: "2023-10-24", + nextFollowUpDate: "2023-06-17", + volumeOffersSent: 0, + mao: "N/A", + offerPrice: "N/A", + homeCondition: "Okay", + dateOfferSent: "N/A", + market: "Las Vegas", + }, + { + id: 2, + name: "Laura Brown", + phone: "493-791-5441", + email: "laura.brown@example.com", + address: "217 Oak St, Tampa, 38979", + status: "Closed", + lastContactDate: "2023-05-23", + nextFollowUpDate: "2023-09-17", + volumeOffersSent: 5, + mao: 226981, + offerPrice: 64266, + homeCondition: "Great", + dateOfferSent: "2023-03-27", + market: "Atlanta", + }, + { + id: 3, + name: "Daniel Smith", + phone: "322-399-2817", + email: "daniel.smith@example.com", + address: "760 Elm St, Tampa, 11582", + status: "Hot", + lastContactDate: "2023-09-28", + nextFollowUpDate: "2023-06-18", + volumeOffersSent: 6, + mao: 155813, + offerPrice: 182968, + homeCondition: "Poor", + dateOfferSent: "2023-05-14", + market: "Memphis", + }, + { + id: 4, + name: "Olivia Smith", + phone: "867-972-6945", + email: "olivia.smith@example.com", + address: "153 Walnut St, Las Vegas, 73611", + status: "Contracted", + lastContactDate: "2023-02-03", + nextFollowUpDate: "2023-02-21", + volumeOffersSent: 2, + mao: 100939, + offerPrice: 65115, + homeCondition: "Great", + dateOfferSent: "2023-01-02", + market: "Indianapolis", + }, + { + id: 5, + name: "Olivia Martinez", + phone: "101-766-5694", + email: "olivia.martinez@example.com", + address: "537 Main St, Charlotte, 11808", + status: "Closed", + lastContactDate: "2023-02-25", + nextFollowUpDate: "2023-10-07", + volumeOffersSent: 6, + mao: 53229, + offerPrice: 66864, + homeCondition: "Okay", + dateOfferSent: "2023-06-04", + market: "Tampa", + }, + { + id: 6, + name: "Laura Garcia", + phone: "967-483-7759", + email: "laura.garcia@example.com", + address: "503 Oak St, Philadelphia, 63402", + status: "Contracted", + lastContactDate: "2023-03-16", + nextFollowUpDate: "2023-05-12", + volumeOffersSent: 6, + mao: 172414, + offerPrice: 203556, + homeCondition: "Poor", + dateOfferSent: "2023-10-03", + market: "Columbus", + }, + { + id: 7, + name: "Max Lee", + phone: "576-747-5912", + email: "max.lee@example.com", + address: "924 Pine Rd, Atlanta, 97377", + status: "New Lead", + lastContactDate: "2023-09-07", + nextFollowUpDate: "2023-08-19", + volumeOffersSent: 8, + mao: 118785, + offerPrice: 208667, + homeCondition: "Great", + dateOfferSent: "2023-06-05", + market: "Indianapolis", + }, + { + id: 8, + name: "Jane Davis", + phone: "991-511-9932", + email: "jane.davis@example.com", + address: "512 Elm St, Memphis, 67992", + status: "Closed", + lastContactDate: "2023-07-05", + nextFollowUpDate: "2023-03-02", + volumeOffersSent: 0, + mao: "N/A", + offerPrice: "N/A", + homeCondition: "Okay", + dateOfferSent: "N/A", + market: "Columbus", + }, + { + id: 9, + name: "Olivia Garcia", + phone: "783-360-1472", + email: "olivia.garcia@example.com", + address: "657 Pine Rd, Memphis, 12039", + status: "New Lead", + lastContactDate: "2023-06-17", + nextFollowUpDate: "2023-01-11", + volumeOffersSent: 0, + mao: "N/A", + offerPrice: "N/A", + homeCondition: "Great", + dateOfferSent: "N/A", + market: "Philadelphia", + }, + { + id: 10, + name: "Michael Davis", + phone: "374-614-4589", + email: "michael.davis@example.com", + address: "115 Cedar Ave, Columbus, 70117", + status: "PN Hot", + lastContactDate: "2023-11-24", + nextFollowUpDate: "2023-11-12", + volumeOffersSent: 8, + mao: 239054, + offerPrice: 198570, + homeCondition: "Great", + dateOfferSent: "2023-09-19", + market: "Indianapolis", + }, + { + id: 11, + name: "Max Davis", + phone: "203-324-9931", + email: "max.davis@example.com", + address: "911 Maple Dr, Jacksonville, 12390", + status: "PN Hot", + lastContactDate: "2023-04-21", + nextFollowUpDate: "2023-08-05", + volumeOffersSent: 5, + mao: 88659, + offerPrice: 103711, + homeCondition: "Great", + dateOfferSent: "2023-07-10", + market: "Tampa", + }, + { + id: 12, + name: "Jessica Smith", + phone: "190-527-5993", + email: "jessica.smith@example.com", + address: "831 Cedar Ave, Charlotte, 60562", + status: "Contracted", + lastContactDate: "2023-12-07", + nextFollowUpDate: "2023-07-21", + volumeOffersSent: 8, + mao: 229898, + offerPrice: 215329, + homeCondition: "Great", + dateOfferSent: "2023-06-27", + market: "Jacksonville", + }, + { + id: 13, + name: "Olivia Jones", + phone: "526-673-8224", + email: "olivia.jones@example.com", + address: "763 Oakwood Blvd, Columbus, 35966", + status: "Closed", + lastContactDate: "2023-01-20", + nextFollowUpDate: "2023-02-12", + volumeOffersSent: 6, + mao: 84111, + offerPrice: 175880, + homeCondition: "Okay", + dateOfferSent: "2023-07-23", + market: "Philadelphia", + }, + { + id: 14, + name: "John Lee", + phone: "560-230-9397", + email: "john.lee@example.com", + address: "928 Oakwood Blvd, Atlanta, 37314", + status: "Contracted", + lastContactDate: "2023-04-17", + nextFollowUpDate: "2023-06-27", + volumeOffersSent: 10, + mao: 267609, + offerPrice: 212802, + homeCondition: "Poor", + dateOfferSent: "2023-12-09", + market: "Jacksonville", + }, + { + id: 15, + name: "Laura Doe", + phone: "110-543-7680", + email: "laura.doe@example.com", + address: "971 Oakwood Blvd, Jacksonville, 48369", + status: "PN Hot", + lastContactDate: "2023-12-05", + nextFollowUpDate: "2023-05-19", + volumeOffersSent: 3, + mao: 113858, + offerPrice: 109823, + homeCondition: "Great", + dateOfferSent: "2023-06-04", + market: "Las Vegas", + }, + { + id: 16, + name: "Jessica Brown", + phone: "247-696-6491", + email: "jessica.brown@example.com", + address: "786 Pine Rd, Tampa, 19072", + status: "PN Hot", + lastContactDate: "2023-12-08", + nextFollowUpDate: "2023-03-17", + volumeOffersSent: 1, + mao: 110835, + offerPrice: 142223, + homeCondition: "Great", + dateOfferSent: "2023-04-20", + market: "Philadelphia", + }, + { + id: 17, + name: "Charlie Martinez", + phone: "962-220-5741", + email: "charlie.martinez@example.com", + address: "651 Elm St, Atlanta, 82911", + status: "Closed", + lastContactDate: "2023-02-16", + nextFollowUpDate: "2023-03-22", + volumeOffersSent: 3, + mao: 152596, + offerPrice: 61257, + homeCondition: "Poor", + dateOfferSent: "2023-10-12", + market: "Atlanta", + }, + { + id: 18, + name: "Jessica Lee", + phone: "700-317-6001", + email: "jessica.lee@example.com", + address: "881 Pine Rd, Charlotte, 13899", + status: "PN Hot", + lastContactDate: "2023-11-15", + nextFollowUpDate: "2023-03-16", + volumeOffersSent: 10, + mao: 59811, + offerPrice: 189382, + homeCondition: "Poor", + dateOfferSent: "2023-09-22", + market: "Indianapolis", + }, + { + id: 19, + name: "Laura Garcia", + phone: "352-867-6946", + email: "laura.garcia@example.com", + address: "376 Cedar Ave, Philadelphia, 64985", + status: "Contracted", + lastContactDate: "2023-11-22", + nextFollowUpDate: "2023-01-16", + volumeOffersSent: 8, + mao: 182427, + offerPrice: 48839, + homeCondition: "Okay", + dateOfferSent: "2023-05-26", + market: "Memphis", + }, + { + id: 20, + name: "Emily Martinez", + phone: "917-373-3738", + email: "emily.martinez@example.com", + address: "900 Elm St, Charlotte, 23416", + status: "PN Hot", + lastContactDate: "2023-05-22", + nextFollowUpDate: "2023-04-03", + volumeOffersSent: 0, + mao: "N/A", + offerPrice: "N/A", + homeCondition: "Poor", + dateOfferSent: "N/A", + market: "Atlanta", + }, + { + id: 21, + name: "Olivia Lewis", + phone: "438-810-8421", + email: "olivia.lewis@example.com", + address: "288 Maple Dr, Philadelphia, 71721", + status: "Closed", + lastContactDate: "2023-06-24", + nextFollowUpDate: "2023-08-25", + volumeOffersSent: 5, + mao: 225238, + offerPrice: 195176, + homeCondition: "Poor", + dateOfferSent: "2023-01-19", + market: "Columbus", + }, + { + id: 22, + name: "Max Jones", + phone: "511-242-3867", + email: "max.jones@example.com", + address: "817 Birch Ln, Jacksonville, 40487", + status: "Closed", + lastContactDate: "2023-12-23", + nextFollowUpDate: "2023-03-16", + volumeOffersSent: 0, + mao: "N/A", + offerPrice: "N/A", + homeCondition: "Okay", + dateOfferSent: "N/A", + market: "Las Vegas", + }, + { + id: 23, + name: "Olivia Jones", + phone: "334-497-3095", + email: "olivia.jones@example.com", + address: "345 Maple Dr, Atlanta, 13932", + status: "PN Hot", + lastContactDate: "2023-12-17", + nextFollowUpDate: "2023-05-22", + volumeOffersSent: 7, + mao: 167722, + offerPrice: 221025, + homeCondition: "Poor", + dateOfferSent: "2023-04-21", + market: "Jacksonville", + }, + { + id: 24, + name: "Jane Wilson", + phone: "150-173-8086", + email: "jane.wilson@example.com", + address: "928 Elm St, Tampa, 83159", + status: "New Lead", + lastContactDate: "2023-09-02", + nextFollowUpDate: "2023-05-12", + volumeOffersSent: 8, + mao: 210882, + offerPrice: 89947, + homeCondition: "Great", + dateOfferSent: "2023-04-17", + market: "Tampa", + }, + { + id: 25, + name: "Charlie Jones", + phone: "307-594-5754", + email: "charlie.jones@example.com", + address: "707 Birch Ln, Charlotte, 22087", + status: "PN Hot", + lastContactDate: "2023-01-22", + nextFollowUpDate: "2023-05-14", + volumeOffersSent: 5, + mao: 75698, + offerPrice: 93484, + homeCondition: "Poor", + dateOfferSent: "2023-07-01", + market: "Tampa", + }, + { + id: 26, + name: "Jessica Davis", + phone: "224-752-8927", + email: "jessica.davis@example.com", + address: "409 Birch Ln, Jacksonville, 96130", + status: "Nurture", + lastContactDate: "2023-04-05", + nextFollowUpDate: "2023-04-12", + volumeOffersSent: 4, + mao: 140621, + offerPrice: 199199, + homeCondition: "Great", + dateOfferSent: "2023-05-28", + market: "Las Vegas", + }, + { + id: 27, + name: "Jessica Martinez", + phone: "778-631-4260", + email: "jessica.martinez@example.com", + address: "848 Elm St, Atlanta, 24545", + status: "New Lead", + lastContactDate: "2023-06-26", + nextFollowUpDate: "2023-09-15", + volumeOffersSent: 2, + mao: 97316, + offerPrice: 44536, + homeCondition: "Poor", + dateOfferSent: "2023-09-04", + market: "Jacksonville", + }, + { + id: 28, + name: "Charlie Davis", + phone: "745-905-9813", + email: "charlie.davis@example.com", + address: "654 Main St, Jacksonville, 63381", + status: "Contracted", + lastContactDate: "2023-03-16", + nextFollowUpDate: "2023-08-23", + volumeOffersSent: 0, + mao: "N/A", + offerPrice: "N/A", + homeCondition: "Poor", + dateOfferSent: "N/A", + market: "Tampa", + }, + { + id: 29, + name: "Daniel Martinez", + phone: "341-599-7029", + email: "daniel.martinez@example.com", + address: "734 Ash St, Tampa, 74256", + status: "Contracted", + lastContactDate: "2023-02-10", + nextFollowUpDate: "2023-11-04", + volumeOffersSent: 9, + mao: 95204, + offerPrice: 124682, + homeCondition: "Poor", + dateOfferSent: "2023-02-13", + market: "Atlanta", + }, + { + id: 30, + name: "Emily Davis", + phone: "275-442-3289", + email: "emily.davis@example.com", + address: "802 Elm St, Atlanta, 71925", + status: "Nurture", + lastContactDate: "2023-08-26", + nextFollowUpDate: "2023-07-16", + volumeOffersSent: 9, + mao: 52386, + offerPrice: 211771, + homeCondition: "Okay", + dateOfferSent: "2023-05-23", + market: "Charlotte", + }, + { + id: 31, + name: "Jane Wilson", + phone: "943-554-5663", + email: "jane.wilson@example.com", + address: "717 Cedar Ave, Jacksonville, 69115", + status: "Contracted", + lastContactDate: "2023-09-22", + nextFollowUpDate: "2023-09-01", + volumeOffersSent: 5, + mao: 290855, + offerPrice: 214714, + homeCondition: "Okay", + dateOfferSent: "2023-05-16", + market: "Atlanta", + }, + { + id: 32, + name: "Olivia Lee", + phone: "320-167-9313", + email: "olivia.lee@example.com", + address: "561 Elm St, Indianapolis, 34608", + status: "Nurture", + lastContactDate: "2023-07-12", + nextFollowUpDate: "2023-03-04", + volumeOffersSent: 2, + mao: 193986, + offerPrice: 94876, + homeCondition: "Okay", + dateOfferSent: "2023-03-07", + market: "Columbus", + }, + { + id: 33, + name: "Jane Smith", + phone: "626-992-3794", + email: "jane.smith@example.com", + address: "297 Pine Rd, Indianapolis, 61586", + status: "PN Hot", + lastContactDate: "2023-04-03", + nextFollowUpDate: "2023-03-20", + volumeOffersSent: 5, + mao: 199791, + offerPrice: 57235, + homeCondition: "Poor", + dateOfferSent: "2023-08-08", + market: "Jacksonville", + }, + { + id: 34, + name: "Max Doe", + phone: "445-273-4822", + email: "max.doe@example.com", + address: "229 Walnut St, Columbus, 76251", + status: "PN Hot", + lastContactDate: "2023-04-10", + nextFollowUpDate: "2023-11-17", + volumeOffersSent: 5, + mao: 185693, + offerPrice: 43603, + homeCondition: "Poor", + dateOfferSent: "2023-12-01", + market: "Philadelphia", + }, + { + id: 35, + name: "John Wilson", + phone: "749-769-1809", + email: "john.wilson@example.com", + address: "602 Oak St, Philadelphia, 66344", + status: "Hot", + lastContactDate: "2023-09-05", + nextFollowUpDate: "2023-10-15", + volumeOffersSent: 8, + mao: 102589, + offerPrice: 217531, + homeCondition: "Poor", + dateOfferSent: "2023-10-03", + market: "Las Vegas", + }, + { + id: 36, + name: "Michael Jones", + phone: "381-422-1608", + email: "michael.jones@example.com", + address: "762 Pine Rd, Jacksonville, 54030", + status: "New Lead", + lastContactDate: "2023-01-10", + nextFollowUpDate: "2023-11-12", + volumeOffersSent: 8, + mao: 150627, + offerPrice: 224920, + homeCondition: "Okay", + dateOfferSent: "2023-11-09", + market: "Charlotte", + }, + { + id: 37, + name: "Emily Wilson", + phone: "627-725-5719", + email: "emily.wilson@example.com", + address: "559 Oak St, Philadelphia, 73872", + status: "Hot", + lastContactDate: "2023-11-03", + nextFollowUpDate: "2023-07-28", + volumeOffersSent: 9, + mao: 93224, + offerPrice: 82974, + homeCondition: "Great", + dateOfferSent: "2023-03-15", + market: "Tampa", + }, + { + id: 38, + name: "John Wilson", + phone: "162-943-4849", + email: "john.wilson@example.com", + address: "513 Birch Ln, Charlotte, 59874", + status: "Contracted", + lastContactDate: "2023-11-15", + nextFollowUpDate: "2023-07-16", + volumeOffersSent: 9, + mao: 127273, + offerPrice: 150040, + homeCondition: "Okay", + dateOfferSent: "2023-11-05", + market: "Indianapolis", + }, + { + id: 39, + name: "Max Brown", + phone: "693-239-7899", + email: "max.brown@example.com", + address: "234 Maple Dr, Atlanta, 47940", + status: "Nurture", + lastContactDate: "2023-08-06", + nextFollowUpDate: "2023-11-25", + volumeOffersSent: 6, + mao: 226223, + offerPrice: 42612, + homeCondition: "Great", + dateOfferSent: "2023-01-22", + market: "Memphis", + }, + { + id: 40, + name: "John Brown", + phone: "942-531-7512", + email: "john.brown@example.com", + address: "311 Ash St, Indianapolis, 99415", + status: "Nurture", + lastContactDate: "2023-12-27", + nextFollowUpDate: "2023-03-11", + volumeOffersSent: 3, + mao: 283261, + offerPrice: 121558, + homeCondition: "Okay", + dateOfferSent: "2023-06-16", + market: "Charlotte", + }, + { + id: 41, + name: "Daniel Smith", + phone: "127-339-6876", + email: "daniel.smith@example.com", + address: "458 Maple Dr, Tampa, 45330", + status: "Hot", + lastContactDate: "2023-01-03", + nextFollowUpDate: "2023-05-02", + volumeOffersSent: 10, + mao: 98435, + offerPrice: 237976, + homeCondition: "Okay", + dateOfferSent: "2023-02-14", + market: "Charlotte", + }, + { + id: 42, + name: "Charlie Wilson", + phone: "993-410-6418", + email: "charlie.wilson@example.com", + address: "532 Oakwood Blvd, Tampa, 33426", + status: "Closed", + lastContactDate: "2023-11-16", + nextFollowUpDate: "2023-04-15", + volumeOffersSent: 3, + mao: 55934, + offerPrice: 192297, + homeCondition: "Great", + dateOfferSent: "2023-09-24", + market: "Philadelphia", + }, + { + id: 43, + name: "Michael Wilson", + phone: "646-866-1294", + email: "michael.wilson@example.com", + address: "385 Oak St, Tampa, 99155", + status: "Contracted", + lastContactDate: "2023-09-01", + nextFollowUpDate: "2023-07-15", + volumeOffersSent: 2, + mao: 288752, + offerPrice: 199626, + homeCondition: "Okay", + dateOfferSent: "2023-12-01", + market: "Indianapolis", + }, + { + id: 44, + name: "Jessica Brown", + phone: "570-961-2954", + email: "jessica.brown@example.com", + address: "305 Maple Dr, Tampa, 92136", + status: "PN Hot", + lastContactDate: "2023-04-17", + nextFollowUpDate: "2023-09-18", + volumeOffersSent: 6, + mao: 154320, + offerPrice: 65472, + homeCondition: "Okay", + dateOfferSent: "2023-02-13", + market: "Charlotte", + }, + { + id: 45, + name: "John Garcia", + phone: "672-264-6947", + email: "john.garcia@example.com", + address: "994 Maple Dr, Charlotte, 76307", + status: "PN Hot", + lastContactDate: "2023-10-05", + nextFollowUpDate: "2023-08-27", + volumeOffersSent: 9, + mao: 202084, + offerPrice: 190146, + homeCondition: "Great", + dateOfferSent: "2023-02-16", + market: "Tampa", + }, + { + id: 46, + name: "Laura Smith", + phone: "648-828-8621", + email: "laura.smith@example.com", + address: "158 Walnut St, Tampa, 29151", + status: "PN Hot", + lastContactDate: "2023-01-08", + nextFollowUpDate: "2023-02-02", + volumeOffersSent: 4, + mao: 109833, + offerPrice: 230699, + homeCondition: "Great", + dateOfferSent: "2023-08-22", + market: "Columbus", + }, + { + id: 47, + name: "Max Brown", + phone: "491-298-4184", + email: "max.brown@example.com", + address: "523 Main St, Philadelphia, 82420", + status: "Nurture", + lastContactDate: "2023-06-23", + nextFollowUpDate: "2023-01-13", + volumeOffersSent: 10, + mao: 212598, + offerPrice: 81170, + homeCondition: "Poor", + dateOfferSent: "2023-12-08", + market: "Columbus", + }, + { + id: 48, + name: "Laura Garcia", + phone: "559-691-5377", + email: "laura.garcia@example.com", + address: "306 Main St, Columbus, 69735", + status: "Nurture", + lastContactDate: "2023-12-09", + nextFollowUpDate: "2023-05-13", + volumeOffersSent: 4, + mao: 213636, + offerPrice: 68441, + homeCondition: "Okay", + dateOfferSent: "2023-10-15", + market: "Columbus", + }, + { + id: 49, + name: "Emily Martinez", + phone: "273-702-1668", + email: "emily.martinez@example.com", + address: "692 Cedar Ave, Columbus, 67855", + status: "Contracted", + lastContactDate: "2023-02-24", + nextFollowUpDate: "2023-11-08", + volumeOffersSent: 4, + mao: 212400, + offerPrice: 151218, + homeCondition: "Poor", + dateOfferSent: "2023-11-25", + market: "Jacksonville", + }, + { + id: 50, + name: "Charlie Lee", + phone: "771-496-7909", + email: "charlie.lee@example.com", + address: "644 Cedar Ave, Indianapolis, 69729", + status: "PN Hot", + lastContactDate: "2023-07-25", + nextFollowUpDate: "2023-03-23", + volumeOffersSent: 6, + mao: 94854, + offerPrice: 90771, + homeCondition: "Okay", + dateOfferSent: "2023-02-26", + market: "Charlotte", + }, + { + id: 51, + name: "Laura Brown", + phone: "280-843-4758", + email: "laura.brown@example.com", + address: "508 Cedar Ave, Indianapolis, 62594", + status: "New Lead", + lastContactDate: "2023-04-22", + nextFollowUpDate: "2023-12-22", + volumeOffersSent: 9, + mao: 92915, + offerPrice: 170637, + homeCondition: "Okay", + dateOfferSent: "2023-10-22", + market: "Jacksonville", + }, + { + id: 52, + name: "Emily Wilson", + phone: "365-131-8223", + email: "emily.wilson@example.com", + address: "958 Oak St, Las Vegas, 14168", + status: "Closed", + lastContactDate: "2023-10-08", + nextFollowUpDate: "2023-12-17", + volumeOffersSent: 5, + mao: 119522, + offerPrice: 147951, + homeCondition: "Poor", + dateOfferSent: "2023-06-26", + market: "Atlanta", + }, + { + id: 53, + name: "Jessica Lewis", + phone: "862-264-5375", + email: "jessica.lewis@example.com", + address: "790 Cedar Ave, Charlotte, 84513", + status: "PN Hot", + lastContactDate: "2023-10-27", + nextFollowUpDate: "2023-08-10", + volumeOffersSent: 5, + mao: 140870, + offerPrice: 157732, + homeCondition: "Great", + dateOfferSent: "2023-02-08", + market: "Memphis", + }, + { + id: 54, + name: "Michael Smith", + phone: "750-293-1700", + email: "michael.smith@example.com", + address: "545 Pine Rd, Columbus, 24615", + status: "New Lead", + lastContactDate: "2023-11-09", + nextFollowUpDate: "2023-07-07", + volumeOffersSent: 6, + mao: 179033, + offerPrice: 214880, + homeCondition: "Great", + dateOfferSent: "2023-12-12", + market: "Tampa", + }, + { + id: 55, + name: "Max Davis", + phone: "691-223-9963", + email: "max.davis@example.com", + address: "150 Elm St, Jacksonville, 61057", + status: "New Lead", + lastContactDate: "2023-06-26", + nextFollowUpDate: "2023-08-23", + volumeOffersSent: 10, + mao: 79711, + offerPrice: 53974, + homeCondition: "Poor", + dateOfferSent: "2023-07-05", + market: "Jacksonville", + }, + { + id: 56, + name: "Charlie Jones", + phone: "964-239-2506", + email: "charlie.jones@example.com", + address: "778 Ash St, Jacksonville, 71638", + status: "Hot", + lastContactDate: "2023-07-06", + nextFollowUpDate: "2023-12-13", + volumeOffersSent: 6, + mao: 149794, + offerPrice: 149184, + homeCondition: "Okay", + dateOfferSent: "2023-01-28", + market: "Las Vegas", + }, + { + id: 57, + name: "Max Doe", + phone: "848-439-6756", + email: "max.doe@example.com", + address: "611 Ash St, Las Vegas, 89966", + status: "Contracted", + lastContactDate: "2023-08-17", + nextFollowUpDate: "2023-07-23", + volumeOffersSent: 3, + mao: 268068, + offerPrice: 245813, + homeCondition: "Poor", + dateOfferSent: "2023-04-12", + market: "Jacksonville", + }, + { + id: 58, + name: "Jessica Martinez", + phone: "413-404-2224", + email: "jessica.martinez@example.com", + address: "370 Oakwood Blvd, Memphis, 10083", + status: "Nurture", + lastContactDate: "2023-10-10", + nextFollowUpDate: "2023-01-01", + volumeOffersSent: 2, + mao: 195264, + offerPrice: 103261, + homeCondition: "Okay", + dateOfferSent: "2023-12-14", + market: "Atlanta", + }, + { + id: 59, + name: "Jessica Lee", + phone: "328-188-3066", + email: "jessica.lee@example.com", + address: "200 Walnut St, Atlanta, 20356", + status: "Nurture", + lastContactDate: "2023-10-03", + nextFollowUpDate: "2023-09-17", + volumeOffersSent: 3, + mao: 206339, + offerPrice: 236399, + homeCondition: "Poor", + dateOfferSent: "2023-12-17", + market: "Philadelphia", + }, + { + id: 60, + name: "Daniel Lee", + phone: "221-632-8753", + email: "daniel.lee@example.com", + address: "746 Elm St, Las Vegas, 98636", + status: "Contracted", + lastContactDate: "2023-01-25", + nextFollowUpDate: "2023-05-17", + volumeOffersSent: 6, + mao: 83800, + offerPrice: 50838, + homeCondition: "Okay", + dateOfferSent: "2023-11-18", + market: "Philadelphia", + }, + { + id: 61, + name: "Daniel Lewis", + phone: "409-102-3534", + email: "daniel.lewis@example.com", + address: "306 Main St, Atlanta, 79354", + status: "PN Hot", + lastContactDate: "2023-09-22", + nextFollowUpDate: "2023-05-21", + volumeOffersSent: 1, + mao: 253192, + offerPrice: 74216, + homeCondition: "Great", + dateOfferSent: "2023-06-13", + market: "Charlotte", + }, + { + id: 62, + name: "Emily Doe", + phone: "938-681-3788", + email: "emily.doe@example.com", + address: "446 Pine Rd, Columbus, 26629", + status: "PN Hot", + lastContactDate: "2023-07-01", + nextFollowUpDate: "2023-11-08", + volumeOffersSent: 2, + mao: 161004, + offerPrice: 111842, + homeCondition: "Poor", + dateOfferSent: "2023-01-04", + market: "Tampa", + }, + { + id: 63, + name: "John Martinez", + phone: "861-120-6699", + email: "john.martinez@example.com", + address: "303 Walnut St, Columbus, 50474", + status: "Closed", + lastContactDate: "2023-06-26", + nextFollowUpDate: "2023-01-06", + volumeOffersSent: 3, + mao: 168384, + offerPrice: 154172, + homeCondition: "Great", + dateOfferSent: "2023-03-22", + market: "Jacksonville", + }, + { + id: 64, + name: "Charlie Doe", + phone: "645-818-2622", + email: "charlie.doe@example.com", + address: "862 Oakwood Blvd, Tampa, 40073", + status: "Contracted", + lastContactDate: "2023-09-04", + nextFollowUpDate: "2023-07-21", + volumeOffersSent: 3, + mao: 207888, + offerPrice: 224310, + homeCondition: "Okay", + dateOfferSent: "2023-12-23", + market: "Columbus", + }, + { + id: 65, + name: "Charlie Lee", + phone: "399-737-6256", + email: "charlie.lee@example.com", + address: "223 Ash St, Indianapolis, 31319", + status: "New Lead", + lastContactDate: "2023-12-05", + nextFollowUpDate: "2023-01-10", + volumeOffersSent: 2, + mao: 175040, + offerPrice: 149431, + homeCondition: "Poor", + dateOfferSent: "2023-05-13", + market: "Philadelphia", + }, + { + id: 66, + name: "Charlie Jones", + phone: "763-543-5272", + email: "charlie.jones@example.com", + address: "381 Oak St, Jacksonville, 35980", + status: "Nurture", + lastContactDate: "2023-01-02", + nextFollowUpDate: "2023-01-26", + volumeOffersSent: 9, + mao: 244004, + offerPrice: 129023, + homeCondition: "Great", + dateOfferSent: "2023-03-26", + market: "Jacksonville", + }, + { + id: 67, + name: "Charlie Davis", + phone: "858-183-8173", + email: "charlie.davis@example.com", + address: "576 Maple Dr, Memphis, 61408", + status: "Contracted", + lastContactDate: "2023-03-24", + nextFollowUpDate: "2023-07-01", + volumeOffersSent: 9, + mao: 188546, + offerPrice: 128209, + homeCondition: "Poor", + dateOfferSent: "2023-01-21", + market: "Memphis", + }, + { + id: 68, + name: "Jane Wilson", + phone: "457-912-4032", + email: "jane.wilson@example.com", + address: "511 Main St, Memphis, 14357", + status: "Nurture", + lastContactDate: "2023-12-11", + nextFollowUpDate: "2023-08-27", + volumeOffersSent: 2, + mao: 293813, + offerPrice: 129085, + homeCondition: "Great", + dateOfferSent: "2023-02-27", + market: "Tampa", + }, + { + id: 69, + name: "Daniel Martinez", + phone: "380-776-1939", + email: "daniel.martinez@example.com", + address: "190 Birch Ln, Charlotte, 54973", + status: "Contracted", + lastContactDate: "2023-05-26", + nextFollowUpDate: "2023-06-24", + volumeOffersSent: 9, + mao: 200750, + offerPrice: 191191, + homeCondition: "Okay", + dateOfferSent: "2023-03-21", + market: "Tampa", + }, + { + id: 70, + name: "Max Garcia", + phone: "498-268-7211", + email: "max.garcia@example.com", + address: "939 Birch Ln, Memphis, 80178", + status: "New Lead", + lastContactDate: "2023-06-21", + nextFollowUpDate: "2023-07-04", + volumeOffersSent: 3, + mao: 236073, + offerPrice: 94752, + homeCondition: "Poor", + dateOfferSent: "2023-01-09", + market: "Indianapolis", + }, + { + id: 71, + name: "Olivia Lewis", + phone: "788-921-6839", + email: "olivia.lewis@example.com", + address: "155 Maple Dr, Las Vegas, 65723", + status: "Contracted", + lastContactDate: "2023-10-04", + nextFollowUpDate: "2023-07-03", + volumeOffersSent: 4, + mao: 78367, + offerPrice: 239918, + homeCondition: "Great", + dateOfferSent: "2023-08-08", + market: "Las Vegas", + }, + { + id: 72, + name: "Michael Doe", + phone: "903-635-1018", + email: "michael.doe@example.com", + address: "571 Oak St, Atlanta, 39006", + status: "New Lead", + lastContactDate: "2023-05-12", + nextFollowUpDate: "2023-11-08", + volumeOffersSent: 9, + mao: 256883, + offerPrice: 155064, + homeCondition: "Poor", + dateOfferSent: "2023-06-08", + market: "Philadelphia", + }, + { + id: 73, + name: "Max Brown", + phone: "695-516-3796", + email: "max.brown@example.com", + address: "675 Maple Dr, Charlotte, 47687", + status: "Nurture", + lastContactDate: "2023-07-04", + nextFollowUpDate: "2023-11-09", + volumeOffersSent: 9, + mao: 96936, + offerPrice: 159672, + homeCondition: "Poor", + dateOfferSent: "2023-09-20", + market: "Memphis", + }, + { + id: 74, + name: "Jessica Garcia", + phone: "292-806-1701", + email: "jessica.garcia@example.com", + address: "994 Main St, Las Vegas, 48260", + status: "Closed", + lastContactDate: "2023-09-19", + nextFollowUpDate: "2023-08-20", + volumeOffersSent: 2, + mao: 231465, + offerPrice: 193646, + homeCondition: "Okay", + dateOfferSent: "2023-04-24", + market: "Charlotte", + }, + { + id: 75, + name: "Emily Wilson", + phone: "433-158-2707", + email: "emily.wilson@example.com", + address: "769 Cedar Ave, Columbus, 99855", + status: "Nurture", + lastContactDate: "2023-04-16", + nextFollowUpDate: "2023-11-05", + volumeOffersSent: 5, + mao: 200491, + offerPrice: 233365, + homeCondition: "Okay", + dateOfferSent: "2023-01-06", + market: "Charlotte", + }, + { + id: 76, + name: "Jessica Wilson", + phone: "633-765-9140", + email: "jessica.wilson@example.com", + address: "438 Walnut St, Philadelphia, 59548", + status: "Nurture", + lastContactDate: "2023-01-05", + nextFollowUpDate: "2023-10-02", + volumeOffersSent: 9, + mao: 111820, + offerPrice: 121200, + homeCondition: "Okay", + dateOfferSent: "2023-03-10", + market: "Memphis", + }, + { + id: 77, + name: "Jessica Smith", + phone: "447-738-1673", + email: "jessica.smith@example.com", + address: "435 Birch Ln, Charlotte, 39426", + status: "PN Hot", + lastContactDate: "2023-06-20", + nextFollowUpDate: "2023-11-25", + volumeOffersSent: 5, + mao: 287517, + offerPrice: 230768, + homeCondition: "Poor", + dateOfferSent: "2023-12-11", + market: "Philadelphia", + }, + { + id: 78, + name: "John Wilson", + phone: "545-360-4331", + email: "john.wilson@example.com", + address: "764 Elm St, Philadelphia, 50954", + status: "PN Hot", + lastContactDate: "2023-03-15", + nextFollowUpDate: "2023-10-28", + volumeOffersSent: 6, + mao: 136308, + offerPrice: 111811, + homeCondition: "Okay", + dateOfferSent: "2023-07-28", + market: "Philadelphia", + }, + { + id: 79, + name: "John Doe", + phone: "495-429-3988", + email: "john.doe@example.com", + address: "288 Cedar Ave, Philadelphia, 67091", + status: "Closed", + lastContactDate: "2023-09-16", + nextFollowUpDate: "2023-07-17", + volumeOffersSent: 1, + mao: 95936, + offerPrice: 114627, + homeCondition: "Okay", + dateOfferSent: "2023-08-09", + market: "Las Vegas", + }, + { + id: 80, + name: "Charlie Jones", + phone: "584-949-1305", + email: "charlie.jones@example.com", + address: "630 Oak St, Indianapolis, 90409", + status: "Contracted", + lastContactDate: "2023-04-17", + nextFollowUpDate: "2023-05-16", + volumeOffersSent: 9, + mao: 177137, + offerPrice: 45814, + homeCondition: "Great", + dateOfferSent: "2023-05-21", + market: "Tampa", + }, + { + id: 81, + name: "Emily Lee", + phone: "501-320-8175", + email: "emily.lee@example.com", + address: "951 Pine Rd, Memphis, 31560", + status: "Contracted", + lastContactDate: "2023-08-07", + nextFollowUpDate: "2023-06-08", + volumeOffersSent: 4, + mao: 210796, + offerPrice: 59355, + homeCondition: "Poor", + dateOfferSent: "2023-05-05", + market: "Tampa", + }, + { + id: 82, + name: "Max Garcia", + phone: "632-325-7269", + email: "max.garcia@example.com", + address: "614 Ash St, Charlotte, 86911", + status: "Contracted", + lastContactDate: "2023-05-07", + nextFollowUpDate: "2023-12-10", + volumeOffersSent: 4, + mao: 283990, + offerPrice: 94000, + homeCondition: "Great", + dateOfferSent: "2023-06-05", + market: "Columbus", + }, + { + id: 83, + name: "Jane Lee", + phone: "229-367-4640", + email: "jane.lee@example.com", + address: "932 Oakwood Blvd, Jacksonville, 99754", + status: "Contracted", + lastContactDate: "2023-11-24", + nextFollowUpDate: "2023-10-19", + volumeOffersSent: 1, + mao: 260488, + offerPrice: 195758, + homeCondition: "Great", + dateOfferSent: "2023-11-28", + market: "Jacksonville", + }, + { + id: 84, + name: "Charlie Smith", + phone: "120-576-2800", + email: "charlie.smith@example.com", + address: "507 Oakwood Blvd, Jacksonville, 21342", + status: "Hot", + lastContactDate: "2023-06-23", + nextFollowUpDate: "2023-03-17", + volumeOffersSent: 9, + mao: 69213, + offerPrice: 99675, + homeCondition: "Okay", + dateOfferSent: "2023-07-09", + market: "Charlotte", + }, + { + id: 85, + name: "Jane Lee", + phone: "643-601-2987", + email: "jane.lee@example.com", + address: "269 Oakwood Blvd, Charlotte, 80887", + status: "New Lead", + lastContactDate: "2023-08-26", + nextFollowUpDate: "2023-06-02", + volumeOffersSent: 9, + mao: 144049, + offerPrice: 157838, + homeCondition: "Poor", + dateOfferSent: "2023-02-25", + market: "Tampa", + }, + { + id: 86, + name: "Olivia Brown", + phone: "562-899-3419", + email: "olivia.brown@example.com", + address: "767 Cedar Ave, Columbus, 31749", + status: "Hot", + lastContactDate: "2023-08-10", + nextFollowUpDate: "2023-07-08", + volumeOffersSent: 8, + mao: 52808, + offerPrice: 184320, + homeCondition: "Poor", + dateOfferSent: "2023-07-24", + market: "Las Vegas", + }, + { + id: 87, + name: "Max Lee", + phone: "699-849-3443", + email: "max.lee@example.com", + address: "555 Maple Dr, Charlotte, 37573", + status: "PN Hot", + lastContactDate: "2023-07-21", + nextFollowUpDate: "2023-06-20", + volumeOffersSent: 9, + mao: 161666, + offerPrice: 83412, + homeCondition: "Great", + dateOfferSent: "2023-02-17", + market: "Indianapolis", + }, + { + id: 88, + name: "Charlie Wilson", + phone: "175-976-3580", + email: "charlie.wilson@example.com", + address: "551 Oak St, Indianapolis, 55353", + status: "Closed", + lastContactDate: "2023-08-21", + nextFollowUpDate: "2023-12-24", + volumeOffersSent: 6, + mao: 114396, + offerPrice: 127142, + homeCondition: "Okay", + dateOfferSent: "2023-06-22", + market: "Jacksonville", + }, + { + id: 89, + name: "Daniel Garcia", + phone: "979-495-3846", + email: "daniel.garcia@example.com", + address: "552 Ash St, Atlanta, 98471", + status: "Nurture", + lastContactDate: "2023-03-10", + nextFollowUpDate: "2023-08-12", + volumeOffersSent: 5, + mao: 175762, + offerPrice: 176595, + homeCondition: "Poor", + dateOfferSent: "2023-06-13", + market: "Atlanta", + }, + { + id: 90, + name: "Max Martinez", + phone: "189-151-2339", + email: "max.martinez@example.com", + address: "276 Maple Dr, Indianapolis, 92703", + status: "New Lead", + lastContactDate: "2023-04-03", + nextFollowUpDate: "2023-03-16", + volumeOffersSent: 2, + mao: 265393, + offerPrice: 228685, + homeCondition: "Poor", + dateOfferSent: "2023-01-24", + market: "Indianapolis", + }, + { + id: 91, + name: "Emily Martinez", + phone: "216-796-5399", + email: "emily.martinez@example.com", + address: "491 Main St, Indianapolis, 29015", + status: "New Lead", + lastContactDate: "2023-09-16", + nextFollowUpDate: "2023-12-04", + volumeOffersSent: 2, + mao: 279474, + offerPrice: 63073, + homeCondition: "Okay", + dateOfferSent: "2023-05-09", + market: "Tampa", + }, + { + id: 92, + name: "Jessica Wilson", + phone: "947-909-6335", + email: "jessica.wilson@example.com", + address: "602 Pine Rd, Columbus, 15553", + status: "Hot", + lastContactDate: "2023-02-12", + nextFollowUpDate: "2023-04-09", + volumeOffersSent: 2, + mao: 177556, + offerPrice: 123927, + homeCondition: "Poor", + dateOfferSent: "2023-08-06", + market: "Tampa", + }, + { + id: 93, + name: "Olivia Davis", + phone: "247-806-8964", + email: "olivia.davis@example.com", + address: "854 Oakwood Blvd, Columbus, 85235", + status: "PN Hot", + lastContactDate: "2023-12-07", + nextFollowUpDate: "2023-10-27", + volumeOffersSent: 7, + mao: 254176, + offerPrice: 169789, + homeCondition: "Poor", + dateOfferSent: "2023-11-21", + market: "Memphis", + }, + { + id: 94, + name: "Jessica Garcia", + phone: "800-934-1738", + email: "jessica.garcia@example.com", + address: "174 Elm St, Charlotte, 24949", + status: "Hot", + lastContactDate: "2023-09-25", + nextFollowUpDate: "2023-09-16", + volumeOffersSent: 9, + mao: 260695, + offerPrice: 41629, + homeCondition: "Great", + dateOfferSent: "2023-07-11", + market: "Indianapolis", + }, + { + id: 95, + name: "Emily Smith", + phone: "315-659-2314", + email: "emily.smith@example.com", + address: "145 Maple Dr, Memphis, 72403", + status: "Closed", + lastContactDate: "2023-05-16", + nextFollowUpDate: "2023-06-28", + volumeOffersSent: 4, + mao: 291374, + offerPrice: 67088, + homeCondition: "Poor", + dateOfferSent: "2023-07-07", + market: "Jacksonville", + }, + { + id: 96, + name: "Emily Lewis", + phone: "566-771-6344", + email: "emily.lewis@example.com", + address: "684 Oakwood Blvd, Las Vegas, 40586", + status: "New Lead", + lastContactDate: "2023-02-25", + nextFollowUpDate: "2023-03-09", + volumeOffersSent: 6, + mao: 277950, + offerPrice: 89237, + homeCondition: "Great", + dateOfferSent: "2023-05-23", + market: "Memphis", + }, + { + id: 97, + name: "Charlie Smith", + phone: "571-657-9748", + email: "charlie.smith@example.com", + address: "644 Maple Dr, Las Vegas, 11946", + status: "Hot", + lastContactDate: "2023-02-21", + nextFollowUpDate: "2023-12-13", + volumeOffersSent: 3, + mao: 187668, + offerPrice: 226707, + homeCondition: "Okay", + dateOfferSent: "2023-07-05", + market: "Memphis", + }, + { + id: 98, + name: "Michael Brown", + phone: "373-130-3308", + email: "michael.brown@example.com", + address: "249 Maple Dr, Indianapolis, 60709", + status: "New Lead", + lastContactDate: "2023-02-10", + nextFollowUpDate: "2023-04-12", + volumeOffersSent: 6, + mao: 184578, + offerPrice: 227964, + homeCondition: "Poor", + dateOfferSent: "2023-04-19", + market: "Tampa", + }, + { + id: 99, + name: "Charlie Doe", + phone: "210-855-5488", + email: "charlie.doe@example.com", + address: "134 Walnut St, Jacksonville, 77116", + status: "Nurture", + lastContactDate: "2023-02-11", + nextFollowUpDate: "2023-01-02", + volumeOffersSent: 8, + mao: 91543, + offerPrice: 182000, + homeCondition: "Great", + dateOfferSent: "2023-03-16", + market: "Charlotte", + }, + { + id: 100, + name: "John Davis", + phone: "321-470-8738", + email: "john.davis@example.com", + address: "289 Ash St, Tampa, 83544", + status: "Nurture", + lastContactDate: "2023-01-17", + nextFollowUpDate: "2023-11-25", + volumeOffersSent: 8, + mao: 62881, + offerPrice: 67740, + homeCondition: "Great", + dateOfferSent: "2023-11-18", + market: "Charlotte", + }, +]; diff --git a/src/utils/mockData/mockService.js b/src/utils/mockData/mockService.js new file mode 100644 index 0000000..2804232 --- /dev/null +++ b/src/utils/mockData/mockService.js @@ -0,0 +1,105 @@ +import { mockLeadsData } from "./mockData"; + +/** + * Simulates downloading mock data from an API with a random chance of error. + * @returns {Promise} - A promise that resolves with mock data or rejects with an error. + */ +export const simulateDownloadMockData = () => { + return new Promise((resolve, reject) => { + setTimeout(() => { + if (Math.random() < 0) { + // 20% chance to fail + reject(new Error("Simulated download error")); + } else { + const mockData = "Mocked data that would be received from an API."; + resolve(mockData); + } + }, 1500); + }); +}; + +/** + * Simulates the creation of a mock file based on provided data. + * @param {string} data - The data to be placed inside the mock file. + * @returns {Promise} - A promise that resolves with a File object. + */ +export const createMockFile = (data) => { + const blob = new Blob([data], { type: "text/csv" }); + const mockFileName = "skiptraced_file.csv"; + return Promise.resolve(new File([blob], mockFileName, { type: "text/csv" })); +}; + +/** + * Simulates a file processing API call with a random chance of failure. + * @param {Array} files - An array of File objects to process. + * @returns {Promise} - A promise that resolves with processed data or rejects with an error. + */ +export const simulateFileProcessApiCall = (files) => { + return new Promise((resolve, reject) => { + setTimeout(() => { + if (Math.random() < 0.2) { + // 20% chance to fail + reject(new Error("Simulated processing error")); + } else { + const processedData = `Processed data for files: ${files + .map((file) => file.name) + .join(", ")}`; + resolve(processedData); + } + }, 1500); + }); +}; + +/** + * Simulates the download of a file with mock data. + * @param {string} data - The data to be downloaded. + * @param {string} filename - The name of the file to be downloaded. + */ +export const simulateFileDownload = (data, filename = "download.txt") => { + const blob = new Blob([data], { type: "text/plain" }); + const href = URL.createObjectURL(blob); + const link = document.createElement("a"); + link.href = href; + link.download = filename; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + URL.revokeObjectURL(href); +}; + +/** + * Fetches mock data with a simulation of an API call, followed by a simulated file download. + * @param {string} filename - The name of the file to be downloaded. + * @returns {Promise} - A promise that resolves with mock data or rejects with an error. + */ +export const fetchMockDataWithSimulation = async (filename) => { + try { + const mockData = await simulateDownloadMockData(); + simulateFileDownload(mockData, filename); + return mockData; + } catch (error) { + // Could handle the error here or return an error object if desired + throw error; + } +}; + +// Add this to your mockService.js + +/** + * Simulates fetching leads data from an API. + * @returns {Promise} - A promise that resolves with mock leads data or rejects with an error. + */ +export const simulateFetchLeadsData = () => { + return new Promise((resolve, reject) => { + setTimeout(() => { + if (Math.random() < 0) { + // 20% chance to simulate an error + // reject(new Error("Simulated error fetching leads data")); + } else { + console.log("Simulating fetching leads data..."); + const apiMockLeadsData = mockLeadsData; + resolve(apiMockLeadsData); + } + }, 1000); + }); +}; From c7e1b01dfe8f1ce7220254a2b6903c10f7734627 Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Sun, 24 Dec 2023 04:40:01 -0800 Subject: [PATCH 002/118] mock server integration with postman to replace mock data --- .gitignore | 3 + .../StackedBarChart/StackedBarChart.css | 1 + .../shared/dropdowns/FilterBar/FilterBar.css | 4 +- .../shared/dropdowns/FilterBar/index.js | 1 - src/hooks/useDashboardData.js | 99 ++-- src/pages/CreamDashboard/CreamDashboard.css | 1 - src/pages/CreamDashboard/index.js | 28 +- src/utils/constants/appConstants.js | 2 +- .../dataVisualizations/barChartData.js | 131 ----- .../dataVisualizations/marketShareData.js | 11 - .../dataVisualizations/mockBubbleChartData.js | 542 ------------------ .../mockData/dataVisualizations/radarChart.js | 62 -- .../dataVisualizations/singleValueCard.js | 17 - 13 files changed, 59 insertions(+), 843 deletions(-) create mode 100644 .gitignore delete mode 100644 src/utils/mockData/dataVisualizations/barChartData.js delete mode 100644 src/utils/mockData/dataVisualizations/marketShareData.js delete mode 100644 src/utils/mockData/dataVisualizations/mockBubbleChartData.js delete mode 100644 src/utils/mockData/dataVisualizations/radarChart.js delete mode 100644 src/utils/mockData/dataVisualizations/singleValueCard.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..28cde21 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +node_modules +.env +.DS_Store \ No newline at end of file diff --git a/src/components/dataVisualizations/Charts/StackedBarChart/StackedBarChart.css b/src/components/dataVisualizations/Charts/StackedBarChart/StackedBarChart.css index d9c3ba2..a2e0624 100644 --- a/src/components/dataVisualizations/Charts/StackedBarChart/StackedBarChart.css +++ b/src/components/dataVisualizations/Charts/StackedBarChart/StackedBarChart.css @@ -28,6 +28,7 @@ .bar-chart-container { padding-bottom: 10px; width: 131%; + margin-left: 10%; } .custom-tooltip { diff --git a/src/components/shared/dropdowns/FilterBar/FilterBar.css b/src/components/shared/dropdowns/FilterBar/FilterBar.css index b06d627..83ed326 100644 --- a/src/components/shared/dropdowns/FilterBar/FilterBar.css +++ b/src/components/shared/dropdowns/FilterBar/FilterBar.css @@ -77,8 +77,8 @@ .filterbar-dropdown-icon { position: absolute; - right: 15px; - top: 33%; + right: 8px; + top: 53%; transform: translateY(-50%); color: #555; pointer-events: none; diff --git a/src/components/shared/dropdowns/FilterBar/index.js b/src/components/shared/dropdowns/FilterBar/index.js index 27b0ead..ca49bc6 100644 --- a/src/components/shared/dropdowns/FilterBar/index.js +++ b/src/components/shared/dropdowns/FilterBar/index.js @@ -49,7 +49,6 @@ const FilterBar = ({ diff --git a/src/hooks/useDashboardData.js b/src/hooks/useDashboardData.js index 0920d2d..37b0140 100644 --- a/src/hooks/useDashboardData.js +++ b/src/hooks/useDashboardData.js @@ -1,11 +1,4 @@ -import { useState, useEffect, useMemo } from "react"; -import { mockBarChartData } from "../utils/mockData/dataVisualizations/barChartData"; -import { mockSingleValueCardData } from "../utils/mockData/dataVisualizations/singleValueCard"; -import { mockSalesRadarChart } from "../utils/mockData/dataVisualizations/radarChart"; -import { mockROIByLeadSourceData } from "../utils/mockData/dataVisualizations/barChartData"; -import { mockMarketPopulations } from "../utils/mockData/dataVisualizations/marketShareData"; -import { calculateMarketShare } from "../utils/commonFunctions"; -import { mockBubbleChartData } from "../utils/mockData/dataVisualizations/mockBubbleChartData"; +import { useState, useCallback, useEffect } from "react"; const useDashboardData = () => { const [data, setData] = useState({ @@ -14,7 +7,6 @@ const useDashboardData = () => { dealsClosedByMarketData: [], salesRadarChartData: [], roiByLeadSourceData: [], - marketShareData: [], bubbleChartData: [], }); const [isLoading, setIsLoading] = useState(true); @@ -22,58 +14,47 @@ const useDashboardData = () => { const clearError = () => setError(null); - const totalPopulation = mockMarketPopulations.reduce( - (acc, market) => acc + market.population, - 0 - ); - const totalDealsDone = 20; // Assuming a fixed number for this example - - const businessMarketShare = useMemo(() => { - const share = calculateMarketShare(totalDealsDone, totalPopulation); - return Number(share.toFixed(2)); - }, [totalDealsDone, totalPopulation]); - - const remainingMarketShare = useMemo(() => { - const share = 100 - businessMarketShare; - return Number(share.toFixed(2)); - }, [businessMarketShare]); - - const marketShareData = useMemo( - () => [ - { - name: "My Business", - value: businessMarketShare, - color: "#d5b5a3", // Color for your business - }, - { - name: "Market Share", - value: remainingMarketShare, - color: "#3e5f8a", // Different color for the remaining market - }, - ], - [businessMarketShare, remainingMarketShare] - ); + const fetchData = useCallback(async () => { + try { + setIsLoading(true); + const apiUrls = [ + "/api/getCardData?market=All&timeline=30d", // For singleValueCardData + "/api/getMarketConversions", // For barChartData + "/api/getDealsClosedByMarket", // For bubbleChartData + "/api/getLeadSourceRoi?timeline=all-time&market=All", // For roiByLeadSourceData + "/api/getLeadSourcePerformance?timeline=30d&market=Tampa", // For salesRadarChartData + ]; + + const requests = apiUrls.map((url) => + fetch(`${process.env.REACT_APP_KONTRAX_API_URL}${url}`).then( + (response) => { + if (!response.ok) { + throw new Error(`Network response was not ok for ${url}`); + } + return response.json(); + } + ) + ); + + const responses = await Promise.all(requests); + + setData({ + singleValueCardData: responses[0].data, // Use the nested 'data' array for singleValueCardData + barChartData: responses[1].data, + bubbleChartData: responses[2].data, + roiByLeadSourceData: responses[3].data, + salesRadarChartData: responses[4].data, + }); + } catch (error) { + setError(error); + } finally { + setIsLoading(false); + } + }, []); useEffect(() => { - setTimeout(() => { - // Simulating a data fetch with a 15% chance of error - const didFail = Math.random() < 0.15; - - if (didFail) { - setError(new Error("Failed to fetch data.")); - } else { - setData({ - singleValueCardData: mockSingleValueCardData, - barChartData: mockBarChartData, - salesRadarChartData: mockSalesRadarChart, - roiByLeadSourceData: mockROIByLeadSourceData, - marketShareData, - bubbleChartData: mockBubbleChartData, - }); - } - setIsLoading(false); - }, 1000); - }, [marketShareData]); + fetchData(); + }, [fetchData]); return { data, isLoading, error, clearError }; }; diff --git a/src/pages/CreamDashboard/CreamDashboard.css b/src/pages/CreamDashboard/CreamDashboard.css index 39ffd2c..75d0a2c 100644 --- a/src/pages/CreamDashboard/CreamDashboard.css +++ b/src/pages/CreamDashboard/CreamDashboard.css @@ -69,7 +69,6 @@ width: 100%; /* Full width of its container */ max-width: 400px; /* Or any maximum width you prefer */ height: 400px; /* Set a fixed height for the chart container */ - padding: 20px; /* Optional padding */ display: flex; /* Use flex to control the size of children */ flex-direction: column; /* Stack children vertically */ justify-content: center; /* Center children vertically */ diff --git a/src/pages/CreamDashboard/index.js b/src/pages/CreamDashboard/index.js index 766ece9..a4d8242 100644 --- a/src/pages/CreamDashboard/index.js +++ b/src/pages/CreamDashboard/index.js @@ -11,7 +11,6 @@ import { ERROR_MODAL } from "../../utils/constants/errorConstants"; import "./CreamDashboard.css"; import { usePageHeader } from "../../hooks/usePageHeader"; import Section from "../../components/layout/Section"; -import CustomPieChart from "../../components/dataVisualizations/Charts/CustomPieChart"; import FilterBar from "../../components/shared/dropdowns/FilterBar"; import { DASHBOARD_FILTER_OPTIONS } from "../../utils/constants/uiConstants"; import BubbleChart from "../../components/dataVisualizations/Charts/BubbleChart"; @@ -62,7 +61,6 @@ const CreamDashboard = () => { barChartData, salesRadarChartData, roiByLeadSourceData, - marketShareData, bubbleChartData, } = data; @@ -84,17 +82,6 @@ const CreamDashboard = () => { ))}
- {/*
*/} -
-
- - -
-
{ />
+
+
+
+ +
+ +
+
@@ -121,9 +120,6 @@ const CreamDashboard = () => {
-
- -
); diff --git a/src/utils/constants/appConstants.js b/src/utils/constants/appConstants.js index edebc09..c390f4b 100644 --- a/src/utils/constants/appConstants.js +++ b/src/utils/constants/appConstants.js @@ -1,6 +1,6 @@ // General constants related to the application configuration -export const APP_NAME = "Suite Cream"; +export const APP_NAME = "KontraX"; export const MARKETS = [ "Atlanta", diff --git a/src/utils/mockData/dataVisualizations/barChartData.js b/src/utils/mockData/dataVisualizations/barChartData.js deleted file mode 100644 index 764e321..0000000 --- a/src/utils/mockData/dataVisualizations/barChartData.js +++ /dev/null @@ -1,131 +0,0 @@ -export const mockBarChartData = [ - { - name: "Atlanta", - offersSent: 120, - conversationsHad: 150, - signedAgreements: 2, - }, - { - name: "Charlotte", - offersSent: 130, - conversationsHad: 160, - signedAgreements: 9, - }, - { - name: "Columbus", - offersSent: 125, - conversationsHad: 155, - signedAgreements: 4, - }, - { - name: "Indianapolis", - offersSent: 135, - conversationsHad: 170, - signedAgreements: 8, - }, - { - name: "Jacksonville", - offersSent: 140, - conversationsHad: 180, - signedAgreements: 3, - }, - { - name: "Las Vegas", - offersSent: 60, - conversationsHad: 190, - signedAgreements: 1, - }, - { - name: "Memphis", - offersSent: 150, - conversationsHad: 200, - signedAgreements: 1, - }, - { - name: "Philadelphia", - offersSent: 150, - conversationsHad: 165, - signedAgreements: 6, - }, - { - name: "Tampa", - offersSent: 150, - conversationsHad: 100, - signedAgreements: 2, - }, -]; - -export const mockDealsClosedByMarketData = [ - { name: "Atlanta", dealsClosed: 120 }, - { name: "Charlotte", dealsClosed: 150 }, - { name: "Columbus", dealsClosed: 130 }, - { name: "Indianapolis", dealsClosed: 140 }, - { name: "Jacksonville", dealsClosed: 110 }, - { name: "Las Vegas", dealsClosed: 160 }, - { name: "Memphis", dealsClosed: 135 }, - { name: "Philadelphia", dealsClosed: 145 }, - { name: "Tampa", dealsClosed: 125 }, -]; - -export const mockROIByLeadSourceData = [ - { - listName: "Probate", - investmentCost: 5000, - revenue: 15000, - netProfit: 10000, - }, - { - listName: "Unknown Equity", - investmentCost: 3000, - revenue: 9000, - netProfit: 6000, - }, - { - listName: "Tax Delinquent", - investmentCost: 4000, - revenue: 12000, - netProfit: 8000, - }, - { - listName: "Pre-Foreclosure", - investmentCost: 4500, - revenue: 14000, - netProfit: 9500, - }, - { - listName: "Tired Landlord", - investmentCost: 2500, - revenue: 8000, - netProfit: 5500, - }, - { - listName: "Absentee", - investmentCost: 3500, - revenue: 11000, - netProfit: 7500, - }, - { - listName: "Lien", - investmentCost: 2000, - revenue: 7000, - netProfit: 5000, - }, - { - listName: "Vacant", - investmentCost: 3000, - revenue: 9500, - netProfit: 6500, - }, - { - listName: "Inherited", - investmentCost: 4000, - revenue: 10500, - netProfit: 6500, - }, - { - listName: "JV", - investmentCost: 1500, - revenue: 6000, - netProfit: 4500, - }, -]; diff --git a/src/utils/mockData/dataVisualizations/marketShareData.js b/src/utils/mockData/dataVisualizations/marketShareData.js deleted file mode 100644 index 7a384c4..0000000 --- a/src/utils/mockData/dataVisualizations/marketShareData.js +++ /dev/null @@ -1,11 +0,0 @@ -export const mockMarketPopulations = [ - { name: "Atlanta", population: 500 }, - { name: "Charlotte", population: 850 }, - { name: "Columbus", population: 900 }, - { name: "Indianapolis", population: 700 }, - { name: "Jacksonville", population: 1500 }, - { name: "Las Vegas", population: 600 }, - { name: "Memphis", population: 650 }, - { name: "Philadelphia", population: 1600 }, - { name: "Tampa", population: 400 }, -]; diff --git a/src/utils/mockData/dataVisualizations/mockBubbleChartData.js b/src/utils/mockData/dataVisualizations/mockBubbleChartData.js deleted file mode 100644 index 4e5675b..0000000 --- a/src/utils/mockData/dataVisualizations/mockBubbleChartData.js +++ /dev/null @@ -1,542 +0,0 @@ -export const mockBubbleChartData = [ - { - date: "2022-01-05", - market: "Columbus", - dealsClosed: 3, - }, - { - date: "2022-01-06", - market: "Tampa", - dealsClosed: 9, - }, - { - date: "2022-01-07", - market: "Philadelphia", - dealsClosed: 22, - }, - { - date: "2022-01-08", - market: "Memphis", - dealsClosed: 2, - }, - { - date: "2022-01-09", - market: "Indianapolis", - dealsClosed: 18, - }, - { - date: "2022-01-13", - market: "Jacksonville", - dealsClosed: 23, - }, - { - date: "2022-01-15", - market: "Atlanta", - dealsClosed: 9, - }, - { - date: "2022-01-16", - market: "Las Vegas", - dealsClosed: 3, - }, - { - date: "2022-01-22", - market: "Charlotte", - dealsClosed: 14, - }, - { - date: "2022-02-02", - market: "Columbus", - dealsClosed: 22, - }, - { - date: "2022-02-02", - market: "Jacksonville", - dealsClosed: 7, - }, - { - date: "2022-02-12", - market: "Memphis", - dealsClosed: 5, - }, - { - date: "2022-02-15", - market: "Indianapolis", - dealsClosed: 19, - }, - { - date: "2022-02-16", - market: "Tampa", - dealsClosed: 14, - }, - { - date: "2022-02-21", - market: "Atlanta", - dealsClosed: 21, - }, - { - date: "2022-02-25", - market: "Philadelphia", - dealsClosed: 22, - }, - { - date: "2022-02-26", - market: "Las Vegas", - dealsClosed: 23, - }, - { - date: "2022-02-27", - market: "Charlotte", - dealsClosed: 14, - }, - { - date: "2022-03-03", - market: "Columbus", - dealsClosed: 29, - }, - { - date: "2022-03-07", - market: "Memphis", - dealsClosed: 22, - }, - { - date: "2022-03-11", - market: "Charlotte", - dealsClosed: 28, - }, - { - date: "2022-03-13", - market: "Jacksonville", - dealsClosed: 17, - }, - { - date: "2022-03-13", - market: "Las Vegas", - dealsClosed: 18, - }, - { - date: "2022-03-14", - market: "Tampa", - dealsClosed: 11, - }, - { - date: "2022-03-15", - market: "Philadelphia", - dealsClosed: 24, - }, - { - date: "2022-03-22", - market: "Atlanta", - dealsClosed: 16, - }, - { - date: "2022-03-24", - market: "Indianapolis", - dealsClosed: 3, - }, - { - date: "2022-04-01", - market: "Las Vegas", - dealsClosed: 26, - }, - { - date: "2022-04-02", - market: "Philadelphia", - dealsClosed: 15, - }, - { - date: "2022-04-09", - market: "Jacksonville", - dealsClosed: 28, - }, - { - date: "2022-04-18", - market: "Charlotte", - dealsClosed: 30, - }, - { - date: "2022-04-20", - market: "Columbus", - dealsClosed: 27, - }, - { - date: "2022-04-20", - market: "Memphis", - dealsClosed: 29, - }, - { - date: "2022-04-22", - market: "Atlanta", - dealsClosed: 2, - }, - { - date: "2022-04-24", - market: "Indianapolis", - dealsClosed: 26, - }, - { - date: "2022-04-28", - market: "Tampa", - dealsClosed: 22, - }, - { - date: "2022-05-02", - market: "Indianapolis", - dealsClosed: 22, - }, - { - date: "2022-05-06", - market: "Las Vegas", - dealsClosed: 27, - }, - { - date: "2022-05-10", - market: "Charlotte", - dealsClosed: 26, - }, - { - date: "2022-05-11", - market: "Jacksonville", - dealsClosed: 15, - }, - { - date: "2022-05-19", - market: "Columbus", - dealsClosed: 17, - }, - { - date: "2022-05-21", - market: "Tampa", - dealsClosed: 11, - }, - { - date: "2022-05-23", - market: "Memphis", - dealsClosed: 11, - }, - { - date: "2022-05-25", - market: "Atlanta", - dealsClosed: 21, - }, - { - date: "2022-05-26", - market: "Philadelphia", - dealsClosed: 27, - }, - { - date: "2022-06-09", - market: "Jacksonville", - dealsClosed: 17, - }, - { - date: "2022-06-10", - market: "Indianapolis", - dealsClosed: 8, - }, - { - date: "2022-06-16", - market: "Columbus", - dealsClosed: 23, - }, - { - date: "2022-06-16", - market: "Las Vegas", - dealsClosed: 21, - }, - { - date: "2022-06-21", - market: "Memphis", - dealsClosed: 19, - }, - { - date: "2022-06-24", - market: "Charlotte", - dealsClosed: 2, - }, - { - date: "2022-06-27", - market: "Atlanta", - dealsClosed: 9, - }, - { - date: "2022-06-27", - market: "Tampa", - dealsClosed: 9, - }, - { - date: "2022-06-28", - market: "Philadelphia", - dealsClosed: 9, - }, - { - date: "2022-07-03", - market: "Jacksonville", - dealsClosed: 4, - }, - { - date: "2022-07-04", - market: "Atlanta", - dealsClosed: 17, - }, - { - date: "2022-07-04", - market: "Memphis", - dealsClosed: 13, - }, - { - date: "2022-07-08", - market: "Philadelphia", - dealsClosed: 16, - }, - { - date: "2022-07-10", - market: "Charlotte", - dealsClosed: 29, - }, - { - date: "2022-07-15", - market: "Tampa", - dealsClosed: 29, - }, - { - date: "2022-07-19", - market: "Indianapolis", - dealsClosed: 9, - }, - { - date: "2022-07-20", - market: "Columbus", - dealsClosed: 2, - }, - { - date: "2022-07-26", - market: "Las Vegas", - dealsClosed: 15, - }, - { - date: "2022-08-01", - market: "Columbus", - dealsClosed: 13, - }, - { - date: "2022-08-02", - market: "Las Vegas", - dealsClosed: 15, - }, - { - date: "2022-08-06", - market: "Philadelphia", - dealsClosed: 12, - }, - { - date: "2022-08-07", - market: "Tampa", - dealsClosed: 22, - }, - { - date: "2022-08-09", - market: "Jacksonville", - dealsClosed: 30, - }, - { - date: "2022-08-11", - market: "Atlanta", - dealsClosed: 14, - }, - { - date: "2022-08-21", - market: "Indianapolis", - dealsClosed: 29, - }, - { - date: "2022-08-22", - market: "Charlotte", - dealsClosed: 19, - }, - { - date: "2022-08-27", - market: "Memphis", - dealsClosed: 11, - }, - { - date: "2022-09-02", - market: "Las Vegas", - dealsClosed: 4, - }, - { - date: "2022-09-05", - market: "Atlanta", - dealsClosed: 14, - }, - { - date: "2022-09-06", - market: "Jacksonville", - dealsClosed: 30, - }, - { - date: "2022-09-07", - market: "Memphis", - dealsClosed: 6, - }, - { - date: "2022-09-08", - market: "Tampa", - dealsClosed: 10, - }, - { - date: "2022-09-10", - market: "Philadelphia", - dealsClosed: 7, - }, - { - date: "2022-09-12", - market: "Columbus", - dealsClosed: 16, - }, - { - date: "2022-09-17", - market: "Indianapolis", - dealsClosed: 27, - }, - { - date: "2022-09-24", - market: "Charlotte", - dealsClosed: 28, - }, - { - date: "2022-10-04", - market: "Columbus", - dealsClosed: 6, - }, - { - date: "2022-10-08", - market: "Jacksonville", - dealsClosed: 5, - }, - { - date: "2022-10-08", - market: "Memphis", - dealsClosed: 30, - }, - { - date: "2022-10-15", - market: "Tampa", - dealsClosed: 3, - }, - { - date: "2022-10-19", - market: "Philadelphia", - dealsClosed: 26, - }, - { - date: "2022-10-22", - market: "Charlotte", - dealsClosed: 26, - }, - { - date: "2022-10-22", - market: "Las Vegas", - dealsClosed: 3, - }, - { - date: "2022-10-24", - market: "Indianapolis", - dealsClosed: 10, - }, - { - date: "2022-10-28", - market: "Atlanta", - dealsClosed: 11, - }, - { - date: "2022-11-07", - market: "Columbus", - dealsClosed: 29, - }, - { - date: "2022-11-11", - market: "Charlotte", - dealsClosed: 6, - }, - { - date: "2022-11-12", - market: "Indianapolis", - dealsClosed: 9, - }, - { - date: "2022-11-15", - market: "Jacksonville", - dealsClosed: 2, - }, - { - date: "2022-11-15", - market: "Tampa", - dealsClosed: 4, - }, - { - date: "2022-11-16", - market: "Las Vegas", - dealsClosed: 5, - }, - { - date: "2022-11-18", - market: "Memphis", - dealsClosed: 18, - }, - { - date: "2022-11-19", - market: "Atlanta", - dealsClosed: 30, - }, - { - date: "2022-11-21", - market: "Philadelphia", - dealsClosed: 8, - }, - { - date: "2022-12-02", - market: "Indianapolis", - dealsClosed: 23, - }, - { - date: "2022-12-03", - market: "Columbus", - dealsClosed: 16, - }, - { - date: "2022-12-07", - market: "Charlotte", - dealsClosed: 25, - }, - { - date: "2022-12-07", - market: "Jacksonville", - dealsClosed: 1, - }, - { - date: "2022-12-13", - market: "Tampa", - dealsClosed: 23, - }, - { - date: "2022-12-17", - market: "Atlanta", - dealsClosed: 12, - }, - { - date: "2022-12-17", - market: "Philadelphia", - dealsClosed: 22, - }, - { - date: "2022-12-20", - market: "Las Vegas", - dealsClosed: 5, - }, - { - date: "2022-12-23", - market: "Memphis", - dealsClosed: 5, - }, -]; diff --git a/src/utils/mockData/dataVisualizations/radarChart.js b/src/utils/mockData/dataVisualizations/radarChart.js deleted file mode 100644 index 9221927..0000000 --- a/src/utils/mockData/dataVisualizations/radarChart.js +++ /dev/null @@ -1,62 +0,0 @@ -export const mockSalesRadarChart = [ - { - subject: "Probate", - A: 55, - B: 77, - fullMark: 100, - }, - { - subject: "Unknown Equity", - A: 82, - B: 30, - fullMark: 100, - }, - { - subject: "Tax Delinquent", - A: 68, - B: 75, - fullMark: 100, - }, - { - subject: "Pre-Foreclosure", - A: 45, - B: 23, - fullMark: 100, - }, - { - subject: "Tired Landlord", - A: 84, - B: 27, - fullMark: 100, - }, - { - subject: "Absentee", - A: 71, - B: 55, - fullMark: 100, - }, - { - subject: "JV", - A: 25, - B: 39, - fullMark: 100, - }, - { - subject: "Inherited", - A: 64, - B: 40, - fullMark: 100, - }, - { - subject: "Vacant", - A: 71, - B: 59, - fullMark: 100, - }, - { - subject: "Lien", - A: 71, - B: 57, - fullMark: 100, - }, -]; diff --git a/src/utils/mockData/dataVisualizations/singleValueCard.js b/src/utils/mockData/dataVisualizations/singleValueCard.js deleted file mode 100644 index a28a0fc..0000000 --- a/src/utils/mockData/dataVisualizations/singleValueCard.js +++ /dev/null @@ -1,17 +0,0 @@ -// Include also cost per lead, cost per contract, average deal size, and time to close metrics -export const mockSingleValueCardData = [ - { name: "Gross Revenue", value: "$1,204,000" }, - { name: "Net Profit", value: "$775,522" }, - { name: "Deals Closed", value: 15 }, - { name: "Agreements Signed", value: 15 }, - { name: "Leads Generated", value: 30 }, - { name: "Sales Calls Made", value: 67 }, - { name: "Offer Acceptance Rate", value: "4%" }, - { name: "Leads Generated", value: 30 }, - { name: "Conversations to Agreement", value: "30" }, - { name: "Follow Up Calls Made", value: 67 }, - { name: "Cost Per Lead", value: 60 }, - { name: "Average Deal Size", value: "$17,000" }, - { name: "Cost Per Contract", value: 103 }, - { name: "AVG Time to Close (days)", value: 30 }, -]; From 02d3caa3557bbe4c922d776eae9913cb52e105cd Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Sun, 24 Dec 2023 10:48:48 -0800 Subject: [PATCH 003/118] added dynamic query params to dashboard filters --- .../shared/dropdowns/FilterBar/index.js | 2 ++ src/hooks/useDashboardData.js | 21 ++++++++++++------- src/pages/CreamDashboard/index.js | 9 ++++++-- src/utils/constants/uiConstants.js | 8 +++---- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/components/shared/dropdowns/FilterBar/index.js b/src/components/shared/dropdowns/FilterBar/index.js index ca49bc6..89d62d1 100644 --- a/src/components/shared/dropdowns/FilterBar/index.js +++ b/src/components/shared/dropdowns/FilterBar/index.js @@ -9,6 +9,7 @@ import "./FilterBar.css"; const FilterBar = ({ filters, + selectedFilters, onFilterChange, hasToggle, onTogglePriorityLeads, @@ -38,6 +39,7 @@ const FilterBar = ({
{MARKETS.map((market) => ( - + ))} - + diff --git a/src/hooks/useDashboardData.js b/src/hooks/useDashboardData.js index 378957e..146b0a3 100644 --- a/src/hooks/useDashboardData.js +++ b/src/hooks/useDashboardData.js @@ -20,7 +20,6 @@ const useDashboardData = (filters) => { // Construct query parameters from filters const queryParams = new URLSearchParams(filters).toString(); - console.log("queryParams, ", queryParams); const apiUrls = [ `/api/getCardData?${queryParams}`, diff --git a/src/hooks/useLeadsData.js b/src/hooks/useLeadsData.js index 6f53f72..bdee0c4 100644 --- a/src/hooks/useLeadsData.js +++ b/src/hooks/useLeadsData.js @@ -1,4 +1,5 @@ import { useState, useEffect, useCallback } from "react"; +import axios from "axios"; // Import axios /** * Custom hook to fetch and filter leads data. @@ -24,16 +25,12 @@ export const useLeadsData = (filters) => { setIsLoading(true); setError(null); try { - const response = await fetch( + const response = await axios.get( `${process.env.REACT_APP_KONTRAX_API_URL}/api/getLeads` ); - if (!response.ok) { - throw new Error("Network response was not ok"); - } - const leadsData = await response.json(); - setLeads(leadsData.data); - } catch (error) { - setError(error); + setLeads(response.data.data); + } catch (err) { + setError(err); } finally { setIsLoading(false); } @@ -45,8 +42,7 @@ export const useLeadsData = (filters) => { * the leads data or filters object changes. */ const applyFilters = useCallback(() => { - let filtered = [...leads]; // Clone the leads array - + let filtered = [...leads]; Object.keys(filters).forEach((filterName) => { if (filters[filterName] && filters[filterName] !== "all") { const filterValue = filters[filterName].toLowerCase(); @@ -56,19 +52,16 @@ export const useLeadsData = (filters) => { ); } }); - setFilteredLeads(filtered); }, [leads, filters]); - // Fetch leads data when the hook mounts useEffect(() => { fetchLeads(); }, [fetchLeads]); - // Apply filters to the leads data whenever filters change useEffect(() => { applyFilters(); }, [filters, applyFilters]); - return { filteredLeads, isLoading, error, fetchLeads }; + return { leads, filteredLeads, isLoading, error, fetchLeads }; }; diff --git a/src/pages/Leads/index.js b/src/pages/Leads/index.js index e797c2e..aa905f8 100644 --- a/src/pages/Leads/index.js +++ b/src/pages/Leads/index.js @@ -31,7 +31,8 @@ const Leads = () => { const [topPriorityLeads, setTopPriorityLeads] = useState([]); const [nonMaoLeads, setNonMaoLeads] = useState([]); const { setPageHeaderInfo } = usePageHeader(); - const { filteredLeads, isLoading, error, fetchLeads } = useLeadsData(filters); + const { leads, filteredLeads, isLoading, error, fetchLeads } = + useLeadsData(filters); const [currentPage, setCurrentPage] = useState(1); const [leadsPerPage] = useState(10); const [searchTerm, setSearchTerm] = useState(""); @@ -64,11 +65,11 @@ const Leads = () => { // Update top priority leads when the priority filter is toggled useEffect(() => { if (isPriorityFilterOn) { - setTopPriorityLeads(getPriorityLeads(filteredLeads)); + setTopPriorityLeads(getPriorityLeads(leads)); } else if (isMAOFilterOn) { setNonMaoLeads(getNonMaoLeads(filteredLeads)); } - }, [isPriorityFilterOn, isMAOFilterOn, filteredLeads]); + }, [isPriorityFilterOn, isMAOFilterOn, filteredLeads, leads]); // Effect to filter leads based on search term useEffect(() => { @@ -106,7 +107,12 @@ const Leads = () => { setIsPriorityFilterOn(!isPriorityFilterOn); if (!isPriorityFilterOn) { setIsMAOFilterOn(false); // Turn off MAO filter when turning on priority filter + setCurrentPage(1); setTopPriorityLeads(getPriorityLeads(filteredLeads)); + setFilters({ + status: "all", + markets: "all", + }); } }; @@ -115,6 +121,7 @@ const Leads = () => { if (!isMAOFilterOn) { setIsPriorityFilterOn(false); // Turn off priority filter when turning on MAO filter setNonMaoLeads(getNonMaoLeads(filteredLeads)); + setCurrentPage(1); } }; diff --git a/src/utils/constants/appConstants.js b/src/utils/constants/appConstants.js index c390f4b..a73351c 100644 --- a/src/utils/constants/appConstants.js +++ b/src/utils/constants/appConstants.js @@ -3,17 +3,51 @@ export const APP_NAME = "KontraX"; export const MARKETS = [ - "Atlanta", - "Charlotte", - "Columbus", - "Indianapolis", - "Jacksonville", - "Las Vegas", - "Memphis", - "Philadelphia", - "Tampa", + "Appleton, WI", + "Asheville, NC", + "Atlanta, GA", + "Augusta, GA", + "Charlotte, NC", + "Chattanooga, TN", + "Clarksville, TN", + "Columbus, OH", + "Durham, NC", + "Fayetteville, AR", + "Fayetteville, NC", + "Fort Wayne, IN", + "Gainesville, FL", + "Green Bay, WI", + "Hagerstown, MD", + "Hickory, NC", + "Huntsville, AL", + "Indianapolis, IN", + "Jacksonville, FL", + "Las Vegas, NV", + "Lexington, KY", + "Lynchburg, VA", + "Manchester, NH", + "Memphis, TN", + "Myrtle Beach, SC", + "Pensacola, FL", + "Philadelphia, PA", + "Portland, ME", + "Reading, PA", + "Roanoke, VA", + "Salisbury, MD", + "Savannah, GA", + "South Bend, IN", + "Spartanburg, SC", + "Springfield, MO", + "Tampa, FL", + "Trenton, NJ", + "Tyler, TX", + "Visalia, CA", + "Wilmington, NC", ]; +// Sorting the array alphabetically by city names +MARKETS.sort(); + export const LEAD_STATUS_FIELDS = { PRIMARY_NUMBER_HOT: "pn hot", HOT: "hot", diff --git a/src/utils/mockData/mockService.js b/src/utils/mockData/mockService.js index 3debe39..1f5d34a 100644 --- a/src/utils/mockData/mockService.js +++ b/src/utils/mockData/mockService.js @@ -1,5 +1,3 @@ -import { mockLeadsData } from "./mockData"; - /** * Simulates downloading mock data from an API with a random chance of error. * @returns {Promise} - A promise that resolves with mock data or rejects with an error. From f575d4353ddc09487ac8c33ffd876919ebe1887d Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Fri, 12 Jan 2024 20:57:16 -0500 Subject: [PATCH 011/118] minor name refactoring --- src/pages/Buyers/{BuyerOasis.css => Buyer.css} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/pages/Buyers/{BuyerOasis.css => Buyer.css} (100%) diff --git a/src/pages/Buyers/BuyerOasis.css b/src/pages/Buyers/Buyer.css similarity index 100% rename from src/pages/Buyers/BuyerOasis.css rename to src/pages/Buyers/Buyer.css From 619b977f034173e3c76d6b04e49dfe79d7ceda49 Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Fri, 12 Jan 2024 22:33:25 -0500 Subject: [PATCH 012/118] additional settings for extension purposes --- .vscode/settings.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..1f34096 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "cSpell.words": [ + "Kontra" + ] +} \ No newline at end of file From 36919b2e97878bd1d2b74221372b05a0084b0973 Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Sun, 14 Jan 2024 00:31:19 -0500 Subject: [PATCH 013/118] Major updates including aws amplify integration --- .gitignore | 26 +- .vscode/settings.json | 15 +- amplify/.config/project-config.json | 17 + amplify/README.md | 8 + .../api/batchSkiptracing/cli-inputs.json | 18 + amplify/backend/auth/kontrax/cli-inputs.json | 42 + amplify/backend/backend-config.json | 70 + .../skiptraceApiProcessor/amplify.state | 9 + .../custom-policies.json | 6 + .../function-parameters.json | 14 + .../skiptraceApiProcessor/parameters.json | 1 + .../function/skiptraceApiProcessor/src/app.js | 104 + .../skiptraceApiProcessor/src/event.json | 11 + .../skiptraceApiProcessor/src/index.js | 15 + .../src/package-lock.json | 748 ++++++ .../skiptraceApiProcessor/src/package.json | 15 + amplify/backend/tags.json | 10 + .../amplify-dependent-resources-ref.d.ts | 1 + amplify/cli.json | 63 + amplify/hooks/README.md | 7 + amplify/team-provider-info.json | 26 + package-lock.json | 2361 +++++++++++------ package.json | 2 + src/App.js | 47 +- src/App.test.js | 8 - src/AppContent.js | 42 + .../modal/PropertyInputModal/index.js | 8 +- src/components/shared/LoadingSpinner/index.js | 2 +- src/hooks/useDashboardData.js | 26 +- src/pages/Dashboard/index.js | 2 +- src/pages/Leads/index.js | 2 +- src/pages/Prospects/index.js | 10 +- src/setupTests.js | 20 +- src/tests/App.test.js | 58 + .../modal/PropertyInputModal/index.test.js | 28 + 35 files changed, 2967 insertions(+), 875 deletions(-) create mode 100644 amplify/.config/project-config.json create mode 100644 amplify/README.md create mode 100644 amplify/backend/api/batchSkiptracing/cli-inputs.json create mode 100644 amplify/backend/auth/kontrax/cli-inputs.json create mode 100644 amplify/backend/backend-config.json create mode 100644 amplify/backend/function/skiptraceApiProcessor/amplify.state create mode 100644 amplify/backend/function/skiptraceApiProcessor/custom-policies.json create mode 100644 amplify/backend/function/skiptraceApiProcessor/function-parameters.json create mode 100644 amplify/backend/function/skiptraceApiProcessor/parameters.json create mode 100644 amplify/backend/function/skiptraceApiProcessor/src/app.js create mode 100644 amplify/backend/function/skiptraceApiProcessor/src/event.json create mode 100644 amplify/backend/function/skiptraceApiProcessor/src/index.js create mode 100644 amplify/backend/function/skiptraceApiProcessor/src/package-lock.json create mode 100644 amplify/backend/function/skiptraceApiProcessor/src/package.json create mode 100644 amplify/backend/tags.json create mode 100644 amplify/backend/types/amplify-dependent-resources-ref.d.ts create mode 100644 amplify/cli.json create mode 100644 amplify/hooks/README.md create mode 100644 amplify/team-provider-info.json delete mode 100644 src/App.test.js create mode 100644 src/AppContent.js create mode 100644 src/tests/App.test.js create mode 100644 src/tests/components/modal/PropertyInputModal/index.test.js diff --git a/.gitignore b/.gitignore index 1493a09..65a9207 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,28 @@ node_modules .env .DS_Store src/.DS_Store -/build/ \ No newline at end of file +/build/ + +#amplify-do-not-edit-begin +amplify/\#current-cloud-backend +amplify/.config/local-* +amplify/logs +amplify/mock-data +amplify/mock-api-resources +amplify/backend/amplify-meta.json +amplify/backend/.temp +build/ +dist/ +node_modules/ +aws-exports.js +awsconfiguration.json +amplifyconfiguration.json +amplifyconfiguration.dart +amplify-build-config.json +amplify-gradle-config.json +amplifytools.xcconfig +.secret-* +**.sample +#amplify-do-not-edit-end + +*-cloudformation-template.json diff --git a/.vscode/settings.json b/.vscode/settings.json index 1f34096..ff74813 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,12 @@ { - "cSpell.words": [ - "Kontra" - ] -} \ No newline at end of file + "files.exclude": { + "amplify/.config": true, + "amplify/**/*-parameters.json": true, + "amplify/**/amplify.state": true, + "amplify/**/transform.conf.json": true, + "amplify/#current-cloud-backend": true, + "amplify/backend/amplify-meta.json": true, + "amplify/backend/awscloudformation": true + }, + "cSpell.words": ["Kontra", "Skiptrace", "skiptracing", "testid"] +} diff --git a/amplify/.config/project-config.json b/amplify/.config/project-config.json new file mode 100644 index 0000000..49c9b1e --- /dev/null +++ b/amplify/.config/project-config.json @@ -0,0 +1,17 @@ +{ + "projectName": "kontrax", + "version": "3.1", + "frontend": "javascript", + "javascript": { + "framework": "react", + "config": { + "SourceDir": "src", + "DistributionDir": "build", + "BuildCommand": "npm run-script build", + "StartCommand": "npm run-script start" + } + }, + "providers": [ + "awscloudformation" + ] +} \ No newline at end of file diff --git a/amplify/README.md b/amplify/README.md new file mode 100644 index 0000000..7c0a9e2 --- /dev/null +++ b/amplify/README.md @@ -0,0 +1,8 @@ +# Getting Started with Amplify CLI +This directory was generated by [Amplify CLI](https://docs.amplify.aws/cli). + +Helpful resources: +- Amplify documentation: https://docs.amplify.aws +- Amplify CLI documentation: https://docs.amplify.aws/cli +- More details on this folder & generated files: https://docs.amplify.aws/cli/reference/files +- Join Amplify's community: https://amplify.aws/community/ diff --git a/amplify/backend/api/batchSkiptracing/cli-inputs.json b/amplify/backend/api/batchSkiptracing/cli-inputs.json new file mode 100644 index 0000000..47ea6ad --- /dev/null +++ b/amplify/backend/api/batchSkiptracing/cli-inputs.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "paths": { + "/skiptrace": { + "name": "/skiptrace", + "lambdaFunction": "skiptraceApiProcessor", + "permissions": { + "setting": "private", + "auth": [ + "create", + "read", + "update", + "delete" + ] + } + } + } +} \ No newline at end of file diff --git a/amplify/backend/auth/kontrax/cli-inputs.json b/amplify/backend/auth/kontrax/cli-inputs.json new file mode 100644 index 0000000..3e6fbd5 --- /dev/null +++ b/amplify/backend/auth/kontrax/cli-inputs.json @@ -0,0 +1,42 @@ +{ + "version": "1", + "cognitoConfig": { + "identityPoolName": "kontrax_identitypool_508aa692", + "allowUnauthenticatedIdentities": false, + "resourceNameTruncated": "kontra508aa692", + "userPoolName": "kontrax_userpool_508aa692", + "autoVerifiedAttributes": [ + "email" + ], + "mfaConfiguration": "OFF", + "mfaTypes": [ + "SMS Text Message" + ], + "smsAuthenticationMessage": "Your authentication code is {####}", + "smsVerificationMessage": "Your verification code is {####}", + "emailVerificationSubject": "Your verification code", + "emailVerificationMessage": "Your verification code is {####}", + "defaultPasswordPolicy": false, + "passwordPolicyMinLength": 8, + "passwordPolicyCharacters": [], + "requiredAttributes": [ + "email" + ], + "aliasAttributes": [], + "userpoolClientGenerateSecret": false, + "userpoolClientRefreshTokenValidity": 30, + "userpoolClientWriteAttributes": [ + "email" + ], + "userpoolClientReadAttributes": [ + "email" + ], + "userpoolClientLambdaRole": "kontra508aa692_userpoolclient_lambda_role", + "userpoolClientSetAttributes": false, + "authSelections": "identityPoolAndUserPool", + "resourceName": "kontrax", + "sharedId": "508aa692", + "serviceName": "Cognito", + "useDefault": "manual" + } +} \ No newline at end of file diff --git a/amplify/backend/backend-config.json b/amplify/backend/backend-config.json new file mode 100644 index 0000000..41be8d0 --- /dev/null +++ b/amplify/backend/backend-config.json @@ -0,0 +1,70 @@ +{ + "api": { + "batchSkiptracing": { + "dependsOn": [ + { + "attributes": [ + "Name", + "Arn" + ], + "category": "function", + "resourceName": "skiptraceApiProcessor" + } + ], + "providerPlugin": "awscloudformation", + "service": "API Gateway" + } + }, + "auth": { + "kontrax": { + "dependsOn": [], + "frontendAuthConfig": { + "mfaConfiguration": "OFF", + "mfaTypes": [ + "SMS" + ], + "passwordProtectionSettings": { + "passwordPolicyCharacters": [], + "passwordPolicyMinLength": 8 + }, + "signupAttributes": [ + "EMAIL" + ], + "socialProviders": [], + "usernameAttributes": [], + "verificationMechanisms": [ + "EMAIL" + ] + }, + "providerPlugin": "awscloudformation", + "service": "Cognito", + "serviceType": "managed" + } + }, + "function": { + "skiptraceApiProcessor": { + "build": true, + "dependsOn": [], + "providerPlugin": "awscloudformation", + "service": "Lambda" + } + }, + "parameters": { + "AMPLIFY_function_skiptraceApiProcessor_apiBaseUrl": { + "usedBy": [ + { + "category": "function", + "resourceName": "skiptraceApiProcessor" + } + ] + }, + "AMPLIFY_function_skiptraceApiProcessor_bearerTokenName": { + "usedBy": [ + { + "category": "function", + "resourceName": "skiptraceApiProcessor" + } + ] + } + } +} \ No newline at end of file diff --git a/amplify/backend/function/skiptraceApiProcessor/amplify.state b/amplify/backend/function/skiptraceApiProcessor/amplify.state new file mode 100644 index 0000000..ba4128d --- /dev/null +++ b/amplify/backend/function/skiptraceApiProcessor/amplify.state @@ -0,0 +1,9 @@ +{ + "pluginId": "amplify-nodejs-function-runtime-provider", + "functionRuntime": "nodejs", + "useLegacyBuild": true, + "defaultEditorFile": "src/app.js", + "scripts": { + "build": "npm install --no-bin-links --production" + } +} \ No newline at end of file diff --git a/amplify/backend/function/skiptraceApiProcessor/custom-policies.json b/amplify/backend/function/skiptraceApiProcessor/custom-policies.json new file mode 100644 index 0000000..528c94f --- /dev/null +++ b/amplify/backend/function/skiptraceApiProcessor/custom-policies.json @@ -0,0 +1,6 @@ +[ + { + "Action": [], + "Resource": [] + } +] \ No newline at end of file diff --git a/amplify/backend/function/skiptraceApiProcessor/function-parameters.json b/amplify/backend/function/skiptraceApiProcessor/function-parameters.json new file mode 100644 index 0000000..7f072f3 --- /dev/null +++ b/amplify/backend/function/skiptraceApiProcessor/function-parameters.json @@ -0,0 +1,14 @@ +{ + "lambdaLayers": [], + "environmentVariableList": [ + { + "cloudFormationParameterName": "apiBaseUrl", + "environmentVariableName": "API_BASE_URL" + }, + { + "cloudFormationParameterName": "bearerTokenName", + "environmentVariableName": "BEARER_TOKEN_NAME" + } + ], + "secretNames": [] +} \ No newline at end of file diff --git a/amplify/backend/function/skiptraceApiProcessor/parameters.json b/amplify/backend/function/skiptraceApiProcessor/parameters.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/amplify/backend/function/skiptraceApiProcessor/parameters.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/amplify/backend/function/skiptraceApiProcessor/src/app.js b/amplify/backend/function/skiptraceApiProcessor/src/app.js new file mode 100644 index 0000000..f7138b9 --- /dev/null +++ b/amplify/backend/function/skiptraceApiProcessor/src/app.js @@ -0,0 +1,104 @@ +/* +Copyright 2017 - 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with the License. A copy of the License is located at + http://aws.amazon.com/apache2.0/ +or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and limitations under the License. +*/ + +/* Amplify Params - DO NOT EDIT + ENV + REGION +Amplify Params - DO NOT EDIT */ + +const express = require("express"); +const bodyParser = require("body-parser"); +const awsServerlessExpressMiddleware = require("aws-serverless-express/middleware"); +const axios = require("axios"); + +const AWS = require("aws-sdk"); +const ssm = new AWS.SSM(); + +// declare a new express app +const app = express(); +app.use(bodyParser.json()); +app.use(awsServerlessExpressMiddleware.eventContext()); + +/** + * Retrieves a secret value from the secrets manager. + * @param {string} secretName - The name of the secret to retrieve. + * @returns {Promise} - The secret value. + * @throws {Error} - If the secret is not found. + */ +async function getParameter(parameterName) { + try { + const data = await ssm.getParameter({ Name: parameterName }).promise(); + if ("Parameter" in data) { + return data.Parameter.Value; + } + throw new Error("Parameter not found"); + } catch (error) { + console.error(`Error retrieving parameter: ${error.message}`); + throw error; + } +} + +// Enable CORS for all methods +app.use(function (req, res, next) { + res.header("Access-Control-Allow-Origin", "*"); + res.header("Access-Control-Allow-Headers", "*"); + next(); +}); + +/**************************** + * post method * + ****************************/ + +app.post("/skiptrace", async function (req, res) { + const API_BASE_URL = process.env.API_BASE_URL; + const bearerToken = await getParameter(`${process.env.BEARER_TOKEN_NAME}`); + + let requestData = { + requests: req.body.requests, + }; + + /** + * Configuration object for making a POST request to the skip-trace endpoint. + * + * @typedef {Object} Config + * @property {string} method - The HTTP method for the request. + * @property {number} maxBodyLength - The maximum allowed length for the request body. + * @property {string} url - The URL of the skip-trace endpoint. + * @property {Object} headers - The headers for the request. + * @property {string} headers.Content-Type - The content type of the request. + * @property {string} headers.Authorization - The authorization token for the request. + * @property {string} data - The request data as a JSON string. + */ + let config = { + method: "post", + maxBodyLength: Infinity, + url: `${API_BASE_URL}/property/skip-trace`, + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${bearerToken}`, + }, + data: JSON.stringify(requestData), + }; + + try { + let response = await axios.request(config); + res.json(response.data); + } catch (error) { + console.error(error); + res.status(500).send("Error calling external skiptracing API"); + } +}); + +app.listen(3000, function () { + console.log("App started"); +}); + +// Export the app object. When executing the application local this does nothing. However, +// to port it to AWS Lambda we will create a wrapper around that will load the app from +// this file +module.exports = app; diff --git a/amplify/backend/function/skiptraceApiProcessor/src/event.json b/amplify/backend/function/skiptraceApiProcessor/src/event.json new file mode 100644 index 0000000..3fcd57c --- /dev/null +++ b/amplify/backend/function/skiptraceApiProcessor/src/event.json @@ -0,0 +1,11 @@ +{ + "httpMethod": "POST", + "path": "/skiptrace", + "queryStringParameters": { + "limit": "10" + }, + "headers": { + "Content-Type": "application/json" + }, + "body": "{\"requests\": [{\"propertyAddress\": {\"city\": \"Charleston\", \"street\": \"102 Beaufain St\", \"state\": \"SC\", \"zip\": \"29401\"}}, {\"propertyAddress\": {\"street\": \"25866 W Globe Ave\", \"city\": \"Buckeye\", \"state\": \"AZ\", \"zip\": \"85326\"}}]}" +} diff --git a/amplify/backend/function/skiptraceApiProcessor/src/index.js b/amplify/backend/function/skiptraceApiProcessor/src/index.js new file mode 100644 index 0000000..832a7f6 --- /dev/null +++ b/amplify/backend/function/skiptraceApiProcessor/src/index.js @@ -0,0 +1,15 @@ +const awsServerlessExpress = require('aws-serverless-express'); +const app = require('./app'); + +/** + * @type {import('http').Server} + */ +const server = awsServerlessExpress.createServer(app); + +/** + * @type {import('@types/aws-lambda').APIGatewayProxyHandler} + */ +exports.handler = (event, context) => { + console.log(`EVENT: ${JSON.stringify(event)}`); + return awsServerlessExpress.proxy(server, event, context, 'PROMISE').promise; +}; diff --git a/amplify/backend/function/skiptraceApiProcessor/src/package-lock.json b/amplify/backend/function/skiptraceApiProcessor/src/package-lock.json new file mode 100644 index 0000000..19f6328 --- /dev/null +++ b/amplify/backend/function/skiptraceApiProcessor/src/package-lock.json @@ -0,0 +1,748 @@ +{ + "name": "skiptraceapiprocessor", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "skiptraceapiprocessor", + "version": "1.0.0", + "license": "Apache-2.0", + "dependencies": { + "aws-serverless-express": "^3.3.5", + "body-parser": "^1.17.1", + "express": "^4.15.2" + }, + "devDependencies": { + "@types/aws-lambda": "^8.10.92" + } + }, + "node_modules/@codegenie/serverless-express": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@codegenie/serverless-express/-/serverless-express-3.4.1.tgz", + "integrity": "sha512-PQ3v/wDflxx168B4TwuxbbKjfmvLkyRBdvHRFS8s48hDS0Wnukm+5Dp+HiLvqwXOU7PP2+FyrK47WX4WL15Rrw==", + "dependencies": { + "binary-case": "^1.0.0", + "type-is": "^1.6.16" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@types/aws-lambda": { + "version": "8.10.131", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.131.tgz", + "integrity": "sha512-IWmFpqnVDvskYWnNSiu/qlRn80XlIOU0Gy5rKCl/NjhnI95pV8qIHs6L5b+bpHhyzuOSzjLgBcwgFSXrC1nZWA==", + "dev": true + }, + "node_modules/@vendia/serverless-express": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-3.4.1.tgz", + "integrity": "sha512-4dJJvr9vQlq9iUClpfm5iFL+neoSctUI6Zkh9F4wjk/tpcM7QVD6niJi4ptiIzyzJCWoN97ACQCXyE0O8MznLQ==", + "dependencies": { + "@codegenie/serverless-express": "^3.4.1", + "binary-case": "^1.0.0", + "type-is": "^1.6.16" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/aws-serverless-express": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/aws-serverless-express/-/aws-serverless-express-3.4.0.tgz", + "integrity": "sha512-YG9ZjAOI9OpwqDDWzkRc3kKJYJuR7gTMjLa3kAWopO17myoprxskCUyCEee+RKe34tcR4UNrVtgAwW5yDe74bw==", + "dependencies": { + "@vendia/serverless-express": "^3.4.0", + "binary-case": "^1.0.0", + "type-is": "^1.6.16" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/binary-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/binary-case/-/binary-case-1.1.4.tgz", + "integrity": "sha512-9Kq8m6NZTAgy05Ryuh7U3Qc4/ujLQU1AZ5vMw4cr3igTdi5itZC6kCNrRr2X8NzPiDn2oUIFTfa71DKMnue/Zg==" + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + } + } +} diff --git a/amplify/backend/function/skiptraceApiProcessor/src/package.json b/amplify/backend/function/skiptraceApiProcessor/src/package.json new file mode 100644 index 0000000..f601aac --- /dev/null +++ b/amplify/backend/function/skiptraceApiProcessor/src/package.json @@ -0,0 +1,15 @@ +{ + "name": "skiptraceapiprocessor", + "version": "1.0.0", + "description": "Lambda function generated by Amplify", + "main": "index.js", + "license": "Apache-2.0", + "dependencies": { + "aws-serverless-express": "^3.3.5", + "body-parser": "^1.17.1", + "express": "^4.15.2" + }, + "devDependencies": { + "@types/aws-lambda": "^8.10.92" + } +} diff --git a/amplify/backend/tags.json b/amplify/backend/tags.json new file mode 100644 index 0000000..b9321d7 --- /dev/null +++ b/amplify/backend/tags.json @@ -0,0 +1,10 @@ +[ + { + "Key": "user:Stack", + "Value": "{project-env}" + }, + { + "Key": "user:Application", + "Value": "{project-name}" + } +] \ No newline at end of file diff --git a/amplify/backend/types/amplify-dependent-resources-ref.d.ts b/amplify/backend/types/amplify-dependent-resources-ref.d.ts new file mode 100644 index 0000000..074b15b --- /dev/null +++ b/amplify/backend/types/amplify-dependent-resources-ref.d.ts @@ -0,0 +1 @@ +export type AmplifyDependentResourcesAttributes = {} \ No newline at end of file diff --git a/amplify/cli.json b/amplify/cli.json new file mode 100644 index 0000000..19f2663 --- /dev/null +++ b/amplify/cli.json @@ -0,0 +1,63 @@ +{ + "features": { + "graphqltransformer": { + "addmissingownerfields": true, + "improvepluralization": false, + "validatetypenamereservedwords": true, + "useexperimentalpipelinedtransformer": true, + "enableiterativegsiupdates": true, + "secondarykeyasgsi": true, + "skipoverridemutationinputtypes": true, + "transformerversion": 2, + "suppressschemamigrationprompt": true, + "securityenhancementnotification": false, + "showfieldauthnotification": false, + "usesubusernamefordefaultidentityclaim": true, + "usefieldnameforprimarykeyconnectionfield": false, + "enableautoindexquerynames": true, + "respectprimarykeyattributesonconnectionfield": true, + "shoulddeepmergedirectiveconfigdefaults": false, + "populateownerfieldforstaticgroupauth": true + }, + "frontend-ios": { + "enablexcodeintegration": true + }, + "auth": { + "enablecaseinsensitivity": true, + "useinclusiveterminology": true, + "breakcirculardependency": true, + "forcealiasattributes": false, + "useenabledmfas": true + }, + "codegen": { + "useappsyncmodelgenplugin": true, + "usedocsgeneratorplugin": true, + "usetypesgeneratorplugin": true, + "cleangeneratedmodelsdirectory": true, + "retaincasestyle": true, + "addtimestampfields": true, + "handlelistnullabilitytransparently": true, + "emitauthprovider": true, + "generateindexrules": true, + "enabledartnullsafety": true, + "generatemodelsforlazyloadandcustomselectionset": false + }, + "appsync": { + "generategraphqlpermissions": true + }, + "latestregionsupport": { + "pinpoint": 1, + "translate": 1, + "transcribe": 1, + "rekognition": 1, + "textract": 1, + "comprehend": 1 + }, + "project": { + "overrides": true + } + }, + "debug": { + "shareProjectConfig": true + } +} \ No newline at end of file diff --git a/amplify/hooks/README.md b/amplify/hooks/README.md new file mode 100644 index 0000000..8fb601e --- /dev/null +++ b/amplify/hooks/README.md @@ -0,0 +1,7 @@ +# Command Hooks + +Command hooks can be used to run custom scripts upon Amplify CLI lifecycle events like pre-push, post-add-function, etc. + +To get started, add your script files based on the expected naming convention in this directory. + +Learn more about the script file naming convention, hook parameters, third party dependencies, and advanced configurations at https://docs.amplify.aws/cli/usage/command-hooks diff --git a/amplify/team-provider-info.json b/amplify/team-provider-info.json new file mode 100644 index 0000000..5affff4 --- /dev/null +++ b/amplify/team-provider-info.json @@ -0,0 +1,26 @@ +{ + "dev": { + "awscloudformation": { + "AuthRoleName": "amplify-kontrax-dev-185753-authRole", + "UnauthRoleArn": "arn:aws:iam::590184116055:role/amplify-kontrax-dev-185753-unauthRole", + "AuthRoleArn": "arn:aws:iam::590184116055:role/amplify-kontrax-dev-185753-authRole", + "Region": "us-east-1", + "DeploymentBucketName": "amplify-kontrax-dev-185753-deployment", + "UnauthRoleName": "amplify-kontrax-dev-185753-unauthRole", + "StackName": "amplify-kontrax-dev-185753", + "StackId": "arn:aws:cloudformation:us-east-1:590184116055:stack/amplify-kontrax-dev-185753/9160fab0-b26f-11ee-99b1-12f2c229fbdb", + "AmplifyAppId": "d3ks2ff5rcaysv" + }, + "categories": { + "function": { + "skiptraceApiProcessor": { + "apiBaseUrl": "https://stoplight.io/mocks/batchdata/batchdata/20349728", + "bearerTokenName": "kontrax_dev_batch_bearerToken" + } + }, + "auth": { + "kontrax": {} + } + } + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 67de38f..b3daa61 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "aws-sdk": "^2.1535.0", "axios": "^1.6.2", "bootstrap": "^5.3.2", "chart.js": "^4.4.1", @@ -42,6 +43,7 @@ "devDependencies": { "@babel/core": "^7.23.6", "@babel/plugin-proposal-private-property-in-object": "^7.21.11", + "jest": "^27.5.1", "react-scripts": "^5.0.1" } }, @@ -106,9 +108,9 @@ } }, "node_modules/@babel/core": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", - "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", + "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", @@ -116,10 +118,10 @@ "@babel/generator": "^7.23.6", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.6", + "@babel/helpers": "^7.23.7", "@babel/parser": "^7.23.6", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", + "@babel/traverse": "^7.23.7", "@babel/types": "^7.23.6", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -303,9 +305,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", - "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -525,13 +527,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", - "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz", + "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==", "dev": true, "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", + "@babel/traverse": "^7.23.7", "@babel/types": "^7.23.6" }, "engines": { @@ -564,9 +566,9 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", - "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -579,14 +581,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", - "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.15" + "@babel/plugin-transform-optional-chaining": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -595,6 +597,22 @@ "@babel/core": "^7.13.0" } }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-proposal-class-properties": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", @@ -825,9 +843,9 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -840,9 +858,9 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", - "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1027,9 +1045,9 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", - "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1042,14 +1060,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", - "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.7.tgz", + "integrity": "sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/helper-remap-async-to-generator": "^7.22.20", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -1060,14 +1078,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" + "@babel/helper-remap-async-to-generator": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1077,9 +1095,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", - "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1092,9 +1110,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", - "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1107,12 +1125,12 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1123,12 +1141,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", - "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, @@ -1140,18 +1158,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", - "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, @@ -1163,13 +1180,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", - "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" + "@babel/template": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -1179,9 +1196,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", - "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1194,12 +1211,12 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", - "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1210,9 +1227,9 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", - "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1225,9 +1242,9 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", - "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1241,12 +1258,12 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", - "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1257,9 +1274,9 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", - "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1289,12 +1306,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", - "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1304,13 +1322,13 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", - "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1321,9 +1339,9 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", - "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1337,9 +1355,9 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", - "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1352,9 +1370,9 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", - "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1368,9 +1386,9 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", - "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1383,12 +1401,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", - "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1399,12 +1417,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", - "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" }, @@ -1416,13 +1434,13 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", - "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", + "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.20" }, @@ -1434,12 +1452,12 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", - "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1466,9 +1484,9 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", - "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1481,9 +1499,9 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", - "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1497,9 +1515,9 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", - "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1513,16 +1531,16 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", - "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", + "@babel/compat-data": "^7.23.3", "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.15" + "@babel/plugin-transform-parameters": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1532,13 +1550,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", - "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" + "@babel/helper-replace-supers": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1548,9 +1566,9 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", - "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1564,9 +1582,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", - "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1581,9 +1599,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", - "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1596,12 +1614,12 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", - "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1612,13 +1630,13 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", - "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, @@ -1630,9 +1648,9 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", - "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1660,9 +1678,9 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", - "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1709,9 +1727,9 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", - "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -1725,9 +1743,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", - "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1741,9 +1759,9 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", - "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1785,9 +1803,9 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", - "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1800,9 +1818,9 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", - "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1816,9 +1834,9 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", - "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1831,9 +1849,9 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", - "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1846,9 +1864,9 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", - "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1879,9 +1897,9 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", - "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1894,12 +1912,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", - "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1910,12 +1928,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", - "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1926,12 +1944,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", - "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1942,25 +1960,26 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz", - "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.8.tgz", + "integrity": "sha512-lFlpmkApLkEP6woIKprO6DO60RImpatTQKtz4sUcDjVcK8M8mQ4sZsuxaTMNOZf0sqAq/ReYW1ZBHnOQwKpLWA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.20", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -1972,59 +1991,58 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.15", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.15", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.11", - "@babel/plugin-transform-classes": "^7.22.15", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.15", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.11", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.11", - "@babel/plugin-transform-for-of": "^7.22.15", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.11", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.15", - "@babel/plugin-transform-modules-systemjs": "^7.22.11", - "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.7", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.3", + "@babel/plugin-transform-modules-umd": "^7.23.3", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", - "@babel/plugin-transform-numeric-separator": "^7.22.11", - "@babel/plugin-transform-object-rest-spread": "^7.22.15", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.11", - "@babel/plugin-transform-optional-chaining": "^7.22.15", - "@babel/plugin-transform-parameters": "^7.22.15", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.10", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.10", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.22.19", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", + "babel-plugin-polyfill-corejs2": "^0.4.7", + "babel-plugin-polyfill-corejs3": "^0.8.7", + "babel-plugin-polyfill-regenerator": "^0.5.4", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -2071,17 +2089,17 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz", - "integrity": "sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-transform-react-display-name": "^7.22.5", + "@babel/plugin-transform-react-display-name": "^7.23.3", "@babel/plugin-transform-react-jsx": "^7.22.15", "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.22.5" + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -2141,9 +2159,9 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", - "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.23.5", @@ -3023,6 +3041,26 @@ "node": ">=8" } }, + "node_modules/@jest/console/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/@jest/console/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3140,6 +3178,26 @@ "node": ">=8" } }, + "node_modules/@jest/core/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3203,65 +3261,7 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "dev": 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": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-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.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "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 - } - } - }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { + "node_modules/@jest/fake-timers/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -3276,7 +3276,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/reporters/node_modules/chalk": { + "node_modules/@jest/fake-timers/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -3292,7 +3292,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/reporters/node_modules/color-convert": { + "node_modules/@jest/fake-timers/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -3304,13 +3304,305 @@ "node": ">=7.0.0" } }, - "node_modules/@jest/reporters/node_modules/color-name": { + "node_modules/@jest/fake-timers/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@jest/reporters/node_modules/has-flag": { + "node_modules/@jest/fake-timers/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/fake-timers/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/globals/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/globals/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/globals/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/globals/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/globals/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dev": 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": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-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.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "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 + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -3341,15 +3633,14 @@ } }, "node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dependencies": { - "@sinclair/typebox": "^0.24.1" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/source-map": { @@ -4244,10 +4535,9 @@ "dev": true }, "node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" }, "node_modules/@sinonjs/commons": { "version": "1.8.6", @@ -5017,259 +5307,72 @@ } }, "node_modules/@types/graceful-fs": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", - "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.3.tgz", - "integrity": "sha512-Wny3a2UXn5FEA1l7gc6BbpoV5mD1XijZqgkp4TRgDCDL5r3B5ieOFGUX5h3n78Tr1MEG7BfvoM8qeztdvNU0fw==", - "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } - }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true - }, - "node_modules/@types/http-errors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz", - "integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==", - "dev": true - }, - "node_modules/@types/http-proxy": { - "version": "1.17.12", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.12.tgz", - "integrity": "sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.5", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz", - "integrity": "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==", - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/jest/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" - }, - "node_modules/@types/jest/node_modules/@types/yargs": { - "version": "17.0.28", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz", - "integrity": "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@types/jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@types/jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@types/jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@types/jest/node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", + "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", + "dev": true, + "dependencies": { + "@types/node": "*" } }, - "node_modules/@types/jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.3.tgz", + "integrity": "sha512-Wny3a2UXn5FEA1l7gc6BbpoV5mD1XijZqgkp4TRgDCDL5r3B5ieOFGUX5h3n78Tr1MEG7BfvoM8qeztdvNU0fw==", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" } }, - "node_modules/@types/jest/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz", + "integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.12", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.12.tgz", + "integrity": "sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==", + "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@types/node": "*" } }, - "node_modules/@types/jest/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" }, - "node_modules/@types/jest/node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/@types/jest/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@types/istanbul-lib-report": "*" } }, - "node_modules/@types/jest/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/@types/jest": { + "version": "29.5.5", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz", + "integrity": "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" } }, "node_modules/@types/jest/node_modules/pretty-format": { @@ -5301,17 +5404,6 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, - "node_modules/@types/jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@types/json-schema": { "version": "7.0.13", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", @@ -6425,6 +6517,47 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/aws-sdk": { + "version": "2.1535.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1535.0.tgz", + "integrity": "sha512-Ah9prS7ZX4rIMPBeXmBD1NV6tIHoJoryrCe1Zr/Zk4PdEM743jezpfIyM9bMhzKi/Z0CmBkqtHx54uPAghsp7A==", + "dependencies": { + "buffer": "4.9.2", + "events": "1.1.1", + "ieee754": "1.1.13", + "jmespath": "0.16.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "util": "^0.12.4", + "uuid": "8.0.0", + "xml2js": "0.5.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aws-sdk/node_modules/events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/aws-sdk/node_modules/sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" + }, + "node_modules/aws-sdk/node_modules/uuid": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -6479,98 +6612,6 @@ "dequal": "^2.0.3" } }, - "node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/babel-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/babel-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/babel-loader": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", @@ -6624,21 +6665,6 @@ "node": ">=8" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/babel-plugin-macros": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", @@ -6663,13 +6689,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", - "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz", + "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.2", + "@babel/helper-define-polyfill-provider": "^0.4.4", "semver": "^6.3.1" }, "peerDependencies": { @@ -6686,25 +6712,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz", - "integrity": "sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg==", + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2", - "core-js-compat": "^3.32.2" + "@babel/helper-define-polyfill-provider": "^0.4.4", + "core-js-compat": "^3.33.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", - "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz", + "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2" + "@babel/helper-define-polyfill-provider": "^0.4.4" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -6739,22 +6765,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, "node_modules/babel-preset-react-app": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", @@ -7030,12 +7040,27 @@ "node-int64": "^0.4.0" } }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/buffer/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -7582,12 +7607,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.33.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", - "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.0.tgz", + "integrity": "sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==", "dev": true, "dependencies": { - "browserslist": "^4.22.1" + "browserslist": "^4.22.2" }, "funding": { "type": "opencollective", @@ -8735,12 +8760,11 @@ "dev": true }, "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/dir-glob": { @@ -8844,6 +8868,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", "dev": true, "dependencies": { "webidl-conversions": "^5.0.0" @@ -10002,18 +10027,130 @@ } }, "node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expect/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expect/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/expect/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expect/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/expect/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expect/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/expect/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/expect/node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expect/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expect/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/express": { @@ -11414,6 +11551,11 @@ "node": ">=4" } }, + "node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -11730,7 +11872,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -12347,6 +12488,30 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/jest-circus/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -12356,6 +12521,56 @@ "node": ">=8" } }, + "node_modules/jest-circus/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -12530,6 +12745,59 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-config/node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -12585,26 +12853,24 @@ "node": ">=8" } }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -12619,7 +12885,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12635,7 +12900,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -12646,23 +12910,57 @@ "node_modules/jest-diff/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } }, + "node_modules/jest-diff/node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -12915,6 +13213,30 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/jest-jasmine2/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-jasmine2/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -12924,6 +13246,56 @@ "node": ">=8" } }, + "node_modules/jest-jasmine2/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-jasmine2/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -12950,25 +13322,23 @@ } }, "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -12983,7 +13353,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12999,7 +13368,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -13010,23 +13378,57 @@ "node_modules/jest-matcher-utils/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } }, + "node_modules/jest-matcher-utils/node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -13035,30 +13437,52 @@ } }, "node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", + "@jest/types": "^29.6.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" } }, "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -13073,7 +13497,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13089,7 +13512,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -13100,23 +13522,49 @@ "node_modules/jest-message-util/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -13355,7 +13803,27 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-runner/node_modules/supports-color": { @@ -13461,6 +13929,26 @@ "node": ">=8" } }, + "node_modules/jest-runtime/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -13568,6 +14056,30 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/jest-snapshot/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -13577,6 +14089,56 @@ "node": ">=8" } }, + "node_modules/jest-snapshot/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -13810,6 +14372,18 @@ "node": ">=8" } }, + "node_modules/jest-watch-typeahead/node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", @@ -13842,10 +14416,16 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, + "node_modules/jest-watch-typeahead/node_modules/@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", + "dev": true + }, "node_modules/jest-watch-typeahead/node_modules/@types/yargs": { - "version": "17.0.28", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz", - "integrity": "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -14264,6 +14844,14 @@ "jiti": "bin/jiti.js" } }, + "node_modules/jmespath": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/jose": { "version": "4.14.4", "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz", @@ -17439,6 +18027,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -17899,6 +18496,129 @@ } } }, + "node_modules/react-scripts/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-scripts/node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/react-scripts/node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/react-scripts/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/react-scripts/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/react-scripts/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/react-scripts/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-scripts/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/react-smooth": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-2.0.5.tgz", @@ -18597,8 +19317,7 @@ "node_modules/sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "node_modules/saxes": { "version": "5.0.1", @@ -20363,6 +21082,15 @@ "punycode": "^2.1.0" } }, + "node_modules/url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, "node_modules/url-parse": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", @@ -20372,6 +21100,11 @@ "requires-port": "^1.0.0" } }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, "node_modules/use-sync-external-store": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", @@ -20380,6 +21113,18 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -21496,6 +22241,26 @@ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, "node_modules/xmlbuilder": { "version": "15.1.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", diff --git a/package.json b/package.json index 0385004..72e9c9a 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "aws-sdk": "^2.1535.0", "axios": "^1.6.2", "bootstrap": "^5.3.2", "chart.js": "^4.4.1", @@ -61,6 +62,7 @@ "devDependencies": { "@babel/core": "^7.23.6", "@babel/plugin-proposal-private-property-in-object": "^7.21.11", + "jest": "^27.5.1", "react-scripts": "^5.0.1" } } diff --git a/src/App.js b/src/App.js index c7df413..f29232d 100644 --- a/src/App.js +++ b/src/App.js @@ -1,49 +1,14 @@ import React from "react"; -import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; -import { PageHeaderProvider } from "./context"; -import HomePageLayout from "./components/layout/HomePageLayout"; -import Dashboard from "./pages/Dashboard"; -import Prospects from "./pages/Prospects"; -import Leads from "./pages/Leads"; +import { BrowserRouter as Router } from "react-router-dom"; import "./assets/theme.css"; +import AppContent from "./AppContent"; -const AppContent = () => { +const App = () => { return ( - - - - - - - } - /> - - - - } - /> - - - - } - /> - - - + + + ); }; -const App = () => { - return ; -}; - export default App; diff --git a/src/App.test.js b/src/App.test.js deleted file mode 100644 index 1f03afe..0000000 --- a/src/App.test.js +++ /dev/null @@ -1,8 +0,0 @@ -import { render, screen } from '@testing-library/react'; -import App from './App'; - -test('renders learn react link', () => { - render(); - const linkElement = screen.getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); -}); diff --git a/src/AppContent.js b/src/AppContent.js new file mode 100644 index 0000000..2cf4245 --- /dev/null +++ b/src/AppContent.js @@ -0,0 +1,42 @@ +import { Routes } from "react-router-dom"; +import { Route } from "react-router-dom"; +import { PageHeaderProvider } from "./context"; +import HomePageLayout from "./components/layout/HomePageLayout"; +import Dashboard from "./pages/Dashboard"; +import Prospects from "./pages/Prospects"; +import Leads from "./pages/Leads"; + +const AppContent = () => { + return ( + + + + + + } + /> + + + + } + /> + + + + } + /> + + + ); +}; + +export default AppContent; diff --git a/src/components/modal/PropertyInputModal/index.js b/src/components/modal/PropertyInputModal/index.js index ce34712..2ea64a7 100644 --- a/src/components/modal/PropertyInputModal/index.js +++ b/src/components/modal/PropertyInputModal/index.js @@ -1,4 +1,3 @@ -// components/Modal/PropertyInputModal.js import React, { useState, useRef, useEffect } from "react"; import "./PropertyInputModal.css"; import { MARKETS } from "../../../utils/constants/appConstants"; @@ -12,6 +11,13 @@ import Button from "../../shared/Button"; import Select from "@mui/material/Select"; import MenuItem from "@mui/material/MenuItem"; +/** + * PropertyInputModal component. + * + * @param {Object} props - The component props. + * @param {Function} props.closeModal - The function to close the modal. + * @returns {JSX.Element} The PropertyInputModal component. + */ const PropertyInputModal = ({ closeModal }) => { const [formData, setFormData] = useState({ market: MARKETS[0], diff --git a/src/components/shared/LoadingSpinner/index.js b/src/components/shared/LoadingSpinner/index.js index 5d91f89..7f59062 100644 --- a/src/components/shared/LoadingSpinner/index.js +++ b/src/components/shared/LoadingSpinner/index.js @@ -4,7 +4,7 @@ import "./LoadingSpinner.css"; // Assuming you have a separate CSS file for the const LoadingSpinner = () => { return ( -
+
); diff --git a/src/hooks/useDashboardData.js b/src/hooks/useDashboardData.js index 146b0a3..72f686d 100644 --- a/src/hooks/useDashboardData.js +++ b/src/hooks/useDashboardData.js @@ -1,4 +1,5 @@ import { useState, useCallback, useEffect } from "react"; +import axios from "axios"; const useDashboardData = (filters) => { const [data, setData] = useState({ @@ -17,8 +18,6 @@ const useDashboardData = (filters) => { const fetchData = useCallback(async () => { try { setIsLoading(true); - - // Construct query parameters from filters const queryParams = new URLSearchParams(filters).toString(); const apiUrls = [ @@ -29,25 +28,18 @@ const useDashboardData = (filters) => { `/api/getLeadSourcePerformance?${queryParams}`, ]; - const requests = apiUrls.map((url) => - fetch(`${process.env.REACT_APP_KONTRAX_API_URL}${url}`).then( - (response) => { - if (!response.ok) { - throw new Error(`Network response was not ok for ${url}`); - } - return response.json(); - } + const responses = await Promise.all( + apiUrls.map((url) => + axios.get(`${process.env.REACT_APP_KONTRAX_API_URL}${url}`) ) ); - const responses = await Promise.all(requests); - setData({ - singleValueCardData: responses[0].data, - barChartData: responses[1].data, - bubbleChartData: responses[2].data, - roiByLeadSourceData: responses[3].data, - salesRadarChartData: responses[4].data, + singleValueCardData: responses[0].data.data, + barChartData: responses[1].data.data, + bubbleChartData: responses[2].data.data, + roiByLeadSourceData: responses[3].data.data, + salesRadarChartData: responses[4].data.data, }); } catch (error) { setError(error); diff --git a/src/pages/Dashboard/index.js b/src/pages/Dashboard/index.js index 9dd42c4..2841353 100644 --- a/src/pages/Dashboard/index.js +++ b/src/pages/Dashboard/index.js @@ -76,7 +76,7 @@ const Dashboard = () => { } = data; return ( -
+
{ }, []); return ( -
+
{ const [isPropertyModalOpen, setIsPropertyModalOpen] = useState(false); const [isSkiptraceModalOpen, setIsSkiptraceModalOpen] = useState(false); @@ -21,6 +26,9 @@ const Prospects = () => { }; const closePropertyModal = () => setIsPropertyModalOpen(false); + /** + * Opens the skiptrace modal and closes the property modal. + */ const openSkiptraceModal = () => { setIsSkiptraceModalOpen(true); setIsPropertyModalOpen(false); @@ -28,7 +36,7 @@ const Prospects = () => { const closeSkiptraceModal = () => setIsSkiptraceModalOpen(false); return ( -
+
- {isProcessing && } + {isProcessing && isLoading && } + + {emailSent && ( + + )} + + {messageInfo && ( + + )} - {((!isProcessing && + {emailErrorMessage && ( + + )} + + {(!isProcessing && !processedFile && selectedFile && selectedFile.length > 0) || - messageInfo.type === "error") && ( + (messageInfo && messageInfo.type === "error") ? ( - )} - - {!isProcessing && messageInfo.message && ( - - )} + ) : null} {showHeaderMappingModal && ( { const [data, setData] = useState(null); const [isLoading, setIsLoading] = useState(false); const [prospectsError, setProspectsError] = useState(null); + const [skiptracingError, setSkiptracingError] = useState(null); const [sendEmailError, setSendEmailError] = useState(null); const [emailSent, setEmailSent] = useState(false); const environment = getEnvironment(); @@ -18,18 +16,16 @@ const useProspectData = () => { const sendGridApiUrl = process.env.REACT_APP_KONTRAX_SENDGRID_API_URL + "/" + environment; - const fetchData = async (marketObj, dataType) => { + const fetchProspectData = async (marketObj, dataType) => { setIsLoading(true); setData(null); setProspectsError(null); setSendEmailError(null); const requestData = getProspectApiRequest(marketObj.market, dataType); const headers = {}; - - headers["Authorization"] = process.env.REACT_APP_KONTRAX_BATCH_API_TOKEN; + // headers["Authorization"] = process.env.REACT_APP_KONTRAX_BATCH_API_TOKEN; try { - console.log("api: ", prospectsApiUrl); const response = await axios.post( prospectsApiUrl + "/property/search", requestData, @@ -46,7 +42,7 @@ const useProspectData = () => { }; const sendEmailWithCSV = async (csv, recipientEmail) => { - debugger; + setIsLoading(true); const base64Content = btoa( encodeURIComponent(csv.csvContent).replace( /%([0-9A-F]{2})/g, @@ -57,7 +53,7 @@ const useProspectData = () => { const emailApiPayload = { personalizations: [{ to: [{ email: recipientEmail }] }], from: { email: "hasani@hendrixventures.com" }, - subject: "TEST: Your CSV Data", + subject: csv.fileName, content: [ { type: "text/plain", value: "Please find the attached CSV file." }, ], @@ -77,6 +73,32 @@ const useProspectData = () => { } catch (error) { console.error("Error sending email with CSV. Please try again.", error); setSendEmailError(true); + } finally { + setIsLoading(false); + } + }; + + const skiptraceProperties = async (requestBody) => { + setIsLoading(true); + setData(null); + setSkiptracingError(null); + + const headers = {}; + // headers["Authorization"] = process.env.REACT_APP_KONTRAX_BATCH_API_TOKEN; + + try { + const response = await axios.post( + prospectsApiUrl + "/skiptrace", + requestBody, + { + headers, + } + ); + setData(response.data); + } catch (error) { + setSkiptracingError(prospectsError); + } finally { + setIsLoading(false); } }; @@ -85,9 +107,11 @@ const useProspectData = () => { isLoading, prospectsError, sendEmailError, - fetchData, + fetchProspectData, sendEmailWithCSV, emailSent, + skiptraceProperties, + skiptracingError, }; }; diff --git a/src/utils/apiCommonFunctions.js b/src/utils/apiCommonFunctions.js index 15d7219..9ffa1d1 100644 --- a/src/utils/apiCommonFunctions.js +++ b/src/utils/apiCommonFunctions.js @@ -1,5 +1,6 @@ import Papa from "papaparse"; import { getFormattedYyMmDdDate } from "./commonFunctions"; +import { PROSPECTS_API_DATA_TYPE } from "./constants/apiConstants"; export const generateProspectsCSV = (apiResponse, market) => { const properties = apiResponse.results.properties; @@ -29,6 +30,44 @@ export const generateProspectsCSV = (apiResponse, market) => { return { csvContent, fileName }; }; +export const generateSkiptraceCSV = (apiResponse) => { + const persons = apiResponse.results.persons; + + const data = persons.map((person) => ({ + firstName: person.name.first, + lastName: person.name.last, + email: person.emails.length > 0 ? person.emails[0].email : "", + phoneNumber1: person.phoneNumbers[0] ? person.phoneNumbers[0].number : "", + phoneNumber2: person.phoneNumbers[1] ? person.phoneNumbers[1].number : "", + mobilePhoneNumber: person.phoneNumbers + .filter((phone) => phone.type === "Mobile") + .sort((a, b) => b.score - a.score)[0] + ? person.phoneNumbers + .filter((phone) => phone.type === "Mobile") + .sort((a, b) => b.score - a.score)[0].number + : "", + streetAddress: person.property.address.street, + city: person.property.address.city, + county: person.property.address.county, + state: person.property.address.state, + zip: person.property.address.zip, + equity: person.property.equity, + equityPercent: `${person.property.equityPercent}%`, + absenteeOwner: person.property.absenteeOwner ? "Yes" : "No", + vacant: person.property.vacant ? "Yes" : "No", + })); + + const csvContent = Papa.unparse(data, { + header: true, + newline: "\n", + }); + + const date = getFormattedYyMmDdDate(); + const fileName = `SkiptraceResults_${date}.csv`; + + return { csvContent, fileName }; +}; + export const downloadProspectsCSV = (csv, fileName) => { const blob = new Blob([csv], { type: "text/csv;charset=utf-8;" }); const link = document.createElement("a"); @@ -39,3 +78,203 @@ export const downloadProspectsCSV = (csv, fileName) => { link.click(); document.body.removeChild(link); }; + +const PROSPECTS_NICHE_REQUEST = (market) => { + return { + searchCriteria: { + orQuickLists: [ + "unknown-equity", + "inherited", + "preforeclosure", + "tired-landlord", + "vacant", + "tax-default", + ], + query: market, + general: { + propertyTypeCategory: { + equals: "Residential", + }, + propertyTypeDetail: { + inList: ["Single-Family", "Townhouse", "Duplex"], + }, + }, + owner: { + ownerStatusType: { + equals: "Individual", + }, + }, + valuation: { + equityPercentage: { + min: 50, + max: 200, + }, + }, + mls: { + status: { + notInList: ["Active"], + }, + }, + }, + options: { + skip: 0, + take: 1, + skipTrace: false, + projection: "custom", + customProjection: [ + "owner.fullName", + "address.street", + "address.city", + "address.state", + "address.zip", + "address.streetNoUnit", + "address.cityAliases", + "address.latitude", + "address.longitude", + "owner.mailingAddress.street", + "owner.mailingAddress.city", + "owner.mailingAddress.state", + "owner.mailingAddress.zip", + "owner.mailingAddress.streetNoUnit", + "owner.emails", + "owner.phoneNumbers", + "owner.litigator", + "owner.ownerStatusType", + "building.livingAreaSquareFeet", + "building.yearBuilt", + "building.bedroomCount", + "building.bathroomCount", + "general.propertyTypeDetail", + "general.propertyTypeCategory", + "quickLists.unknownEquity", + "quickLists.inherited", + "quickLists.preforeclosure", + "quickLists.tiredLandlord", + "quickLists.vacant", + "quickLists.taxDefault", + "intel.distressScore", + ], + }, + }; +}; + +const PROSPECTS_ABSENTEE_REQUEST = (market) => { + return { + searchCriteria: { + orQuickLists: [ + "free-and-clear", + "out-of-state-absentee-owner", + "out-of-state-owner", + "in-state-absentee-owner", + "absentee-owner", + "high-equity", + ], + query: market, + general: { + propertyTypeCategory: { + equals: "Residential", + }, + propertyTypeDetail: { + inList: ["Single-Family", "Townhouse", "Duplex"], + }, + }, + building: { + yearBuilt: { + max: 2000, + }, + }, + owner: { + lengthOfResidenceYears: { + min: 3, + max: 10, + }, + ownerOccupied: { + equals: false, + }, + ownerStatusType: { + equals: "Individual", + }, + }, + valuation: { + equityPercentage: { + min: 50, + max: 200, + }, + }, + mls: { + status: { + notInList: ["Active"], + }, + }, + }, + options: { + skip: 0, + take: 1, + skipTrace: false, + projection: "custom", + customProjection: [ + "owner.fullName", + "address.street", + "address.city", + "address.state", + "address.zip", + "address.streetNoUnit", + "address.cityAliases", + "address.latitude", + "address.longitude", + "owner.mailingAddress.street", + "owner.mailingAddress.city", + "owner.mailingAddress.state", + "owner.mailingAddress.zip", + "owner.mailingAddress.streetNoUnit", + "owner.emails", + "owner.phoneNumbers", + "owner.litigator", + "owner.ownerStatusType", + "building.livingAreaSquareFeet", + "building.yearBuilt", + "building.bedroomCount", + "building.bathroomCount", + "general.propertyTypeDetail", + "general.propertyTypeCategory", + "quickLists.freeAndClear", + "quickLists.highEquity", + "quickLists.absenteeOwnerOutOfState", + "quickLists.absenteeOwner", + "intel.distressScore", + ], + }, + }; +}; + +export const getProspectApiRequest = (market, dataType) => { + return dataType.toLowerCase() === PROSPECTS_API_DATA_TYPE.ABSENTEE + ? PROSPECTS_ABSENTEE_REQUEST(market) + : PROSPECTS_NICHE_REQUEST(market); +}; + +export const transformCsvToSkiptraceApiRequestBody = ( + csvContent, + headerMappings +) => { + // Parse the CSV content using PapaParse + const parsed = Papa.parse(csvContent, { + header: true, // Indicates the first row of the CSV contains headers + skipEmptyLines: true, // Skips empty lines to avoid processing them + }); + + // Transform each row of the CSV into the desired JSON structure + const requests = parsed.data.map((row) => { + return { + propertyAddress: { + street: row[headerMappings["propertyAddress"]], + city: row[headerMappings["propertyCity"]], + state: row[headerMappings["propertyState"]], + zip: row[headerMappings["propertyZip"]], + }, + }; + }); + + // Wrap the transformed rows in a "requests" array to match the expected API structure + return { requests }; +}; diff --git a/src/utils/commonFunctions.js b/src/utils/commonFunctions.js index efb7092..74ebf36 100644 --- a/src/utils/commonFunctions.js +++ b/src/utils/commonFunctions.js @@ -1,9 +1,6 @@ import Papa from "papaparse"; import moment from "moment"; -import { - PROSPECTS_API_DATA_TYPE, - SKIPTRACE_API_EXPECTED_HEADERS, -} from "./constants/apiConstants"; +import { SKIPTRACE_API_EXPECTED_HEADERS } from "./constants/apiConstants"; import { LEAD_STATUS_FIELDS } from "./constants/appConstants"; export const readFileContent = (file) => { @@ -27,25 +24,26 @@ export const readFileContent = (file) => { }); }; -export const triggerFileDownload = (file, fileName) => { - const url = URL.createObjectURL(file); - const a = document.createElement("a"); - a.href = url; - a.download = fileName || "download"; - document.body.appendChild(a); - a.click(); - window.URL.revokeObjectURL(url); - a.remove(); -}; +export const decodeBase64Content = (base64Content) => { + // Check if the content includes a data URI scheme and split if present + const base64EncodedCsv = base64Content.includes("base64,") + ? base64Content.split("base64,")[1] + : base64Content; -export const decodeBase64 = (base64String) => { - return atob(base64String); + const decodedContent = atob(base64EncodedCsv); + + return decodedContent; }; -export const isValidCSVFile = (file) => { - return file && file.type === "text/csv"; +export const flipMappings = (mappings) => { + const flipped = {}; + Object.entries(mappings).forEach(([key, value]) => { + flipped[value] = key; + }); + return flipped; }; + export const extractHeadersFromFile = (fileObj) => { return new Promise((resolve, reject) => { try { @@ -62,22 +60,8 @@ export const extractHeadersFromFile = (fileObj) => { }); }; -export const transformFileContent = (content, headerMappings) => { - const parsed = Papa.parse(content, { - header: true, // The first row of the CSV is interpreted as field names - }); - - const transformedRows = parsed.data.map((row) => { - const transformedRow = {}; - Object.entries(headerMappings).forEach(([userHeader, apiField]) => { - transformedRow[apiField] = row[userHeader]; - }); - return transformedRow; - }); - - // Convert the transformed data back to a CSV string - const transformedContent = Papa.unparse(transformedRows); - return transformedContent; +export const decodeBase64 = (base64String) => { + return atob(base64String); }; export const areValuesUnique = (vals) => { @@ -111,14 +95,6 @@ export const formatPhoneNumber = (phoneNumber) => { : null; }; -export const humanReadableFileSize = (bytes) => { - const sizes = ["Bytes", "KB", "MB"]; - if (bytes === 0) return "0 Bytes"; - const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10); - if (i === 0) return `${bytes} ${sizes[i]}`; - return `${(bytes / 1024 ** i).toFixed(1)} ${sizes[i]}`; -}; - export const truncateEmail = (email) => { return email.length > 13 ? email.slice(0, 10) + "..." : email; }; @@ -204,180 +180,6 @@ export const getDisplayedPages = ( return pages; }; -export const getProspectApiRequest = (market, dataType) => { - return dataType.toLowerCase() === PROSPECTS_API_DATA_TYPE.ABSENTEE - ? PROSPECTS_ABSENTEE_REQUEST(market) - : PROSPECTS_NICHE_REQUEST(market); -}; - -const PROSPECTS_ABSENTEE_REQUEST = (market) => { - return { - searchCriteria: { - orQuickLists: [ - "free-and-clear", - "out-of-state-absentee-owner", - "out-of-state-owner", - "in-state-absentee-owner", - "absentee-owner", - "high-equity", - ], - query: market, - general: { - propertyTypeCategory: { - equals: "Residential", - }, - propertyTypeDetail: { - inList: ["Single-Family", "Townhouse", "Duplex"], - }, - }, - building: { - yearBuilt: { - max: 2000, - }, - }, - owner: { - lengthOfResidenceYears: { - min: 3, - max: 10, - }, - ownerOccupied: { - equals: false, - }, - ownerStatusType: { - equals: "Individual", - }, - }, - valuation: { - equityPercentage: { - min: 50, - max: 200, - }, - }, - mls: { - status: { - notInList: ["Active"], - }, - }, - }, - options: { - skip: 0, - take: 1, - skipTrace: false, - projection: "custom", - customProjection: [ - "owner.fullName", - "address.street", - "address.city", - "address.state", - "address.zip", - "address.streetNoUnit", - "address.cityAliases", - "address.latitude", - "address.longitude", - "owner.mailingAddress.street", - "owner.mailingAddress.city", - "owner.mailingAddress.state", - "owner.mailingAddress.zip", - "owner.mailingAddress.streetNoUnit", - "owner.emails", - "owner.phoneNumbers", - "owner.litigator", - "owner.ownerStatusType", - "building.livingAreaSquareFeet", - "building.yearBuilt", - "building.bedroomCount", - "building.bathroomCount", - "general.propertyTypeDetail", - "general.propertyTypeCategory", - "quickLists.freeAndClear", - "quickLists.highEquity", - "quickLists.absenteeOwnerOutOfState", - "quickLists.absenteeOwner", - "intel.distressScore", - ], - }, - }; -}; - -const PROSPECTS_NICHE_REQUEST = (market) => { - return { - searchCriteria: { - orQuickLists: [ - "unknown-equity", - "inherited", - "preforeclosure", - "tired-landlord", - "vacant", - "tax-default", - ], - query: market, - general: { - propertyTypeCategory: { - equals: "Residential", - }, - propertyTypeDetail: { - inList: ["Single-Family", "Townhouse", "Duplex"], - }, - }, - owner: { - ownerStatusType: { - equals: "Individual", - }, - }, - valuation: { - equityPercentage: { - min: 50, - max: 200, - }, - }, - mls: { - status: { - notInList: ["Active"], - }, - }, - }, - options: { - skip: 0, - take: 1, - skipTrace: false, - projection: "custom", - customProjection: [ - "owner.fullName", - "address.street", - "address.city", - "address.state", - "address.zip", - "address.streetNoUnit", - "address.cityAliases", - "address.latitude", - "address.longitude", - "owner.mailingAddress.street", - "owner.mailingAddress.city", - "owner.mailingAddress.state", - "owner.mailingAddress.zip", - "owner.mailingAddress.streetNoUnit", - "owner.emails", - "owner.phoneNumbers", - "owner.litigator", - "owner.ownerStatusType", - "building.livingAreaSquareFeet", - "building.yearBuilt", - "building.bedroomCount", - "building.bathroomCount", - "general.propertyTypeDetail", - "general.propertyTypeCategory", - "quickLists.unknownEquity", - "quickLists.inherited", - "quickLists.preforeclosure", - "quickLists.tiredLandlord", - "quickLists.vacant", - "quickLists.taxDefault", - "intel.distressScore", - ], - }, - }; -}; - export const getEnvironment = () => { return process.env.NODE_ENV === "development" ? "dev" : "prod"; }; diff --git a/src/utils/mockData/mockData.js b/src/utils/mockData/mockData.js deleted file mode 100644 index 170e528..0000000 --- a/src/utils/mockData/mockData.js +++ /dev/null @@ -1,3 +0,0 @@ -export const mockFileData = `FirstName,LastName,MailingAddress,MailingCity,MailingState,MailingZip,PropertyAddress,PropertyCity,PropertyState,PropertyZip -Jane,Doe,123 Fake St,Faketown,FA,12345,321 Real Rd,Realtown,RE,54321 -John,Smith,555 Broadway Ave,New York,NY,10010,777 Country Rd,Townsville,TS,77777`; diff --git a/src/utils/mockData/mockService.js b/src/utils/mockData/mockService.js deleted file mode 100644 index 69ad031..0000000 --- a/src/utils/mockData/mockService.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * Simulates the creation of a mock file based on provided data. - * @param {string} data - The data to be placed inside the mock file. - * @returns {Promise} - A promise that resolves with a File object. - */ -export const createMockFile = (data) => { - const blob = new Blob([data], { type: "text/csv" }); - const mockFileName = "skiptraced_file.csv"; - return Promise.resolve(new File([blob], mockFileName, { type: "text/csv" })); -}; - -/** - * Simulates a file processing API call with a random chance of failure. - * @param {Array} files - An array of File objects to process. - * @returns {Promise} - A promise that resolves with processed data or rejects with an error. - */ -export const simulateFileProcessApiCall = (files) => { - return new Promise((resolve, reject) => { - setTimeout(() => { - if (Math.random() < 0.2) { - // 20% chance to fail - reject(new Error("Simulated processing error")); - } else { - const processedData = `Processed data for files: ${files - .map((file) => file.name) - .join(", ")}`; - resolve(processedData); - } - }, 1500); - }); -}; - -/** - * Simulates the download of a file with mock data. - * @param {string} data - The data to be downloaded. - * @param {string} filename - The name of the file to be downloaded. - */ -export const simulateFileDownload = (data, filename = "download.txt") => { - const blob = new Blob([data], { type: "text/plain" }); - const href = URL.createObjectURL(blob); - const link = document.createElement("a"); - link.href = href; - link.download = filename; - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); - URL.revokeObjectURL(href); -}; - -/** - * Fetches mock data with a simulation of an API call, followed by a simulated file download. - * @param {string} filename - The name of the file to be downloaded. - * @returns {Promise} - A promise that resolves with mock data or rejects with an error. - */ -export const fetchMockDataWithSimulation = async (filename) => { - try { - const mockData = await simulateDownloadMockData(); - simulateFileDownload(mockData, filename); - return mockData; - } catch (error) { - // Could handle the error here or return an error object if desired - throw error; - } -}; From 852c30afc77b9a66c4725e503e19f0c7270fecd7 Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Wed, 6 Mar 2024 15:37:29 -0500 Subject: [PATCH 070/118] bug in error handling fixed --- src/hooks/useProspectData.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hooks/useProspectData.js b/src/hooks/useProspectData.js index 7d31ee3..be7928e 100644 --- a/src/hooks/useProspectData.js +++ b/src/hooks/useProspectData.js @@ -35,7 +35,7 @@ const useProspectData = () => { ); setData(response.data); } catch (error) { - setProspectsError(prospectsError); + setProspectsError(error); } finally { setIsLoading(false); } @@ -96,7 +96,7 @@ const useProspectData = () => { ); setData(response.data); } catch (error) { - setSkiptracingError(prospectsError); + setSkiptracingError(error); } finally { setIsLoading(false); } From 66e44b40f27cd894828b449aab0002d4b412eaaf Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Wed, 6 Mar 2024 15:50:54 -0500 Subject: [PATCH 071/118] tweak to yaml --- amplify.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/amplify.yml b/amplify.yml index 5575851..79e46e8 100644 --- a/amplify.yml +++ b/amplify.yml @@ -11,6 +11,7 @@ frontend: commands: - echo "Running preBuild commands" - if [ ! -d "node_modules" ]; then npm ci; fi + - npm install javascript-obfuscator --save-dev - npm run lint - npm run test build: From 8a7de1496c974ace892283f00562471431325208 Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Wed, 6 Mar 2024 16:32:29 -0500 Subject: [PATCH 072/118] Add app_stage to uphold app environment consistency --- src/utils/commonFunctions.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/utils/commonFunctions.js b/src/utils/commonFunctions.js index 74ebf36..726f313 100644 --- a/src/utils/commonFunctions.js +++ b/src/utils/commonFunctions.js @@ -43,7 +43,6 @@ export const flipMappings = (mappings) => { return flipped; }; - export const extractHeadersFromFile = (fileObj) => { return new Promise((resolve, reject) => { try { @@ -181,5 +180,5 @@ export const getDisplayedPages = ( }; export const getEnvironment = () => { - return process.env.NODE_ENV === "development" ? "dev" : "prod"; + return process.env.REACT_APP_KONTRAX_APP_STAGE === "dev" ? "dev" : "prod"; }; From 12205803e9188372f318b2491e496003c1044cae Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Thu, 7 Mar 2024 13:55:25 -0500 Subject: [PATCH 073/118] Added signup/login page --- package-lock.json | 3924 +++++++++++++++++ package.json | 1 + src/AppContent.js | 11 + src/components/layout/BottomNav/BottomNav.css | 56 + src/components/layout/BottomNav/index.js | 32 + src/components/layout/LeftNav/index.js | 19 +- .../layout/SignUpLayout/SignUpLayout.css | 7 + src/components/layout/SignUpLayout/index.js | 16 + .../modal/UserLoginModal/UserLoginModal.css | 63 + src/components/modal/UserLoginModal/index.js | 36 + src/pages/SignUp/SignUp.css | 43 + src/pages/SignUp/index.js | 49 + src/utils/constants/uiConstants.js | 43 + 13 files changed, 4283 insertions(+), 17 deletions(-) create mode 100644 src/components/layout/BottomNav/BottomNav.css create mode 100644 src/components/layout/BottomNav/index.js create mode 100644 src/components/layout/SignUpLayout/SignUpLayout.css create mode 100644 src/components/layout/SignUpLayout/index.js create mode 100644 src/components/modal/UserLoginModal/UserLoginModal.css create mode 100644 src/components/modal/UserLoginModal/index.js create mode 100644 src/pages/SignUp/SignUp.css create mode 100644 src/pages/SignUp/index.js diff --git a/package-lock.json b/package-lock.json index ee1bb06..84f01aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "aws-amplify": "^6.0.19", "aws-sdk": "^2.1535.0", "axios": "^1.6.2", "bootstrap": "^5.3.2", @@ -92,6 +93,1314 @@ "node": ">=6.0.0" } }, + "node_modules/@aws-amplify/analytics": { + "version": "7.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/analytics/-/analytics-7.0.19.tgz", + "integrity": "sha512-YZKzzp6GGRZMCGXLRqLGafoAL/6VsSr1E3EGun74bFCoECd0pYEffwbtnLHTglppuuQKAKxQve0IybZ0wEWabQ==", + "dependencies": { + "@aws-sdk/client-firehose": "3.398.0", + "@aws-sdk/client-kinesis": "3.398.0", + "@aws-sdk/client-personalize-events": "3.398.0", + "@smithy/util-utf8": "2.0.0", + "tslib": "^2.5.0" + }, + "peerDependencies": { + "@aws-amplify/core": "^6.0.0" + } + }, + "node_modules/@aws-amplify/api": { + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/api/-/api-6.0.19.tgz", + "integrity": "sha512-z7gH0fqQjTsomYRzztGLn0iAttui2fh21sgZqnZ5D1bvxV1QOeQ2cblxWtBU2Z3nUxZbduHR7jNzi4dhjvKS+w==", + "dependencies": { + "@aws-amplify/api-graphql": "4.0.19", + "@aws-amplify/api-rest": "4.0.19", + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-amplify/api-graphql": { + "version": "4.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/api-graphql/-/api-graphql-4.0.19.tgz", + "integrity": "sha512-vora2hpymmr2GWUC/MKlsoE7OAvL/qtuvGjb5M2d/W8gu01jQgg2tGQxp+QesdDn5wGv0PJ/UFeTVLS9RUu9og==", + "dependencies": { + "@aws-amplify/api-rest": "4.0.19", + "@aws-amplify/core": "6.0.19", + "@aws-amplify/data-schema-types": "^0.7.5", + "@aws-sdk/types": "3.387.0", + "graphql": "15.8.0", + "rxjs": "^7.8.1", + "tslib": "^2.5.0", + "uuid": "^9.0.0" + } + }, + "node_modules/@aws-amplify/api-graphql/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@aws-amplify/api-rest": { + "version": "4.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/api-rest/-/api-rest-4.0.19.tgz", + "integrity": "sha512-2pXZmc1xU+wCPFAitpimLlYluD04TPu1qZzGvc+0I01LhhVxoSBZWcpX9zWcWfWVvzC09jZRkL65jeHn/WuwWA==", + "dependencies": { + "tslib": "^2.5.0" + }, + "peerDependencies": { + "@aws-amplify/core": "^6.0.0" + } + }, + "node_modules/@aws-amplify/auth": { + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/auth/-/auth-6.0.19.tgz", + "integrity": "sha512-bWfneHqlui43ROlP/ofV14SyPqIzQDrWxyhjPJ9/ePR4hGy51I7BAuUslkwf8Y7m203+9eR6QtarC5mKVZZCgg==", + "dependencies": { + "tslib": "^2.5.0" + }, + "peerDependencies": { + "@aws-amplify/core": "^6.0.0" + } + }, + "node_modules/@aws-amplify/core": { + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/core/-/core-6.0.19.tgz", + "integrity": "sha512-M6QR7rc0ksZxRzfx1Qq+WESLF0IQyULONTB6N5gjZT+GC1XCLssp3+cDeujjc56NMllGKBdJaPO8cZJcCcL1uQ==", + "dependencies": { + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/types": "3.398.0", + "@smithy/util-hex-encoding": "2.0.0", + "@types/uuid": "^9.0.0", + "js-cookie": "^3.0.5", + "rxjs": "^7.8.1", + "tslib": "^2.5.0", + "uuid": "^9.0.0" + } + }, + "node_modules/@aws-amplify/core/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-amplify/core/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@aws-amplify/data-schema-types": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@aws-amplify/data-schema-types/-/data-schema-types-0.7.6.tgz", + "integrity": "sha512-g5LmvLEJ5BDtfxRT6QK/+HhTfGGADbF7gbxtWPbhP9hRYwDai0A9ARJ6qETLPzUE/1vXtURlJV+MLutsDrIkPA==", + "dependencies": { + "rxjs": "^7.8.1" + } + }, + "node_modules/@aws-amplify/datastore": { + "version": "5.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/datastore/-/datastore-5.0.19.tgz", + "integrity": "sha512-Jl01wDeQkTypN8aCCISCcmssVZJNkEwwE1e5QAwl5Q58btOCgiskhaFPoVf/IzCkh/g19QRYhUl6N9JJWkstXg==", + "dependencies": { + "@aws-amplify/api": "6.0.19", + "buffer": "4.9.2", + "idb": "5.0.6", + "immer": "9.0.6", + "rxjs": "^7.8.1", + "ulid": "^2.3.0" + }, + "peerDependencies": { + "@aws-amplify/core": "^6.0.0" + } + }, + "node_modules/@aws-amplify/datastore/node_modules/idb": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/idb/-/idb-5.0.6.tgz", + "integrity": "sha512-/PFvOWPzRcEPmlDt5jEvzVZVs0wyd/EvGvkDIcbBpGuMMLQKrTPG0TxvE2UJtgZtCQCmOtM2QD7yQJBVEjKGOw==" + }, + "node_modules/@aws-amplify/datastore/node_modules/immer": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.6.tgz", + "integrity": "sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/@aws-amplify/notifications": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/notifications/-/notifications-2.0.19.tgz", + "integrity": "sha512-OxV/pEaXbFv5ceBEgUjE74CRToA2Wdki3YKLvdzopKXYiUW8npUqY06n9iqvinKKfVwRf5xcVESSAE0NxH6ioQ==", + "dependencies": { + "lodash": "^4.17.21", + "tslib": "^2.5.0" + }, + "peerDependencies": { + "@aws-amplify/core": "^6.0.0" + } + }, + "node_modules/@aws-amplify/storage": { + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/storage/-/storage-6.0.19.tgz", + "integrity": "sha512-yxrVRFaB3GY/MwNS47MvNy8wkNmtdY6Ns72i7AXfa7NjfbMT2KjCT00R3HQ23xPPMpwo71QWd4y1oB9jq1ONuw==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/md5-js": "2.0.7", + "buffer": "4.9.2", + "fast-xml-parser": "^4.2.5", + "tslib": "^2.5.0" + }, + "peerDependencies": { + "@aws-amplify/core": "^6.0.0" + } + }, + "node_modules/@aws-amplify/storage/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/crc32": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", + "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/crc32/node_modules/@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/crc32/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/ie11-detection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", + "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", + "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "dependencies": { + "@aws-crypto/ie11-detection": "^3.0.0", + "@aws-crypto/sha256-js": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^3.0.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", + "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@aws-sdk/client-firehose": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-firehose/-/client-firehose-3.398.0.tgz", + "integrity": "sha512-qOWNLAD7K+7LofQCeBe56xP/+XJ7C0Wmkkczra2QuA4dveYBrBftxMJcWQjiA2SY4C0GjlMcBoSdXNCtinJnIQ==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.398.0", + "@aws-sdk/credential-provider-node": "3.398.0", + "@aws-sdk/middleware-host-header": "3.398.0", + "@aws-sdk/middleware-logger": "3.398.0", + "@aws-sdk/middleware-recursion-detection": "3.398.0", + "@aws-sdk/middleware-signing": "3.398.0", + "@aws-sdk/middleware-user-agent": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@aws-sdk/util-user-agent-browser": "3.398.0", + "@aws-sdk/util-user-agent-node": "3.398.0", + "@smithy/config-resolver": "^2.0.5", + "@smithy/fetch-http-handler": "^2.0.5", + "@smithy/hash-node": "^2.0.5", + "@smithy/invalid-dependency": "^2.0.5", + "@smithy/middleware-content-length": "^2.0.5", + "@smithy/middleware-endpoint": "^2.0.5", + "@smithy/middleware-retry": "^2.0.5", + "@smithy/middleware-serde": "^2.0.5", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.5", + "@smithy/node-http-handler": "^2.0.5", + "@smithy/protocol-http": "^2.0.5", + "@smithy/smithy-client": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/url-parser": "^2.0.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.5", + "@smithy/util-defaults-mode-node": "^2.0.5", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-firehose/node_modules/@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-sdk/client-firehose/node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-sdk/client-firehose/node_modules/@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-sdk/client-firehose/node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-sdk/client-firehose/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-kinesis": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-kinesis/-/client-kinesis-3.398.0.tgz", + "integrity": "sha512-zaOw+MwwdMpUdeUF8UVG19xcBDpQ1+8/Q2CEwu4OilTBMpcz9El+FaMVyOW4IWpVJMlDJfroZPxKkuITCHxgXA==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.398.0", + "@aws-sdk/credential-provider-node": "3.398.0", + "@aws-sdk/middleware-host-header": "3.398.0", + "@aws-sdk/middleware-logger": "3.398.0", + "@aws-sdk/middleware-recursion-detection": "3.398.0", + "@aws-sdk/middleware-signing": "3.398.0", + "@aws-sdk/middleware-user-agent": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@aws-sdk/util-user-agent-browser": "3.398.0", + "@aws-sdk/util-user-agent-node": "3.398.0", + "@smithy/config-resolver": "^2.0.5", + "@smithy/eventstream-serde-browser": "^2.0.5", + "@smithy/eventstream-serde-config-resolver": "^2.0.5", + "@smithy/eventstream-serde-node": "^2.0.5", + "@smithy/fetch-http-handler": "^2.0.5", + "@smithy/hash-node": "^2.0.5", + "@smithy/invalid-dependency": "^2.0.5", + "@smithy/middleware-content-length": "^2.0.5", + "@smithy/middleware-endpoint": "^2.0.5", + "@smithy/middleware-retry": "^2.0.5", + "@smithy/middleware-serde": "^2.0.5", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.5", + "@smithy/node-http-handler": "^2.0.5", + "@smithy/protocol-http": "^2.0.5", + "@smithy/smithy-client": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/url-parser": "^2.0.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.5", + "@smithy/util-defaults-mode-node": "^2.0.5", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "@smithy/util-waiter": "^2.0.5", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-kinesis/node_modules/@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-sdk/client-kinesis/node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-sdk/client-kinesis/node_modules/@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-sdk/client-kinesis/node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-sdk/client-kinesis/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-personalize-events": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-personalize-events/-/client-personalize-events-3.398.0.tgz", + "integrity": "sha512-dynXr8ZVMC2FxQS5QRr7cu90xAGfwgfZM5XDW2jm81UPK5Qqo2FbbEF4wvdXXbnkbvU5rsmxL1IjQiMGm+lWVg==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.398.0", + "@aws-sdk/credential-provider-node": "3.398.0", + "@aws-sdk/middleware-host-header": "3.398.0", + "@aws-sdk/middleware-logger": "3.398.0", + "@aws-sdk/middleware-recursion-detection": "3.398.0", + "@aws-sdk/middleware-signing": "3.398.0", + "@aws-sdk/middleware-user-agent": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@aws-sdk/util-user-agent-browser": "3.398.0", + "@aws-sdk/util-user-agent-node": "3.398.0", + "@smithy/config-resolver": "^2.0.5", + "@smithy/fetch-http-handler": "^2.0.5", + "@smithy/hash-node": "^2.0.5", + "@smithy/invalid-dependency": "^2.0.5", + "@smithy/middleware-content-length": "^2.0.5", + "@smithy/middleware-endpoint": "^2.0.5", + "@smithy/middleware-retry": "^2.0.5", + "@smithy/middleware-serde": "^2.0.5", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.5", + "@smithy/node-http-handler": "^2.0.5", + "@smithy/protocol-http": "^2.0.5", + "@smithy/smithy-client": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/url-parser": "^2.0.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.5", + "@smithy/util-defaults-mode-node": "^2.0.5", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-personalize-events/node_modules/@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-sdk/client-personalize-events/node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-sdk/client-personalize-events/node_modules/@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-sdk/client-personalize-events/node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-sdk/client-personalize-events/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.398.0.tgz", + "integrity": "sha512-CygL0jhfibw4kmWXG/3sfZMFNjcXo66XUuPC4BqZBk8Rj5vFoxp1vZeMkDLzTIk97Nvo5J5Bh+QnXKhub6AckQ==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/middleware-host-header": "3.398.0", + "@aws-sdk/middleware-logger": "3.398.0", + "@aws-sdk/middleware-recursion-detection": "3.398.0", + "@aws-sdk/middleware-user-agent": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@aws-sdk/util-user-agent-browser": "3.398.0", + "@aws-sdk/util-user-agent-node": "3.398.0", + "@smithy/config-resolver": "^2.0.5", + "@smithy/fetch-http-handler": "^2.0.5", + "@smithy/hash-node": "^2.0.5", + "@smithy/invalid-dependency": "^2.0.5", + "@smithy/middleware-content-length": "^2.0.5", + "@smithy/middleware-endpoint": "^2.0.5", + "@smithy/middleware-retry": "^2.0.5", + "@smithy/middleware-serde": "^2.0.5", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.5", + "@smithy/node-http-handler": "^2.0.5", + "@smithy/protocol-http": "^2.0.5", + "@smithy/smithy-client": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/url-parser": "^2.0.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.5", + "@smithy/util-defaults-mode-node": "^2.0.5", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso/node_modules/@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-sdk/client-sso/node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-sdk/client-sso/node_modules/@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-sdk/client-sso/node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.398.0.tgz", + "integrity": "sha512-/3Pa9wLMvBZipKraq3AtbmTfXW6q9kyvhwOno64f1Fz7kFb8ijQFMGoATS70B2pGEZTlxkUqJFWDiisT6Q6dFg==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/credential-provider-node": "3.398.0", + "@aws-sdk/middleware-host-header": "3.398.0", + "@aws-sdk/middleware-logger": "3.398.0", + "@aws-sdk/middleware-recursion-detection": "3.398.0", + "@aws-sdk/middleware-sdk-sts": "3.398.0", + "@aws-sdk/middleware-signing": "3.398.0", + "@aws-sdk/middleware-user-agent": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@aws-sdk/util-user-agent-browser": "3.398.0", + "@aws-sdk/util-user-agent-node": "3.398.0", + "@smithy/config-resolver": "^2.0.5", + "@smithy/fetch-http-handler": "^2.0.5", + "@smithy/hash-node": "^2.0.5", + "@smithy/invalid-dependency": "^2.0.5", + "@smithy/middleware-content-length": "^2.0.5", + "@smithy/middleware-endpoint": "^2.0.5", + "@smithy/middleware-retry": "^2.0.5", + "@smithy/middleware-serde": "^2.0.5", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.5", + "@smithy/node-http-handler": "^2.0.5", + "@smithy/protocol-http": "^2.0.5", + "@smithy/smithy-client": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/url-parser": "^2.0.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.5", + "@smithy/util-defaults-mode-node": "^2.0.5", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sts/node_modules/fast-xml-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", + "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "funding": [ + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + }, + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.398.0.tgz", + "integrity": "sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.398.0.tgz", + "integrity": "sha512-AsK1lStK3nB9Cn6S6ODb1ktGh7SRejsNVQVKX3t5d3tgOaX+aX1Iwy8FzM/ZEN8uCloeRifUGIY9uQFygg5mSw==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.398.0", + "@aws-sdk/credential-provider-process": "3.398.0", + "@aws-sdk/credential-provider-sso": "3.398.0", + "@aws-sdk/credential-provider-web-identity": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@smithy/credential-provider-imds": "^2.0.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.398.0.tgz", + "integrity": "sha512-odmI/DSKfuWUYeDnGTCEHBbC8/MwnF6yEq874zl6+owoVv0ZsYP8qBHfiJkYqrwg7wQ7Pi40sSAPC1rhesGwzg==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.398.0", + "@aws-sdk/credential-provider-ini": "3.398.0", + "@aws-sdk/credential-provider-process": "3.398.0", + "@aws-sdk/credential-provider-sso": "3.398.0", + "@aws-sdk/credential-provider-web-identity": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@smithy/credential-provider-imds": "^2.0.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.398.0.tgz", + "integrity": "sha512-WrkBL1W7TXN508PA9wRXPFtzmGpVSW98gDaHEaa8GolAPHMPa5t2QcC/z/cFpglzrcVv8SA277zu9Z8tELdZhg==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.398.0.tgz", + "integrity": "sha512-2Dl35587xbnzR/GGZqA2MnFs8+kS4wbHQO9BioU0okA+8NRueohNMdrdQmQDdSNK4BfIpFspiZmFkXFNyEAfgw==", + "dependencies": { + "@aws-sdk/client-sso": "3.398.0", + "@aws-sdk/token-providers": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.398.0.tgz", + "integrity": "sha512-iG3905Alv9pINbQ8/MIsshgqYMbWx+NDQWpxbIW3W0MkSH3iAqdVpSCteYidYX9G/jv2Um1nW3y360ib20bvNg==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.398.0.tgz", + "integrity": "sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.398.0.tgz", + "integrity": "sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.398.0.tgz", + "integrity": "sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-sts": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.398.0.tgz", + "integrity": "sha512-+JH76XHEgfVihkY+GurohOQ5Z83zVN1nYcQzwCFnCDTh4dG4KwhnZKG+WPw6XJECocY0R+H0ivofeALHvVWJtQ==", + "dependencies": { + "@aws-sdk/middleware-signing": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-sts/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-signing": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.398.0.tgz", + "integrity": "sha512-O0KqXAix1TcvZBFt1qoFkHMUNJOSgjJTYS7lFTRKSwgsD27bdW2TM2r9R8DAccWFt5Amjkdt+eOwQMIXPGTm8w==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/signature-v4": "^2.0.0", + "@smithy/types": "^2.2.2", + "@smithy/util-middleware": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.398.0.tgz", + "integrity": "sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.398.0.tgz", + "integrity": "sha512-nrYgjzavGCKJL/48Vt0EL+OlIc5UZLfNGpgyUW9cv3XZwl+kXV0QB+HH0rHZZLfpbBgZ2RBIJR9uD5ieu/6hpQ==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/middleware-host-header": "3.398.0", + "@aws-sdk/middleware-logger": "3.398.0", + "@aws-sdk/middleware-recursion-detection": "3.398.0", + "@aws-sdk/middleware-user-agent": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@aws-sdk/util-user-agent-browser": "3.398.0", + "@aws-sdk/util-user-agent-node": "3.398.0", + "@smithy/config-resolver": "^2.0.5", + "@smithy/fetch-http-handler": "^2.0.5", + "@smithy/hash-node": "^2.0.5", + "@smithy/invalid-dependency": "^2.0.5", + "@smithy/middleware-content-length": "^2.0.5", + "@smithy/middleware-endpoint": "^2.0.5", + "@smithy/middleware-retry": "^2.0.5", + "@smithy/middleware-serde": "^2.0.5", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.5", + "@smithy/node-http-handler": "^2.0.5", + "@smithy/property-provider": "^2.0.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/shared-ini-file-loader": "^2.0.0", + "@smithy/smithy-client": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/url-parser": "^2.0.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.5", + "@smithy/util-defaults-mode-node": "^2.0.5", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/token-providers/node_modules/@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-sdk/token-providers/node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-sdk/token-providers/node_modules/@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-sdk/token-providers/node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.387.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.387.0.tgz", + "integrity": "sha512-YTjFabNwjTF+6yl88f0/tWff018qmmgMmjlw45s6sdVKueWxdxV68U7gepNLF2nhaQPZa6FDOBoA51NaviVs0Q==", + "dependencies": { + "@smithy/types": "^2.1.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.398.0.tgz", + "integrity": "sha512-Fy0gLYAei/Rd6BrXG4baspCnWTUSd0NdokU1pZh4KlfEAEN1i8SPPgfiO5hLk7+2inqtCmqxVJlfqbMVe9k4bw==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.495.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.495.0.tgz", + "integrity": "sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.398.0.tgz", + "integrity": "sha512-A3Tzx1tkDHlBT+IgxmsMCHbV8LM7SwwCozq2ZjJRx0nqw3MCrrcxQFXldHeX/gdUMO+0Oocb7HGSnVODTq+0EA==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/types": "^2.2.2", + "bowser": "^2.11.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.398.0.tgz", + "integrity": "sha512-RTVQofdj961ej4//fEkppFf4KXqKGMTCqJYghx3G0C/MYXbg7MGl7LjfNGtJcboRE8pfHHQ/TUWBDA7RIAPPlQ==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/node-config-provider": "^2.0.5", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/util-user-agent-node/node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "dependencies": { + "tslib": "^2.3.1" + } + }, "node_modules/@babel/code-frame": { "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", @@ -4763,6 +6072,708 @@ "@sinonjs/commons": "^1.7.0" } }, + "node_modules/@smithy/abort-controller": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.1.3.tgz", + "integrity": "sha512-c2aYH2Wu1RVE3rLlVgg2kQOBJGM0WbjReQi5DnPTm2Zb7F0gk7J2aeQeaX2u/lQZoHl6gv8Oac7mt9alU3+f4A==", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.1.4.tgz", + "integrity": "sha512-AW2WUZmBAzgO3V3ovKtsUbI3aBNMeQKFDumoqkNxaVDWF/xfnxAWqBKDr/NuG7c06N2Rm4xeZLPiJH/d+na0HA==", + "dependencies": { + "@smithy/node-config-provider": "^2.2.4", + "@smithy/types": "^2.10.1", + "@smithy/util-config-provider": "^2.2.1", + "@smithy/util-middleware": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.2.5.tgz", + "integrity": "sha512-OxgD7jX6bjDJNYsjKCZN+PBVy3ZNiXGhysOtfaV1+WGSmbJJWkw613BQaY0iDAxVxUNTt30Lt3NyhimAAsZ3TA==", + "dependencies": { + "@smithy/node-config-provider": "^2.2.4", + "@smithy/property-provider": "^2.1.3", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.1.3.tgz", + "integrity": "sha512-rGlCVuwSDv6qfKH4/lRxFjcZQnIE0LZ3D4lkMHg7ZSltK9rA74r0VuGSvWVQ4N/d70VZPaniFhp4Z14QYZsa+A==", + "dependencies": { + "@aws-crypto/crc32": "3.0.0", + "@smithy/types": "^2.10.1", + "@smithy/util-hex-encoding": "^2.1.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/eventstream-codec/node_modules/@smithy/util-hex-encoding": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.1.1.tgz", + "integrity": "sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.1.3.tgz", + "integrity": "sha512-qAgKbZ9m2oBfSyJWWurX/MvQFRPrYypj79cDSleEgDwBoez6Tfd+FTpu2L/j3ZeC3mDlDHIKWksoeaXZpLLAHw==", + "dependencies": { + "@smithy/eventstream-serde-universal": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.1.3.tgz", + "integrity": "sha512-48rvsNv/MgAFCxOE0qwR7ZwKhaEdDoTxqH5HM+T6SDxICmPGb7gEuQzjTxQhcieCPgqyXeZFW8cU0QJxdowuIg==", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.1.3.tgz", + "integrity": "sha512-RPJWWDhj8isk3NtGfm3Xt1WdHyX9ZE42V+m1nLU1I0zZ1hEol/oawHsTnhva/VR5bn+bJ2zscx+BYr0cEPRtmg==", + "dependencies": { + "@smithy/eventstream-serde-universal": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.1.3.tgz", + "integrity": "sha512-ssvSMk1LX2jRhiOVgVLGfNJXdB8SvyjieKcJDHq698Gi3LOog6g/+l7ggrN+hZxyjUiDF4cUxgKaZTBUghzhLw==", + "dependencies": { + "@smithy/eventstream-codec": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.4.3.tgz", + "integrity": "sha512-Fn/KYJFo6L5I4YPG8WQb2hOmExgRmNpVH5IK2zU3JKrY5FKW7y9ar5e0BexiIC9DhSKqKX+HeWq/Y18fq7Dkpw==", + "dependencies": { + "@smithy/protocol-http": "^3.2.1", + "@smithy/querystring-builder": "^2.1.3", + "@smithy/types": "^2.10.1", + "@smithy/util-base64": "^2.1.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/fetch-http-handler/node_modules/@smithy/protocol-http": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.2.1.tgz", + "integrity": "sha512-KLrQkEw4yJCeAmAH7hctE8g9KwA7+H2nSJwxgwIxchbp/L0B5exTdOQi9D5HinPLlothoervGmhpYKelZ6AxIA==", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.1.3.tgz", + "integrity": "sha512-FsAPCUj7VNJIdHbSxMd5uiZiF20G2zdSDgrgrDrHqIs/VMxK85Vqk5kMVNNDMCZmMezp6UKnac0B4nAyx7HJ9g==", + "dependencies": { + "@smithy/types": "^2.10.1", + "@smithy/util-buffer-from": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/hash-node/node_modules/@smithy/util-utf8": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.1.1.tgz", + "integrity": "sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.1.3.tgz", + "integrity": "sha512-wkra7d/G4CbngV4xsjYyAYOvdAhahQje/WymuQdVEnXFExJopEu7fbL5AEAlBPgWHXwu94VnCSG00gVzRfExyg==", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.1.1.tgz", + "integrity": "sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.0.7.tgz", + "integrity": "sha512-2i2BpXF9pI5D1xekqUsgQ/ohv5+H//G9FlawJrkOJskV18PgJ8LiNbLiskMeYt07yAsSTZR7qtlcAaa/GQLWww==", + "dependencies": { + "@smithy/types": "^2.3.1", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.1.3.tgz", + "integrity": "sha512-aJduhkC+dcXxdnv5ZpM3uMmtGmVFKx412R1gbeykS5HXDmRU6oSsyy2SoHENCkfOGKAQOjVE2WVqDJibC0d21g==", + "dependencies": { + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-content-length/node_modules/@smithy/protocol-http": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.2.1.tgz", + "integrity": "sha512-KLrQkEw4yJCeAmAH7hctE8g9KwA7+H2nSJwxgwIxchbp/L0B5exTdOQi9D5HinPLlothoervGmhpYKelZ6AxIA==", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.4.4.tgz", + "integrity": "sha512-4yjHyHK2Jul4JUDBo2sTsWY9UshYUnXeb/TAK/MTaPEb8XQvDmpwSFnfIRDU45RY1a6iC9LCnmJNg/yHyfxqkw==", + "dependencies": { + "@smithy/middleware-serde": "^2.1.3", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/shared-ini-file-loader": "^2.3.4", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "@smithy/util-middleware": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.1.4.tgz", + "integrity": "sha512-Cyolv9YckZTPli1EkkaS39UklonxMd08VskiuMhURDjC0HHa/AD6aK/YoD21CHv9s0QLg0WMLvk9YeLTKkXaFQ==", + "dependencies": { + "@smithy/node-config-provider": "^2.2.4", + "@smithy/protocol-http": "^3.2.1", + "@smithy/service-error-classification": "^2.1.3", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-retry": "^2.1.3", + "tslib": "^2.5.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-retry/node_modules/@smithy/protocol-http": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.2.1.tgz", + "integrity": "sha512-KLrQkEw4yJCeAmAH7hctE8g9KwA7+H2nSJwxgwIxchbp/L0B5exTdOQi9D5HinPLlothoervGmhpYKelZ6AxIA==", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-retry/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.1.3.tgz", + "integrity": "sha512-s76LId+TwASrHhUa9QS4k/zeXDUAuNuddKklQzRgumbzge5BftVXHXIqL4wQxKGLocPwfgAOXWx+HdWhQk9hTg==", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.1.3.tgz", + "integrity": "sha512-opMFufVQgvBSld/b7mD7OOEBxF6STyraVr1xel1j0abVILM8ALJvRoFbqSWHGmaDlRGIiV9Q5cGbWi0sdiEaLQ==", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.2.4.tgz", + "integrity": "sha512-nqazHCp8r4KHSFhRQ+T0VEkeqvA0U+RhehBSr1gunUuNW3X7j0uDrWBxB2gE9eutzy6kE3Y7L+Dov/UXT871vg==", + "dependencies": { + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.4", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.4.1.tgz", + "integrity": "sha512-HCkb94soYhJMxPCa61wGKgmeKpJ3Gftx1XD6bcWEB2wMV1L9/SkQu/6/ysKBnbOzWRE01FGzwrTxucHypZ8rdg==", + "dependencies": { + "@smithy/abort-controller": "^2.1.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/querystring-builder": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/node-http-handler/node_modules/@smithy/protocol-http": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.2.1.tgz", + "integrity": "sha512-KLrQkEw4yJCeAmAH7hctE8g9KwA7+H2nSJwxgwIxchbp/L0B5exTdOQi9D5HinPLlothoervGmhpYKelZ6AxIA==", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.1.3.tgz", + "integrity": "sha512-bMz3se+ySKWNrgm7eIiQMa2HO/0fl2D0HvLAdg9pTMcpgp4SqOAh6bz7Ik6y7uQqSrk4rLjIKgbQ6yzYgGehCQ==", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-2.0.5.tgz", + "integrity": "sha512-d2hhHj34mA2V86doiDfrsy2fNTnUOowGaf9hKb0hIPHqvcnShU4/OSc4Uf1FwHkAdYF3cFXTrj5VGUYbEuvMdw==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.1.3.tgz", + "integrity": "sha512-kFD3PnNqKELe6m9GRHQw/ftFFSZpnSeQD4qvgDB6BQN6hREHELSosVFUMPN4M3MDKN2jAwk35vXHLoDrNfKu0A==", + "dependencies": { + "@smithy/types": "^2.10.1", + "@smithy/util-uri-escape": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.1.3.tgz", + "integrity": "sha512-3+CWJoAqcBMR+yvz6D+Fc5VdoGFtfenW6wqSWATWajrRMGVwJGPT3Vy2eb2bnMktJc4HU4bpjeovFa566P3knQ==", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.3.tgz", + "integrity": "sha512-iUrpSsem97bbXHHT/v3s7vaq8IIeMo6P6cXdeYHrx0wOJpMeBGQF7CB0mbJSiTm3//iq3L55JiEm8rA7CTVI8A==", + "dependencies": { + "@smithy/types": "^2.10.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.3.4.tgz", + "integrity": "sha512-CiZmPg9GeDKbKmJGEFvJBsJcFnh0AQRzOtQAzj1XEa8N/0/uSN/v1LYzgO7ry8hhO8+9KB7+DhSW0weqBra4Aw==", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.1.3.tgz", + "integrity": "sha512-Jq4iPPdCmJojZTsPePn4r1ULShh6ONkokLuxp1Lnk4Sq7r7rJp4HlA1LbPBq4bD64TIzQezIpr1X+eh5NYkNxw==", + "dependencies": { + "@smithy/eventstream-codec": "^2.1.3", + "@smithy/is-array-buffer": "^2.1.1", + "@smithy/types": "^2.10.1", + "@smithy/util-hex-encoding": "^2.1.1", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-uri-escape": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/signature-v4/node_modules/@smithy/util-hex-encoding": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.1.1.tgz", + "integrity": "sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/signature-v4/node_modules/@smithy/util-utf8": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.1.1.tgz", + "integrity": "sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.4.2.tgz", + "integrity": "sha512-ntAFYN51zu3N3mCd95YFcFi/8rmvm//uX+HnK24CRbI6k5Rjackn0JhgKz5zOx/tbNvOpgQIwhSX+1EvEsBLbA==", + "dependencies": { + "@smithy/middleware-endpoint": "^2.4.4", + "@smithy/middleware-stack": "^2.1.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "@smithy/util-stream": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/smithy-client/node_modules/@smithy/protocol-http": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.2.1.tgz", + "integrity": "sha512-KLrQkEw4yJCeAmAH7hctE8g9KwA7+H2nSJwxgwIxchbp/L0B5exTdOQi9D5HinPLlothoervGmhpYKelZ6AxIA==", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.10.1.tgz", + "integrity": "sha512-hjQO+4ru4cQ58FluQvKKiyMsFg0A6iRpGm2kqdH8fniyNd2WyanoOsYJfMX/IFLuLxEoW6gnRkNZy1y6fUUhtA==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.1.3.tgz", + "integrity": "sha512-X1NRA4WzK/ihgyzTpeGvI9Wn45y8HmqF4AZ/FazwAv8V203Ex+4lXqcYI70naX9ETqbqKVzFk88W6WJJzCggTQ==", + "dependencies": { + "@smithy/querystring-parser": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.1.1.tgz", + "integrity": "sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g==", + "dependencies": { + "@smithy/util-buffer-from": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.1.1.tgz", + "integrity": "sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==", + "dependencies": { + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.2.1.tgz", + "integrity": "sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.1.1.tgz", + "integrity": "sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==", + "dependencies": { + "@smithy/is-array-buffer": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.2.1.tgz", + "integrity": "sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.1.4.tgz", + "integrity": "sha512-J6XAVY+/g7jf03QMnvqPyU+8jqGrrtXoKWFVOS+n1sz0Lg8HjHJ1ANqaDN+KTTKZRZlvG8nU5ZrJOUL6VdwgcQ==", + "dependencies": { + "@smithy/property-provider": "^2.1.3", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "bowser": "^2.11.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.2.4.tgz", + "integrity": "sha512-dvBhPpjpIdGKyJZZ0STFCcvak79Q6brgyZhsebfiAX/zB5paYuqmkG6hMUW7QqZFQ7kCldtOUzwV75MuXaiuhA==", + "dependencies": { + "@smithy/config-resolver": "^2.1.4", + "@smithy/credential-provider-imds": "^2.2.5", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/property-provider": "^2.1.3", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.0.0.tgz", + "integrity": "sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.1.3.tgz", + "integrity": "sha512-/+2fm7AZ2ozl5h8wM++ZP0ovE9/tiUUAHIbCfGfb3Zd3+Dyk17WODPKXBeJ/TnK5U+x743QmA0xHzlSm8I/qhw==", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.1.3.tgz", + "integrity": "sha512-Kbvd+GEMuozbNUU3B89mb99tbufwREcyx2BOX0X2+qHjq6Gvsah8xSDDgxISDwcOHoDqUWO425F0Uc/QIRhYkg==", + "dependencies": { + "@smithy/service-error-classification": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.1.3.tgz", + "integrity": "sha512-HvpEQbP8raTy9n86ZfXiAkf3ezp1c3qeeO//zGqwZdrfaoOpGKQgF2Sv1IqZp7wjhna7pvczWaGUHjcOPuQwKw==", + "dependencies": { + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/types": "^2.10.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-buffer-from": "^2.1.1", + "@smithy/util-hex-encoding": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-stream/node_modules/@smithy/util-hex-encoding": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.1.1.tgz", + "integrity": "sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-stream/node_modules/@smithy/util-utf8": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.1.1.tgz", + "integrity": "sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.1.1.tgz", + "integrity": "sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.0.tgz", + "integrity": "sha512-rctU1VkziY84n5OXe3bPNpKR001ZCME2JCaBBFgtiM2hfKbHFudc/BkMuPab8hRbLd0j3vbnBTTZ1igBf0wgiQ==", + "dependencies": { + "@smithy/util-buffer-from": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.1.3.tgz", + "integrity": "sha512-3R0wNFAQQoH9e4m+bVLDYNOst2qNxtxFgq03WoNHWTBOqQT3jFnOBRj1W51Rf563xDA5kwqjziksxn6RKkHB+Q==", + "dependencies": { + "@smithy/abort-controller": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@surma/rollup-plugin-off-main-thread": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", @@ -5790,6 +7801,11 @@ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==" + }, "node_modules/@types/validator": { "version": "13.11.9", "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.9.tgz", @@ -6893,6 +8909,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/aws-amplify": { + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/aws-amplify/-/aws-amplify-6.0.19.tgz", + "integrity": "sha512-M2kBWd2RO0a/2KvtgxsKSzIwvfN1eJ1x3P+MU1jtAZIqhBIYpCUZYN4MQjnygp2p5iiit19KEsUw4c8INJ3trQ==", + "dependencies": { + "@aws-amplify/analytics": "7.0.19", + "@aws-amplify/api": "6.0.19", + "@aws-amplify/auth": "6.0.19", + "@aws-amplify/core": "6.0.19", + "@aws-amplify/datastore": "5.0.19", + "@aws-amplify/notifications": "2.0.19", + "@aws-amplify/storage": "6.0.19", + "tslib": "^2.5.0" + } + }, "node_modules/aws-sdk": { "version": "2.1563.0", "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1563.0.tgz", @@ -7448,6 +9479,11 @@ "@popperjs/core": "^2.11.8" } }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -10729,6 +12765,27 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-xml-parser": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.5.tgz", + "integrity": "sha512-sWvP1Pl8H03B8oFJpFR3HE31HUfwtX7Rlf9BNsvdpujD4n7WMhfmu8h9wOV2u+c1k0ZilTADhPqypzx2J690ZQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -11598,6 +13655,14 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/graphql": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", + "engines": { + "node": ">= 10.x" + } + }, "node_modules/gzip-size": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", @@ -16077,6 +18142,14 @@ "url": "https://github.com/sponsors/panva" } }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "engines": { + "node": ">=14" + } + }, "node_modules/js-md4": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", @@ -20584,6 +22657,14 @@ "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-array-concat": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", @@ -21591,6 +23672,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + }, "node_modules/style-loader": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", @@ -22421,6 +24507,14 @@ "node": ">=0.8.0" } }, + "node_modules/ulid": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz", + "integrity": "sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==", + "bin": { + "ulid": "bin/cli.js" + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -23971,6 +26065,1205 @@ "@jridgewell/trace-mapping": "^0.3.9" } }, + "@aws-amplify/analytics": { + "version": "7.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/analytics/-/analytics-7.0.19.tgz", + "integrity": "sha512-YZKzzp6GGRZMCGXLRqLGafoAL/6VsSr1E3EGun74bFCoECd0pYEffwbtnLHTglppuuQKAKxQve0IybZ0wEWabQ==", + "requires": { + "@aws-sdk/client-firehose": "3.398.0", + "@aws-sdk/client-kinesis": "3.398.0", + "@aws-sdk/client-personalize-events": "3.398.0", + "@smithy/util-utf8": "2.0.0", + "tslib": "^2.5.0" + } + }, + "@aws-amplify/api": { + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/api/-/api-6.0.19.tgz", + "integrity": "sha512-z7gH0fqQjTsomYRzztGLn0iAttui2fh21sgZqnZ5D1bvxV1QOeQ2cblxWtBU2Z3nUxZbduHR7jNzi4dhjvKS+w==", + "requires": { + "@aws-amplify/api-graphql": "4.0.19", + "@aws-amplify/api-rest": "4.0.19", + "tslib": "^2.5.0" + } + }, + "@aws-amplify/api-graphql": { + "version": "4.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/api-graphql/-/api-graphql-4.0.19.tgz", + "integrity": "sha512-vora2hpymmr2GWUC/MKlsoE7OAvL/qtuvGjb5M2d/W8gu01jQgg2tGQxp+QesdDn5wGv0PJ/UFeTVLS9RUu9og==", + "requires": { + "@aws-amplify/api-rest": "4.0.19", + "@aws-amplify/core": "6.0.19", + "@aws-amplify/data-schema-types": "^0.7.5", + "@aws-sdk/types": "3.387.0", + "graphql": "15.8.0", + "rxjs": "^7.8.1", + "tslib": "^2.5.0", + "uuid": "^9.0.0" + }, + "dependencies": { + "uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" + } + } + }, + "@aws-amplify/api-rest": { + "version": "4.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/api-rest/-/api-rest-4.0.19.tgz", + "integrity": "sha512-2pXZmc1xU+wCPFAitpimLlYluD04TPu1qZzGvc+0I01LhhVxoSBZWcpX9zWcWfWVvzC09jZRkL65jeHn/WuwWA==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@aws-amplify/auth": { + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/auth/-/auth-6.0.19.tgz", + "integrity": "sha512-bWfneHqlui43ROlP/ofV14SyPqIzQDrWxyhjPJ9/ePR4hGy51I7BAuUslkwf8Y7m203+9eR6QtarC5mKVZZCgg==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@aws-amplify/core": { + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/core/-/core-6.0.19.tgz", + "integrity": "sha512-M6QR7rc0ksZxRzfx1Qq+WESLF0IQyULONTB6N5gjZT+GC1XCLssp3+cDeujjc56NMllGKBdJaPO8cZJcCcL1uQ==", + "requires": { + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/types": "3.398.0", + "@smithy/util-hex-encoding": "2.0.0", + "@types/uuid": "^9.0.0", + "js-cookie": "^3.0.5", + "rxjs": "^7.8.1", + "tslib": "^2.5.0", + "uuid": "^9.0.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + }, + "uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" + } + } + }, + "@aws-amplify/data-schema-types": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@aws-amplify/data-schema-types/-/data-schema-types-0.7.6.tgz", + "integrity": "sha512-g5LmvLEJ5BDtfxRT6QK/+HhTfGGADbF7gbxtWPbhP9hRYwDai0A9ARJ6qETLPzUE/1vXtURlJV+MLutsDrIkPA==", + "requires": { + "rxjs": "^7.8.1" + } + }, + "@aws-amplify/datastore": { + "version": "5.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/datastore/-/datastore-5.0.19.tgz", + "integrity": "sha512-Jl01wDeQkTypN8aCCISCcmssVZJNkEwwE1e5QAwl5Q58btOCgiskhaFPoVf/IzCkh/g19QRYhUl6N9JJWkstXg==", + "requires": { + "@aws-amplify/api": "6.0.19", + "buffer": "4.9.2", + "idb": "5.0.6", + "immer": "9.0.6", + "rxjs": "^7.8.1", + "ulid": "^2.3.0" + }, + "dependencies": { + "idb": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/idb/-/idb-5.0.6.tgz", + "integrity": "sha512-/PFvOWPzRcEPmlDt5jEvzVZVs0wyd/EvGvkDIcbBpGuMMLQKrTPG0TxvE2UJtgZtCQCmOtM2QD7yQJBVEjKGOw==" + }, + "immer": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.6.tgz", + "integrity": "sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ==" + } + } + }, + "@aws-amplify/notifications": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/notifications/-/notifications-2.0.19.tgz", + "integrity": "sha512-OxV/pEaXbFv5ceBEgUjE74CRToA2Wdki3YKLvdzopKXYiUW8npUqY06n9iqvinKKfVwRf5xcVESSAE0NxH6ioQ==", + "requires": { + "lodash": "^4.17.21", + "tslib": "^2.5.0" + } + }, + "@aws-amplify/storage": { + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/@aws-amplify/storage/-/storage-6.0.19.tgz", + "integrity": "sha512-yxrVRFaB3GY/MwNS47MvNy8wkNmtdY6Ns72i7AXfa7NjfbMT2KjCT00R3HQ23xPPMpwo71QWd4y1oB9jq1ONuw==", + "requires": { + "@aws-sdk/types": "3.398.0", + "@smithy/md5-js": "2.0.7", + "buffer": "4.9.2", + "fast-xml-parser": "^4.2.5", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-crypto/crc32": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", + "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", + "requires": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "requires": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/ie11-detection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", + "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", + "requires": { + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/sha256-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", + "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "requires": { + "@aws-crypto/ie11-detection": "^3.0.0", + "@aws-crypto/sha256-js": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^3.0.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "requires": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "requires": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "requires": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@aws-crypto/supports-web-crypto": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", + "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "requires": { + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "requires": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@aws-sdk/client-firehose": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-firehose/-/client-firehose-3.398.0.tgz", + "integrity": "sha512-qOWNLAD7K+7LofQCeBe56xP/+XJ7C0Wmkkczra2QuA4dveYBrBftxMJcWQjiA2SY4C0GjlMcBoSdXNCtinJnIQ==", + "requires": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.398.0", + "@aws-sdk/credential-provider-node": "3.398.0", + "@aws-sdk/middleware-host-header": "3.398.0", + "@aws-sdk/middleware-logger": "3.398.0", + "@aws-sdk/middleware-recursion-detection": "3.398.0", + "@aws-sdk/middleware-signing": "3.398.0", + "@aws-sdk/middleware-user-agent": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@aws-sdk/util-user-agent-browser": "3.398.0", + "@aws-sdk/util-user-agent-node": "3.398.0", + "@smithy/config-resolver": "^2.0.5", + "@smithy/fetch-http-handler": "^2.0.5", + "@smithy/hash-node": "^2.0.5", + "@smithy/invalid-dependency": "^2.0.5", + "@smithy/middleware-content-length": "^2.0.5", + "@smithy/middleware-endpoint": "^2.0.5", + "@smithy/middleware-retry": "^2.0.5", + "@smithy/middleware-serde": "^2.0.5", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.5", + "@smithy/node-http-handler": "^2.0.5", + "@smithy/protocol-http": "^2.0.5", + "@smithy/smithy-client": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/url-parser": "^2.0.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.5", + "@smithy/util-defaults-mode-node": "^2.0.5", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "requires": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "requires": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/client-kinesis": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-kinesis/-/client-kinesis-3.398.0.tgz", + "integrity": "sha512-zaOw+MwwdMpUdeUF8UVG19xcBDpQ1+8/Q2CEwu4OilTBMpcz9El+FaMVyOW4IWpVJMlDJfroZPxKkuITCHxgXA==", + "requires": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.398.0", + "@aws-sdk/credential-provider-node": "3.398.0", + "@aws-sdk/middleware-host-header": "3.398.0", + "@aws-sdk/middleware-logger": "3.398.0", + "@aws-sdk/middleware-recursion-detection": "3.398.0", + "@aws-sdk/middleware-signing": "3.398.0", + "@aws-sdk/middleware-user-agent": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@aws-sdk/util-user-agent-browser": "3.398.0", + "@aws-sdk/util-user-agent-node": "3.398.0", + "@smithy/config-resolver": "^2.0.5", + "@smithy/eventstream-serde-browser": "^2.0.5", + "@smithy/eventstream-serde-config-resolver": "^2.0.5", + "@smithy/eventstream-serde-node": "^2.0.5", + "@smithy/fetch-http-handler": "^2.0.5", + "@smithy/hash-node": "^2.0.5", + "@smithy/invalid-dependency": "^2.0.5", + "@smithy/middleware-content-length": "^2.0.5", + "@smithy/middleware-endpoint": "^2.0.5", + "@smithy/middleware-retry": "^2.0.5", + "@smithy/middleware-serde": "^2.0.5", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.5", + "@smithy/node-http-handler": "^2.0.5", + "@smithy/protocol-http": "^2.0.5", + "@smithy/smithy-client": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/url-parser": "^2.0.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.5", + "@smithy/util-defaults-mode-node": "^2.0.5", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "@smithy/util-waiter": "^2.0.5", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "requires": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "requires": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/client-personalize-events": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-personalize-events/-/client-personalize-events-3.398.0.tgz", + "integrity": "sha512-dynXr8ZVMC2FxQS5QRr7cu90xAGfwgfZM5XDW2jm81UPK5Qqo2FbbEF4wvdXXbnkbvU5rsmxL1IjQiMGm+lWVg==", + "requires": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.398.0", + "@aws-sdk/credential-provider-node": "3.398.0", + "@aws-sdk/middleware-host-header": "3.398.0", + "@aws-sdk/middleware-logger": "3.398.0", + "@aws-sdk/middleware-recursion-detection": "3.398.0", + "@aws-sdk/middleware-signing": "3.398.0", + "@aws-sdk/middleware-user-agent": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@aws-sdk/util-user-agent-browser": "3.398.0", + "@aws-sdk/util-user-agent-node": "3.398.0", + "@smithy/config-resolver": "^2.0.5", + "@smithy/fetch-http-handler": "^2.0.5", + "@smithy/hash-node": "^2.0.5", + "@smithy/invalid-dependency": "^2.0.5", + "@smithy/middleware-content-length": "^2.0.5", + "@smithy/middleware-endpoint": "^2.0.5", + "@smithy/middleware-retry": "^2.0.5", + "@smithy/middleware-serde": "^2.0.5", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.5", + "@smithy/node-http-handler": "^2.0.5", + "@smithy/protocol-http": "^2.0.5", + "@smithy/smithy-client": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/url-parser": "^2.0.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.5", + "@smithy/util-defaults-mode-node": "^2.0.5", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "requires": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "requires": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/client-sso": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.398.0.tgz", + "integrity": "sha512-CygL0jhfibw4kmWXG/3sfZMFNjcXo66XUuPC4BqZBk8Rj5vFoxp1vZeMkDLzTIk97Nvo5J5Bh+QnXKhub6AckQ==", + "requires": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/middleware-host-header": "3.398.0", + "@aws-sdk/middleware-logger": "3.398.0", + "@aws-sdk/middleware-recursion-detection": "3.398.0", + "@aws-sdk/middleware-user-agent": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@aws-sdk/util-user-agent-browser": "3.398.0", + "@aws-sdk/util-user-agent-node": "3.398.0", + "@smithy/config-resolver": "^2.0.5", + "@smithy/fetch-http-handler": "^2.0.5", + "@smithy/hash-node": "^2.0.5", + "@smithy/invalid-dependency": "^2.0.5", + "@smithy/middleware-content-length": "^2.0.5", + "@smithy/middleware-endpoint": "^2.0.5", + "@smithy/middleware-retry": "^2.0.5", + "@smithy/middleware-serde": "^2.0.5", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.5", + "@smithy/node-http-handler": "^2.0.5", + "@smithy/protocol-http": "^2.0.5", + "@smithy/smithy-client": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/url-parser": "^2.0.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.5", + "@smithy/util-defaults-mode-node": "^2.0.5", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "requires": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "requires": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/client-sts": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.398.0.tgz", + "integrity": "sha512-/3Pa9wLMvBZipKraq3AtbmTfXW6q9kyvhwOno64f1Fz7kFb8ijQFMGoATS70B2pGEZTlxkUqJFWDiisT6Q6dFg==", + "requires": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/credential-provider-node": "3.398.0", + "@aws-sdk/middleware-host-header": "3.398.0", + "@aws-sdk/middleware-logger": "3.398.0", + "@aws-sdk/middleware-recursion-detection": "3.398.0", + "@aws-sdk/middleware-sdk-sts": "3.398.0", + "@aws-sdk/middleware-signing": "3.398.0", + "@aws-sdk/middleware-user-agent": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@aws-sdk/util-user-agent-browser": "3.398.0", + "@aws-sdk/util-user-agent-node": "3.398.0", + "@smithy/config-resolver": "^2.0.5", + "@smithy/fetch-http-handler": "^2.0.5", + "@smithy/hash-node": "^2.0.5", + "@smithy/invalid-dependency": "^2.0.5", + "@smithy/middleware-content-length": "^2.0.5", + "@smithy/middleware-endpoint": "^2.0.5", + "@smithy/middleware-retry": "^2.0.5", + "@smithy/middleware-serde": "^2.0.5", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.5", + "@smithy/node-http-handler": "^2.0.5", + "@smithy/protocol-http": "^2.0.5", + "@smithy/smithy-client": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/url-parser": "^2.0.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.5", + "@smithy/util-defaults-mode-node": "^2.0.5", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "requires": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "requires": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + }, + "fast-xml-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", + "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "requires": { + "strnum": "^1.0.5" + } + } + } + }, + "@aws-sdk/credential-provider-env": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.398.0.tgz", + "integrity": "sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ==", + "requires": { + "@aws-sdk/types": "3.398.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/credential-provider-ini": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.398.0.tgz", + "integrity": "sha512-AsK1lStK3nB9Cn6S6ODb1ktGh7SRejsNVQVKX3t5d3tgOaX+aX1Iwy8FzM/ZEN8uCloeRifUGIY9uQFygg5mSw==", + "requires": { + "@aws-sdk/credential-provider-env": "3.398.0", + "@aws-sdk/credential-provider-process": "3.398.0", + "@aws-sdk/credential-provider-sso": "3.398.0", + "@aws-sdk/credential-provider-web-identity": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@smithy/credential-provider-imds": "^2.0.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/credential-provider-node": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.398.0.tgz", + "integrity": "sha512-odmI/DSKfuWUYeDnGTCEHBbC8/MwnF6yEq874zl6+owoVv0ZsYP8qBHfiJkYqrwg7wQ7Pi40sSAPC1rhesGwzg==", + "requires": { + "@aws-sdk/credential-provider-env": "3.398.0", + "@aws-sdk/credential-provider-ini": "3.398.0", + "@aws-sdk/credential-provider-process": "3.398.0", + "@aws-sdk/credential-provider-sso": "3.398.0", + "@aws-sdk/credential-provider-web-identity": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@smithy/credential-provider-imds": "^2.0.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/credential-provider-process": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.398.0.tgz", + "integrity": "sha512-WrkBL1W7TXN508PA9wRXPFtzmGpVSW98gDaHEaa8GolAPHMPa5t2QcC/z/cFpglzrcVv8SA277zu9Z8tELdZhg==", + "requires": { + "@aws-sdk/types": "3.398.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/credential-provider-sso": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.398.0.tgz", + "integrity": "sha512-2Dl35587xbnzR/GGZqA2MnFs8+kS4wbHQO9BioU0okA+8NRueohNMdrdQmQDdSNK4BfIpFspiZmFkXFNyEAfgw==", + "requires": { + "@aws-sdk/client-sso": "3.398.0", + "@aws-sdk/token-providers": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/credential-provider-web-identity": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.398.0.tgz", + "integrity": "sha512-iG3905Alv9pINbQ8/MIsshgqYMbWx+NDQWpxbIW3W0MkSH3iAqdVpSCteYidYX9G/jv2Um1nW3y360ib20bvNg==", + "requires": { + "@aws-sdk/types": "3.398.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/middleware-host-header": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.398.0.tgz", + "integrity": "sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA==", + "requires": { + "@aws-sdk/types": "3.398.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/middleware-logger": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.398.0.tgz", + "integrity": "sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg==", + "requires": { + "@aws-sdk/types": "3.398.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/middleware-recursion-detection": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.398.0.tgz", + "integrity": "sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ==", + "requires": { + "@aws-sdk/types": "3.398.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/middleware-sdk-sts": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.398.0.tgz", + "integrity": "sha512-+JH76XHEgfVihkY+GurohOQ5Z83zVN1nYcQzwCFnCDTh4dG4KwhnZKG+WPw6XJECocY0R+H0ivofeALHvVWJtQ==", + "requires": { + "@aws-sdk/middleware-signing": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/middleware-signing": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.398.0.tgz", + "integrity": "sha512-O0KqXAix1TcvZBFt1qoFkHMUNJOSgjJTYS7lFTRKSwgsD27bdW2TM2r9R8DAccWFt5Amjkdt+eOwQMIXPGTm8w==", + "requires": { + "@aws-sdk/types": "3.398.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/signature-v4": "^2.0.0", + "@smithy/types": "^2.2.2", + "@smithy/util-middleware": "^2.0.0", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/middleware-user-agent": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.398.0.tgz", + "integrity": "sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ==", + "requires": { + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/token-providers": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.398.0.tgz", + "integrity": "sha512-nrYgjzavGCKJL/48Vt0EL+OlIc5UZLfNGpgyUW9cv3XZwl+kXV0QB+HH0rHZZLfpbBgZ2RBIJR9uD5ieu/6hpQ==", + "requires": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/middleware-host-header": "3.398.0", + "@aws-sdk/middleware-logger": "3.398.0", + "@aws-sdk/middleware-recursion-detection": "3.398.0", + "@aws-sdk/middleware-user-agent": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@aws-sdk/util-user-agent-browser": "3.398.0", + "@aws-sdk/util-user-agent-node": "3.398.0", + "@smithy/config-resolver": "^2.0.5", + "@smithy/fetch-http-handler": "^2.0.5", + "@smithy/hash-node": "^2.0.5", + "@smithy/invalid-dependency": "^2.0.5", + "@smithy/middleware-content-length": "^2.0.5", + "@smithy/middleware-endpoint": "^2.0.5", + "@smithy/middleware-retry": "^2.0.5", + "@smithy/middleware-serde": "^2.0.5", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.5", + "@smithy/node-http-handler": "^2.0.5", + "@smithy/property-provider": "^2.0.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/shared-ini-file-loader": "^2.0.0", + "@smithy/smithy-client": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/url-parser": "^2.0.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.5", + "@smithy/util-defaults-mode-node": "^2.0.5", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "requires": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "requires": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/types": { + "version": "3.387.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.387.0.tgz", + "integrity": "sha512-YTjFabNwjTF+6yl88f0/tWff018qmmgMmjlw45s6sdVKueWxdxV68U7gepNLF2nhaQPZa6FDOBoA51NaviVs0Q==", + "requires": { + "@smithy/types": "^2.1.0", + "tslib": "^2.5.0" + } + }, + "@aws-sdk/util-endpoints": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.398.0.tgz", + "integrity": "sha512-Fy0gLYAei/Rd6BrXG4baspCnWTUSd0NdokU1pZh4KlfEAEN1i8SPPgfiO5hLk7+2inqtCmqxVJlfqbMVe9k4bw==", + "requires": { + "@aws-sdk/types": "3.398.0", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/util-locate-window": { + "version": "3.495.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.495.0.tgz", + "integrity": "sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@aws-sdk/util-user-agent-browser": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.398.0.tgz", + "integrity": "sha512-A3Tzx1tkDHlBT+IgxmsMCHbV8LM7SwwCozq2ZjJRx0nqw3MCrrcxQFXldHeX/gdUMO+0Oocb7HGSnVODTq+0EA==", + "requires": { + "@aws-sdk/types": "3.398.0", + "@smithy/types": "^2.2.2", + "bowser": "^2.11.0", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/util-user-agent-node": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.398.0.tgz", + "integrity": "sha512-RTVQofdj961ej4//fEkppFf4KXqKGMTCqJYghx3G0C/MYXbg7MGl7LjfNGtJcboRE8pfHHQ/TUWBDA7RIAPPlQ==", + "requires": { + "@aws-sdk/types": "3.398.0", + "@smithy/node-config-provider": "^2.0.5", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + } + } + }, + "@aws-sdk/util-utf8-browser": { + "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "requires": { + "tslib": "^2.3.1" + } + }, "@babel/code-frame": { "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", @@ -27179,6 +30472,576 @@ "@sinonjs/commons": "^1.7.0" } }, + "@smithy/abort-controller": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.1.3.tgz", + "integrity": "sha512-c2aYH2Wu1RVE3rLlVgg2kQOBJGM0WbjReQi5DnPTm2Zb7F0gk7J2aeQeaX2u/lQZoHl6gv8Oac7mt9alU3+f4A==", + "requires": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "@smithy/config-resolver": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.1.4.tgz", + "integrity": "sha512-AW2WUZmBAzgO3V3ovKtsUbI3aBNMeQKFDumoqkNxaVDWF/xfnxAWqBKDr/NuG7c06N2Rm4xeZLPiJH/d+na0HA==", + "requires": { + "@smithy/node-config-provider": "^2.2.4", + "@smithy/types": "^2.10.1", + "@smithy/util-config-provider": "^2.2.1", + "@smithy/util-middleware": "^2.1.3", + "tslib": "^2.5.0" + } + }, + "@smithy/credential-provider-imds": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.2.5.tgz", + "integrity": "sha512-OxgD7jX6bjDJNYsjKCZN+PBVy3ZNiXGhysOtfaV1+WGSmbJJWkw613BQaY0iDAxVxUNTt30Lt3NyhimAAsZ3TA==", + "requires": { + "@smithy/node-config-provider": "^2.2.4", + "@smithy/property-provider": "^2.1.3", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "tslib": "^2.5.0" + } + }, + "@smithy/eventstream-codec": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.1.3.tgz", + "integrity": "sha512-rGlCVuwSDv6qfKH4/lRxFjcZQnIE0LZ3D4lkMHg7ZSltK9rA74r0VuGSvWVQ4N/d70VZPaniFhp4Z14QYZsa+A==", + "requires": { + "@aws-crypto/crc32": "3.0.0", + "@smithy/types": "^2.10.1", + "@smithy/util-hex-encoding": "^2.1.1", + "tslib": "^2.5.0" + }, + "dependencies": { + "@smithy/util-hex-encoding": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.1.1.tgz", + "integrity": "sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==", + "requires": { + "tslib": "^2.5.0" + } + } + } + }, + "@smithy/eventstream-serde-browser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.1.3.tgz", + "integrity": "sha512-qAgKbZ9m2oBfSyJWWurX/MvQFRPrYypj79cDSleEgDwBoez6Tfd+FTpu2L/j3ZeC3mDlDHIKWksoeaXZpLLAHw==", + "requires": { + "@smithy/eventstream-serde-universal": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "@smithy/eventstream-serde-config-resolver": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.1.3.tgz", + "integrity": "sha512-48rvsNv/MgAFCxOE0qwR7ZwKhaEdDoTxqH5HM+T6SDxICmPGb7gEuQzjTxQhcieCPgqyXeZFW8cU0QJxdowuIg==", + "requires": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "@smithy/eventstream-serde-node": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.1.3.tgz", + "integrity": "sha512-RPJWWDhj8isk3NtGfm3Xt1WdHyX9ZE42V+m1nLU1I0zZ1hEol/oawHsTnhva/VR5bn+bJ2zscx+BYr0cEPRtmg==", + "requires": { + "@smithy/eventstream-serde-universal": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "@smithy/eventstream-serde-universal": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.1.3.tgz", + "integrity": "sha512-ssvSMk1LX2jRhiOVgVLGfNJXdB8SvyjieKcJDHq698Gi3LOog6g/+l7ggrN+hZxyjUiDF4cUxgKaZTBUghzhLw==", + "requires": { + "@smithy/eventstream-codec": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "@smithy/fetch-http-handler": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.4.3.tgz", + "integrity": "sha512-Fn/KYJFo6L5I4YPG8WQb2hOmExgRmNpVH5IK2zU3JKrY5FKW7y9ar5e0BexiIC9DhSKqKX+HeWq/Y18fq7Dkpw==", + "requires": { + "@smithy/protocol-http": "^3.2.1", + "@smithy/querystring-builder": "^2.1.3", + "@smithy/types": "^2.10.1", + "@smithy/util-base64": "^2.1.1", + "tslib": "^2.5.0" + }, + "dependencies": { + "@smithy/protocol-http": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.2.1.tgz", + "integrity": "sha512-KLrQkEw4yJCeAmAH7hctE8g9KwA7+H2nSJwxgwIxchbp/L0B5exTdOQi9D5HinPLlothoervGmhpYKelZ6AxIA==", + "requires": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + } + } + }, + "@smithy/hash-node": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.1.3.tgz", + "integrity": "sha512-FsAPCUj7VNJIdHbSxMd5uiZiF20G2zdSDgrgrDrHqIs/VMxK85Vqk5kMVNNDMCZmMezp6UKnac0B4nAyx7HJ9g==", + "requires": { + "@smithy/types": "^2.10.1", + "@smithy/util-buffer-from": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "dependencies": { + "@smithy/util-utf8": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.1.1.tgz", + "integrity": "sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==", + "requires": { + "@smithy/util-buffer-from": "^2.1.1", + "tslib": "^2.5.0" + } + } + } + }, + "@smithy/invalid-dependency": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.1.3.tgz", + "integrity": "sha512-wkra7d/G4CbngV4xsjYyAYOvdAhahQje/WymuQdVEnXFExJopEu7fbL5AEAlBPgWHXwu94VnCSG00gVzRfExyg==", + "requires": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "@smithy/is-array-buffer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.1.1.tgz", + "integrity": "sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/md5-js": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.0.7.tgz", + "integrity": "sha512-2i2BpXF9pI5D1xekqUsgQ/ohv5+H//G9FlawJrkOJskV18PgJ8LiNbLiskMeYt07yAsSTZR7qtlcAaa/GQLWww==", + "requires": { + "@smithy/types": "^2.3.1", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + } + }, + "@smithy/middleware-content-length": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.1.3.tgz", + "integrity": "sha512-aJduhkC+dcXxdnv5ZpM3uMmtGmVFKx412R1gbeykS5HXDmRU6oSsyy2SoHENCkfOGKAQOjVE2WVqDJibC0d21g==", + "requires": { + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "dependencies": { + "@smithy/protocol-http": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.2.1.tgz", + "integrity": "sha512-KLrQkEw4yJCeAmAH7hctE8g9KwA7+H2nSJwxgwIxchbp/L0B5exTdOQi9D5HinPLlothoervGmhpYKelZ6AxIA==", + "requires": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + } + } + }, + "@smithy/middleware-endpoint": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.4.4.tgz", + "integrity": "sha512-4yjHyHK2Jul4JUDBo2sTsWY9UshYUnXeb/TAK/MTaPEb8XQvDmpwSFnfIRDU45RY1a6iC9LCnmJNg/yHyfxqkw==", + "requires": { + "@smithy/middleware-serde": "^2.1.3", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/shared-ini-file-loader": "^2.3.4", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "@smithy/util-middleware": "^2.1.3", + "tslib": "^2.5.0" + } + }, + "@smithy/middleware-retry": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.1.4.tgz", + "integrity": "sha512-Cyolv9YckZTPli1EkkaS39UklonxMd08VskiuMhURDjC0HHa/AD6aK/YoD21CHv9s0QLg0WMLvk9YeLTKkXaFQ==", + "requires": { + "@smithy/node-config-provider": "^2.2.4", + "@smithy/protocol-http": "^3.2.1", + "@smithy/service-error-classification": "^2.1.3", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-retry": "^2.1.3", + "tslib": "^2.5.0", + "uuid": "^8.3.2" + }, + "dependencies": { + "@smithy/protocol-http": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.2.1.tgz", + "integrity": "sha512-KLrQkEw4yJCeAmAH7hctE8g9KwA7+H2nSJwxgwIxchbp/L0B5exTdOQi9D5HinPLlothoervGmhpYKelZ6AxIA==", + "requires": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } + } + }, + "@smithy/middleware-serde": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.1.3.tgz", + "integrity": "sha512-s76LId+TwASrHhUa9QS4k/zeXDUAuNuddKklQzRgumbzge5BftVXHXIqL4wQxKGLocPwfgAOXWx+HdWhQk9hTg==", + "requires": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "@smithy/middleware-stack": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.1.3.tgz", + "integrity": "sha512-opMFufVQgvBSld/b7mD7OOEBxF6STyraVr1xel1j0abVILM8ALJvRoFbqSWHGmaDlRGIiV9Q5cGbWi0sdiEaLQ==", + "requires": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "@smithy/node-config-provider": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.2.4.tgz", + "integrity": "sha512-nqazHCp8r4KHSFhRQ+T0VEkeqvA0U+RhehBSr1gunUuNW3X7j0uDrWBxB2gE9eutzy6kE3Y7L+Dov/UXT871vg==", + "requires": { + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.4", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "@smithy/node-http-handler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.4.1.tgz", + "integrity": "sha512-HCkb94soYhJMxPCa61wGKgmeKpJ3Gftx1XD6bcWEB2wMV1L9/SkQu/6/ysKBnbOzWRE01FGzwrTxucHypZ8rdg==", + "requires": { + "@smithy/abort-controller": "^2.1.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/querystring-builder": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "dependencies": { + "@smithy/protocol-http": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.2.1.tgz", + "integrity": "sha512-KLrQkEw4yJCeAmAH7hctE8g9KwA7+H2nSJwxgwIxchbp/L0B5exTdOQi9D5HinPLlothoervGmhpYKelZ6AxIA==", + "requires": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + } + } + }, + "@smithy/property-provider": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.1.3.tgz", + "integrity": "sha512-bMz3se+ySKWNrgm7eIiQMa2HO/0fl2D0HvLAdg9pTMcpgp4SqOAh6bz7Ik6y7uQqSrk4rLjIKgbQ6yzYgGehCQ==", + "requires": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "@smithy/protocol-http": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-2.0.5.tgz", + "integrity": "sha512-d2hhHj34mA2V86doiDfrsy2fNTnUOowGaf9hKb0hIPHqvcnShU4/OSc4Uf1FwHkAdYF3cFXTrj5VGUYbEuvMdw==", + "requires": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + } + }, + "@smithy/querystring-builder": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.1.3.tgz", + "integrity": "sha512-kFD3PnNqKELe6m9GRHQw/ftFFSZpnSeQD4qvgDB6BQN6hREHELSosVFUMPN4M3MDKN2jAwk35vXHLoDrNfKu0A==", + "requires": { + "@smithy/types": "^2.10.1", + "@smithy/util-uri-escape": "^2.1.1", + "tslib": "^2.5.0" + } + }, + "@smithy/querystring-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.1.3.tgz", + "integrity": "sha512-3+CWJoAqcBMR+yvz6D+Fc5VdoGFtfenW6wqSWATWajrRMGVwJGPT3Vy2eb2bnMktJc4HU4bpjeovFa566P3knQ==", + "requires": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "@smithy/service-error-classification": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.3.tgz", + "integrity": "sha512-iUrpSsem97bbXHHT/v3s7vaq8IIeMo6P6cXdeYHrx0wOJpMeBGQF7CB0mbJSiTm3//iq3L55JiEm8rA7CTVI8A==", + "requires": { + "@smithy/types": "^2.10.1" + } + }, + "@smithy/shared-ini-file-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.3.4.tgz", + "integrity": "sha512-CiZmPg9GeDKbKmJGEFvJBsJcFnh0AQRzOtQAzj1XEa8N/0/uSN/v1LYzgO7ry8hhO8+9KB7+DhSW0weqBra4Aw==", + "requires": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "@smithy/signature-v4": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.1.3.tgz", + "integrity": "sha512-Jq4iPPdCmJojZTsPePn4r1ULShh6ONkokLuxp1Lnk4Sq7r7rJp4HlA1LbPBq4bD64TIzQezIpr1X+eh5NYkNxw==", + "requires": { + "@smithy/eventstream-codec": "^2.1.3", + "@smithy/is-array-buffer": "^2.1.1", + "@smithy/types": "^2.10.1", + "@smithy/util-hex-encoding": "^2.1.1", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-uri-escape": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "dependencies": { + "@smithy/util-hex-encoding": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.1.1.tgz", + "integrity": "sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/util-utf8": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.1.1.tgz", + "integrity": "sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==", + "requires": { + "@smithy/util-buffer-from": "^2.1.1", + "tslib": "^2.5.0" + } + } + } + }, + "@smithy/smithy-client": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.4.2.tgz", + "integrity": "sha512-ntAFYN51zu3N3mCd95YFcFi/8rmvm//uX+HnK24CRbI6k5Rjackn0JhgKz5zOx/tbNvOpgQIwhSX+1EvEsBLbA==", + "requires": { + "@smithy/middleware-endpoint": "^2.4.4", + "@smithy/middleware-stack": "^2.1.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "@smithy/util-stream": "^2.1.3", + "tslib": "^2.5.0" + }, + "dependencies": { + "@smithy/protocol-http": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.2.1.tgz", + "integrity": "sha512-KLrQkEw4yJCeAmAH7hctE8g9KwA7+H2nSJwxgwIxchbp/L0B5exTdOQi9D5HinPLlothoervGmhpYKelZ6AxIA==", + "requires": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + } + } + }, + "@smithy/types": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.10.1.tgz", + "integrity": "sha512-hjQO+4ru4cQ58FluQvKKiyMsFg0A6iRpGm2kqdH8fniyNd2WyanoOsYJfMX/IFLuLxEoW6gnRkNZy1y6fUUhtA==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/url-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.1.3.tgz", + "integrity": "sha512-X1NRA4WzK/ihgyzTpeGvI9Wn45y8HmqF4AZ/FazwAv8V203Ex+4lXqcYI70naX9ETqbqKVzFk88W6WJJzCggTQ==", + "requires": { + "@smithy/querystring-parser": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "@smithy/util-base64": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.1.1.tgz", + "integrity": "sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g==", + "requires": { + "@smithy/util-buffer-from": "^2.1.1", + "tslib": "^2.5.0" + } + }, + "@smithy/util-body-length-browser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.1.1.tgz", + "integrity": "sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/util-body-length-node": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.2.1.tgz", + "integrity": "sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/util-buffer-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.1.1.tgz", + "integrity": "sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==", + "requires": { + "@smithy/is-array-buffer": "^2.1.1", + "tslib": "^2.5.0" + } + }, + "@smithy/util-config-provider": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.2.1.tgz", + "integrity": "sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/util-defaults-mode-browser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.1.4.tgz", + "integrity": "sha512-J6XAVY+/g7jf03QMnvqPyU+8jqGrrtXoKWFVOS+n1sz0Lg8HjHJ1ANqaDN+KTTKZRZlvG8nU5ZrJOUL6VdwgcQ==", + "requires": { + "@smithy/property-provider": "^2.1.3", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "bowser": "^2.11.0", + "tslib": "^2.5.0" + } + }, + "@smithy/util-defaults-mode-node": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.2.4.tgz", + "integrity": "sha512-dvBhPpjpIdGKyJZZ0STFCcvak79Q6brgyZhsebfiAX/zB5paYuqmkG6hMUW7QqZFQ7kCldtOUzwV75MuXaiuhA==", + "requires": { + "@smithy/config-resolver": "^2.1.4", + "@smithy/credential-provider-imds": "^2.2.5", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/property-provider": "^2.1.3", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "@smithy/util-hex-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.0.0.tgz", + "integrity": "sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/util-middleware": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.1.3.tgz", + "integrity": "sha512-/+2fm7AZ2ozl5h8wM++ZP0ovE9/tiUUAHIbCfGfb3Zd3+Dyk17WODPKXBeJ/TnK5U+x743QmA0xHzlSm8I/qhw==", + "requires": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "@smithy/util-retry": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.1.3.tgz", + "integrity": "sha512-Kbvd+GEMuozbNUU3B89mb99tbufwREcyx2BOX0X2+qHjq6Gvsah8xSDDgxISDwcOHoDqUWO425F0Uc/QIRhYkg==", + "requires": { + "@smithy/service-error-classification": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "@smithy/util-stream": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.1.3.tgz", + "integrity": "sha512-HvpEQbP8raTy9n86ZfXiAkf3ezp1c3qeeO//zGqwZdrfaoOpGKQgF2Sv1IqZp7wjhna7pvczWaGUHjcOPuQwKw==", + "requires": { + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/types": "^2.10.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-buffer-from": "^2.1.1", + "@smithy/util-hex-encoding": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "dependencies": { + "@smithy/util-hex-encoding": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.1.1.tgz", + "integrity": "sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/util-utf8": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.1.1.tgz", + "integrity": "sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==", + "requires": { + "@smithy/util-buffer-from": "^2.1.1", + "tslib": "^2.5.0" + } + } + } + }, + "@smithy/util-uri-escape": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.1.1.tgz", + "integrity": "sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/util-utf8": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.0.tgz", + "integrity": "sha512-rctU1VkziY84n5OXe3bPNpKR001ZCME2JCaBBFgtiM2hfKbHFudc/BkMuPab8hRbLd0j3vbnBTTZ1igBf0wgiQ==", + "requires": { + "@smithy/util-buffer-from": "^2.0.0", + "tslib": "^2.5.0" + } + }, + "@smithy/util-waiter": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.1.3.tgz", + "integrity": "sha512-3R0wNFAQQoH9e4m+bVLDYNOst2qNxtxFgq03WoNHWTBOqQT3jFnOBRj1W51Rf563xDA5kwqjziksxn6RKkHB+Q==", + "requires": { + "@smithy/abort-controller": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, "@surma/rollup-plugin-off-main-thread": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", @@ -28012,6 +31875,11 @@ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" }, + "@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==" + }, "@types/validator": { "version": "13.11.9", "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.9.tgz", @@ -28830,6 +32698,21 @@ "possible-typed-array-names": "^1.0.0" } }, + "aws-amplify": { + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/aws-amplify/-/aws-amplify-6.0.19.tgz", + "integrity": "sha512-M2kBWd2RO0a/2KvtgxsKSzIwvfN1eJ1x3P+MU1jtAZIqhBIYpCUZYN4MQjnygp2p5iiit19KEsUw4c8INJ3trQ==", + "requires": { + "@aws-amplify/analytics": "7.0.19", + "@aws-amplify/api": "6.0.19", + "@aws-amplify/auth": "6.0.19", + "@aws-amplify/core": "6.0.19", + "@aws-amplify/datastore": "5.0.19", + "@aws-amplify/notifications": "2.0.19", + "@aws-amplify/storage": "6.0.19", + "tslib": "^2.5.0" + } + }, "aws-sdk": { "version": "2.1563.0", "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1563.0.tgz", @@ -29254,6 +33137,11 @@ "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "requires": {} }, + "bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -31708,6 +35596,14 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "fast-xml-parser": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.5.tgz", + "integrity": "sha512-sWvP1Pl8H03B8oFJpFR3HE31HUfwtX7Rlf9BNsvdpujD4n7WMhfmu8h9wOV2u+c1k0ZilTADhPqypzx2J690ZQ==", + "requires": { + "strnum": "^1.0.5" + } + }, "fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -32335,6 +36231,11 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "graphql": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==" + }, "gzip-size": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", @@ -35629,6 +39530,11 @@ "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz", "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==" }, + "js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==" + }, "js-md4": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", @@ -38807,6 +42713,14 @@ "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" }, + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "requires": { + "tslib": "^2.1.0" + } + }, "safe-array-concat": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", @@ -39592,6 +43506,11 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, + "strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + }, "style-loader": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", @@ -40220,6 +44139,11 @@ "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", "optional": true }, + "ulid": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz", + "integrity": "sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==" + }, "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", diff --git a/package.json b/package.json index 59418a5..ad6d927 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "aws-amplify": "^6.0.19", "aws-sdk": "^2.1535.0", "axios": "^1.6.2", "bootstrap": "^5.3.2", diff --git a/src/AppContent.js b/src/AppContent.js index e9d859c..ad3553b 100644 --- a/src/AppContent.js +++ b/src/AppContent.js @@ -2,14 +2,25 @@ import React from "react"; import { Route, Routes } from "react-router-dom"; import { PageHeaderProvider } from "./context"; import HomePageLayout from "./components/layout/HomePageLayout"; +import SignUpLayout from "./components/layout/SignUpLayout"; import Dashboard from "./pages/Dashboard"; import Prospects from "./pages/Prospects"; import Leads from "./pages/Leads"; +import SignUp from "./pages/SignUp"; const AppContent = () => { return ( + + + + } + /> + { + const halfwayIndex = Math.ceil(callToActionItems.length / 2); + const firstHalfCTAs = callToActionItems.slice(0, halfwayIndex); + const secondHalfCTAs = callToActionItems.slice(halfwayIndex); + + const combinedItems = [...firstHalfCTAs, ...navItems, ...secondHalfCTAs]; + const loopItems = [...combinedItems, ...combinedItems]; + + return ( + + ); +}; + +export default BottomNav; diff --git a/src/components/layout/LeftNav/index.js b/src/components/layout/LeftNav/index.js index 021d7dd..11cb2c0 100644 --- a/src/components/layout/LeftNav/index.js +++ b/src/components/layout/LeftNav/index.js @@ -2,27 +2,12 @@ import React from "react"; import List from "@mui/material/List"; import NavListItem from "./NavListItem"; import "./LeftNav.css"; +import { NAV_ITEMS } from "../../../utils/constants/uiConstants"; const LeftNav = () => { - const navItems = [ - { to: "/", icon: "analytics", label: "Main Dashboard" }, - { to: "/prospects", icon: "location_searching", label: "Prospects" }, - { to: "/leads", icon: "supervised_user_circle", label: "Leads" }, - { to: "/offer-oracle", icon: "psychology", label: "Offer Oracle" }, - { to: "/offers", icon: "send", label: "Offer Outreach" }, - { - to: "/inspections", - icon: "fact_check", - label: "Inspections", - }, - { to: "/buyers", icon: "group", label: "Buyers" }, - { to: "/deal-distribution", icon: "rocket_launch", label: "Deal Deploy" }, - { to: "/title", icon: "gavel", label: "Title Kickstart" }, - ]; - return ( - {navItems.map((item, index) => ( + {NAV_ITEMS.map((item) => ( { + return ( +
+ {children} {/* This is where your SignUp component will be rendered */} + +
+ ); +}; + +export default SignUpLayout; diff --git a/src/components/modal/UserLoginModal/UserLoginModal.css b/src/components/modal/UserLoginModal/UserLoginModal.css new file mode 100644 index 0000000..c77115c --- /dev/null +++ b/src/components/modal/UserLoginModal/UserLoginModal.css @@ -0,0 +1,63 @@ +.signup-card { + background: #fff; + padding: 40px; + border-radius: 11px; + box-shadow: 0 3px 8px rgba(0, 0, 0, 0.185); + display: flex; + flex-direction: column; + gap: 20px; + align-items: center; + width: 100%; + margin: 0 auto; +} + +.signup-card input { + width: 100%; + padding: 10px; + margin-bottom: 10px; + border: 1px solid #ddd; + border-radius: 5px; + box-sizing: border-box; +} + +.signup-card button { + width: 100%; + padding: 10px; + margin-bottom: 10px; + border: none; + border-radius: 5px; + cursor: pointer; + font-size: 1rem; + font-weight: bold; + transition: background-color 0.3s; +} + +.login-btn { + background-color: var( + --brand-color + ); /* Variable for the primary brand color */ + color: white; + margin-bottom: 10px; /* Spacing between the button and the divider */ +} + +.login-btn:hover { + background-color: var(--brand-color-light); /* Lighter brand color on hover */ +} + +.create-account-btn { + background-color: #c2a200; /* Darker gold for creating an account */ + color: white; + margin-top: 10px; /* Spacing between the divider and the button */ +} + +.create-account-btn:hover { + background-color: var(--brand-color-2); /* Even darker gold on hover */ +} + +.divider { + height: 1px; + width: 100%; + background-color: #ccd0d5; + margin-top: 10px; + margin-bottom: 10px; +} diff --git a/src/components/modal/UserLoginModal/index.js b/src/components/modal/UserLoginModal/index.js new file mode 100644 index 0000000..bbd3dcb --- /dev/null +++ b/src/components/modal/UserLoginModal/index.js @@ -0,0 +1,36 @@ +// UserLoginModal.js +import React, { useState } from "react"; +import "./UserLoginModal.css"; // Create this CSS file for UserLoginModal specific styles + +const UserLoginModal = ({ onLogin, onClose }) => { + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + + return ( +
+
+ setEmail(e.target.value)} + /> + setPassword(e.target.value)} + /> + +
+ +
+
+ ); +}; + +export default UserLoginModal; diff --git a/src/pages/SignUp/SignUp.css b/src/pages/SignUp/SignUp.css new file mode 100644 index 0000000..31cc67f --- /dev/null +++ b/src/pages/SignUp/SignUp.css @@ -0,0 +1,43 @@ +/* SignUp.css - styles for the SignUp page */ +.signup-page { + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + font-family: var(--font-family); /* Using the font from your index.css */ +} + +.signup-left, +.signup-right { + width: 39%; +} + +.signup-left { + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + padding-left: 10%; +} + +.signup-left h1 { + font-size: 3rem; + margin-bottom: 0.5em; +} + +.signup-left p { + font-size: 1.3rem; + color: #333; + font-weight: 545; +} + +.signup-right { + display: flex; + justify-content: center; + align-items: center; +} + +.name-header { + color: var(--brand-color); + text-shadow: 1px 0px 0px var(--brand-color-2); +} diff --git a/src/pages/SignUp/index.js b/src/pages/SignUp/index.js new file mode 100644 index 0000000..d71f6d3 --- /dev/null +++ b/src/pages/SignUp/index.js @@ -0,0 +1,49 @@ +import React, { useState } from "react"; +import "./SignUp.css"; +import { signUp } from "aws-amplify/auth"; +import UserLoginModal from "../../components/modal/UserLoginModal"; + +const SignUp = () => { + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const [modalOpen, setModalOpen] = useState(true); + + const handleSignUp = async () => { + // Add AWS Cognito sign-up logic + try { + const { user } = await signUp({ + username: email, + password, + // Add additional attributes as needed + }); + console.log(user); + // Handle next steps, like confirmation code + } catch (error) { + console.log("error signing up:", error); + } + }; + + const openModal = () => { + setModalOpen(true); + }; + + const closeModal = () => { + setModalOpen(false); + }; + + return ( +
+
+

KontraX

+

Multiply your deals.

+
+
+ {modalOpen && ( + + )} +
+
+ ); +}; + +export default SignUp; diff --git a/src/utils/constants/uiConstants.js b/src/utils/constants/uiConstants.js index 16b4a03..b2a23ad 100644 --- a/src/utils/constants/uiConstants.js +++ b/src/utils/constants/uiConstants.js @@ -42,6 +42,49 @@ export const SMALL_NOTIFICATIONS_MESSAGES = { EMAIL_SEND_FAILURE: "Error Sending Email.", }; +export const NAV_ITEMS = [ + { to: "/", icon: "analytics", label: "Main Dashboard" }, + { to: "/prospects", icon: "location_searching", label: "Prospects" }, + { to: "/leads", icon: "supervised_user_circle", label: "Leads" }, + { to: "/offer-oracle", icon: "psychology", label: "Offer Oracle" }, + { to: "/offers", icon: "send", label: "Offer Outreach" }, + { + to: "/inspections", + icon: "fact_check", + label: "Inspections", + }, + { to: "/buyers", icon: "group", label: "Buyers" }, + { to: "/deal-distribution", icon: "rocket_launch", label: "Deal Deploy" }, + { to: "/title", icon: "gavel", label: "Title Kickstart" }, +]; + +export const CTA_ITEMS = [ + { + label: "Sign Up Now!", + icon: "touch_app", + cta: true, + section: "Calls to Action", + }, + { + label: "Explore Hot Markets", + icon: "explore", + cta: true, + section: "Calls to Action", + }, + { + label: "Join Community", + icon: "groups", + cta: true, + section: "Calls to Action", + }, + { + label: "Get Started", + icon: "arrow_right_alt", + cta: true, + section: "Calls to Action", + }, +]; + export const LEADS_FILTER_OPTIONS = [ { name: "status", From 49a6051165a70bc9f4ddb86418a2538cd0a30e5c Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Wed, 6 Mar 2024 22:15:22 -0500 Subject: [PATCH 074/118] updates to Todo list, --- TODO.md | 48 ++++++++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/TODO.md b/TODO.md index a7a7fa4..ff03557 100644 --- a/TODO.md +++ b/TODO.md @@ -1,45 +1,29 @@ # TODO.md -- [ ] Update placement of context folder to direct to src folder - -## Table Enhancements - -- [ ] Edit/Create/Delete capabilities for leads in leads page - -## FilterBar Improvements - -- [ ] Error handling if lead in data doesn't have a field -- [ ] Generalize filterbar more to take in toggle button properties and don't define those properties in the file itself - do so in leads index -- [ ] Create custom FilterToggleButton component - ## Dashboard Development To-Do List - [ ] **Overview Section** - - [ ] Ensure KPIs reflect the selected market and timeline from the dropdown filters + - [ ] Add a refresh tab which will make call to DB api for fresh data + - [ ] Integration with timeline and market filters -- [ ] **Market Insights Section** +- [ ] **Performance Metrics Section** - - [ ] Investor Activity and Interest Levels: Graphs tracking the level of investor activity in different market segments, including types of properties and geographic areas. Use Brent's formula in that virtual youtube video - - [ ] Create and integrate timeline filter dropdown + - [ ] Integration with timeline and market filters -- [ ] **Performance Metrics Section** +- [ ] **Market Insights Section** - - [ ] Create and integrate market filter dropdown - - [ ] Create and integrate timeline filter dropdown - - [x] Develop visual components for cost per lead, cost per contract, average deal size, and time to close metrics - - [x] Style alongside existing performance metrics cards + - [ ] Investor Activity and Interest Levels Hottest Investor markets: Use Brent's formula in that virtual youtube video to determine hottest investor markets currently + - [ ] Display all 'my' markets with ability to add or remove markets + - [ ] Display my top 3 markets based and showing # of deals closed in respective market + - [ ] Current deal conversion graph will be only based on my markets + - [ ] Remove Deals Closed Graph - [ ] **Lead Source Analysis Section** - - [x] Integrate sales radar chart for analyzing list performance - - [x] Add ROI by Lead Source chart to assess the profitability of marketing channels - - [ ] Include market filter dropdown - - [ ] Include timeline filter dropdown + - [ ] Integration with timeline and market filters - [ ] **Deal Lifecycle Insights Section** - - [ ] Analyze Deals Terminated with a Pareto chart to identify common issues from highcharts - [ ] Track Deals Pending with a Kanban board visualization - [ ] Highlight Key Trends for the last 5 closed deals @@ -49,4 +33,12 @@ - [ ] Include market filter dropdown - [ ] Include timeline filter dropdown -- [ ] Have everything except the overview in one class where it has a fixed size and I can scroll down on it (similar to my table's style.) +## Table Enhancements + +- [ ] Edit/Create/Delete capabilities for leads in leads page + + ## FilterBar Improvements + + - [ ] Error handling if lead in data doesn't have a field + - [ ] Generalize filterbar more to take in toggle button properties and don't define those properties in the file itself do so in leads index + - [ ] Create custom FilterToggleButton component From 3abd5ef88c075102ac77c2c8df6ac40908848ff2 Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Thu, 7 Mar 2024 13:57:25 -0500 Subject: [PATCH 075/118] updated skiptracing modal for bug fix --- .../SkiptraceListModal/FileProcessing.js | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/components/modal/SkiptraceListModal/FileProcessing.js b/src/components/modal/SkiptraceListModal/FileProcessing.js index 28daf88..10274a9 100644 --- a/src/components/modal/SkiptraceListModal/FileProcessing.js +++ b/src/components/modal/SkiptraceListModal/FileProcessing.js @@ -36,6 +36,7 @@ const FileProcessing = ({ const [fileHeaders, setFileHeaders] = useState([]); const [headerMappings, setHeaderMappings] = useState({}); const [emailErrorMessage, setEmailErrorMessage] = useState(null); + const [showSkiptraceButton, setShowSkiptraceButton] = useState(false); const { data, isLoading, @@ -50,13 +51,16 @@ const FileProcessing = ({ const handleProcessing = async (mappings) => { setIsProcessing(true); resetMessage(); + setShowSkiptraceButton(true); const fileContent = selectedFile[0].content; // Assuming this is the text content of the file const decodedContent = decodeBase64Content(fileContent); - const skiptraceApiRequestBody = transformCsvToSkiptraceApiRequestBody( - decodedContent, - flipMappings(mappings) - ); - skiptraceProperties(skiptraceApiRequestBody); + if (!showHeaderMappingModal) { + const skiptraceApiRequestBody = transformCsvToSkiptraceApiRequestBody( + decodedContent, + flipMappings(mappings) + ); + skiptraceProperties(skiptraceApiRequestBody); + } }; useEffect(() => { @@ -81,6 +85,7 @@ const FileProcessing = ({ message: DOWNLOAD_MESSAGES.DOWNLOAD_COMPLETE, type: "success", }); + setShowSkiptraceButton(false); }; const errorActions = (error, errorMessage) => { @@ -99,6 +104,7 @@ const FileProcessing = ({ const headers = await extractHeadersFromFile(selectedFile[0]); setFileHeaders(headers); setShowHeaderMappingModal(true); + setShowSkiptraceButton(false); } catch (error) { console.error("Error extracting headers from file:", error); setMessageInfo({ @@ -142,7 +148,8 @@ const FileProcessing = ({ )} - {(!isProcessing && + {(!showHeaderMappingModal && + showSkiptraceButton && !processedFile && selectedFile && selectedFile.length > 0) || @@ -150,7 +157,7 @@ const FileProcessing = ({ From 9b7931cf4cbb8c97e4f0b23b3422053a59f5d71c Mon Sep 17 00:00:00 2001 From: Hasani Hendrix Date: Thu, 7 Mar 2024 16:24:20 -0500 Subject: [PATCH 076/118] updates to user login page. Frontend almost complete --- src/components/layout/BottomNav/BottomNav.css | 21 ++++++++++++++ src/components/layout/BottomNav/index.js | 28 +++++++++++++++---- src/components/layout/SignUpLayout/index.js | 12 ++++++-- src/pages/SignUp/SignUp.css | 2 +- src/utils/commonFunctions.js | 4 +++ src/utils/constants/uiConstants.js | 12 +++++--- 6 files changed, 67 insertions(+), 12 deletions(-) diff --git a/src/components/layout/BottomNav/BottomNav.css b/src/components/layout/BottomNav/BottomNav.css index c5d0bd5..94d17f0 100644 --- a/src/components/layout/BottomNav/BottomNav.css +++ b/src/components/layout/BottomNav/BottomNav.css @@ -8,6 +8,17 @@ } } +.bottom-nav-label-item { + font-weight: bold; + color: #000; /* Or any color that matches your design */ +} + +/* Implementing a gap for the delay */ +.bottom-nav-gap { + flex: 0 0 10%; /* Adjust width as needed to control the delay */ + height: 1px; /* Minimal height to make it almost invisible */ +} + .bottom-nav { overflow: hidden; /* Prevents content from overflowing */ white-space: nowrap; /* Keeps inline elements in a single line */ @@ -54,3 +65,13 @@ .material-icons { margin-left: 10px; /* Adjust spacing as needed */ } + +.bottom-nav-website { + color: #007bff; /* A noticeable but professional blue */ + font-weight: bold; + cursor: pointer; +} + +.bottom-nav-website:hover { + text-decoration: underline; /* Adds interactivity */ +} diff --git a/src/components/layout/BottomNav/index.js b/src/components/layout/BottomNav/index.js index 6f3b92a..6fd9c97 100644 --- a/src/components/layout/BottomNav/index.js +++ b/src/components/layout/BottomNav/index.js @@ -1,24 +1,42 @@ // BottomNav.js import React from "react"; import "./BottomNav.css"; +import { openLink } from "../../../utils/commonFunctions"; -const BottomNav = ({ navItems, callToActionItems }) => { +const BottomNav = ({ navItems, callToActionItems, websiteItem }) => { const halfwayIndex = Math.ceil(callToActionItems.length / 2); const firstHalfCTAs = callToActionItems.slice(0, halfwayIndex); const secondHalfCTAs = callToActionItems.slice(halfwayIndex); + const featuresLabel = [ + { label: "Features", isLabel: true, icon: "keyboard_arrow_right" }, + ]; + const gap = [{ isGap: true }]; // Representing a delay/gap - const combinedItems = [...firstHalfCTAs, ...navItems, ...secondHalfCTAs]; - const loopItems = [...combinedItems, ...combinedItems]; + const combinedItems = [ + ...firstHalfCTAs, + ...featuresLabel, + ...navItems, + ...secondHalfCTAs, + ...websiteItem, + ...gap, + ]; + + const loopItems = [...combinedItems, ...combinedItems]; // Duplicate for the loop return (
- Continue with Google + Sign in with Google
diff --git a/src/components/modal/UserLoginModal/NewAccountModal/index.js b/src/components/modal/UserLoginModal/NewAccountModal/index.js index 743d416..0565553 100644 --- a/src/components/modal/UserLoginModal/NewAccountModal/index.js +++ b/src/components/modal/UserLoginModal/NewAccountModal/index.js @@ -24,7 +24,7 @@ const NewAccountModal = ({ onClose }) => { }; const handleSignUp = async () => { - const { name, email, phone, password, subscriptionType } = formState; + const { name, email, phone, password } = formState; debugger; try { const user = await signUp({ @@ -99,7 +99,7 @@ const NewAccountModal = ({ onClose }) => { />
- */}