From 3cbd5f6e8c501d0843e9a30133f6783dd1a8b519 Mon Sep 17 00:00:00 2001 From: Kanakanajm Date: Wed, 15 May 2024 13:20:58 +0200 Subject: [PATCH 01/21] :tada: Implement login with selectable realms --- frontend/.env.dev | 2 + frontend/package-lock.json | 9 ++++ frontend/package.json | 1 + frontend/src/App.tsx | 52 ++++++++++--------- frontend/src/components/AuthProvider.tsx | 29 +++++++++++ .../src/components/TopBar/ApplicationMenu.tsx | 36 ++++++++----- .../src/components/TopBar/RealmSelect.tsx | 44 ++++++++++++++++ frontend/src/components/TopBar/index.tsx | 2 + frontend/src/store/RealmSlice.ts | 25 +++++++++ frontend/src/store/index.ts | 2 + 10 files changed, 165 insertions(+), 37 deletions(-) create mode 100644 frontend/src/components/AuthProvider.tsx create mode 100644 frontend/src/components/TopBar/RealmSelect.tsx create mode 100644 frontend/src/store/RealmSlice.ts diff --git a/frontend/.env.dev b/frontend/.env.dev index 764e229f..60331321 100644 --- a/frontend/.env.dev +++ b/frontend/.env.dev @@ -3,3 +3,5 @@ # This is for development only. For production you need to replace this with the actual URL. VITE_API_URL=http://localhost:8000 +VITE_OAUTH_API_URL=https://134.94.199.133:7000 +VITE_OAUTH_CLIENT_ID=loki-front \ No newline at end of file diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 5fb448fc..6b955bcf 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -30,6 +30,7 @@ "react-i18next": "^13.5.0", "react-lazyload": "github:twobin/react-lazyload", "react-markdown": "^9.0.1", + "react-oauth2-code-pkce": "^1.18.0", "react-redux": "^9.0.4", "react-scroll-sync": "^0.11.2", "redux": "^5.0.0", @@ -9806,6 +9807,14 @@ "react": ">=18" } }, + "node_modules/react-oauth2-code-pkce": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/react-oauth2-code-pkce/-/react-oauth2-code-pkce-1.18.0.tgz", + "integrity": "sha512-odhGdt9PxfGvbVmWQHToDHux4rX2iR9Zxtmkr+VnJJNdnWcKvpgc4MEOWtdekZDXk+SORd4pVvsjdpyxNU55Dg==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/react-redux": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index 33fc87af..dd3666b1 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -55,6 +55,7 @@ "react-i18next": "^13.5.0", "react-lazyload": "github:twobin/react-lazyload", "react-markdown": "^9.0.1", + "react-oauth2-code-pkce": "^1.18.0", "react-redux": "^9.0.4", "react-scroll-sync": "^0.11.2", "redux": "^5.0.0", diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index b166b83d..3f29be74 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -19,7 +19,7 @@ import {selectDistrict} from './store/DataSelectionSlice'; import {I18nextProvider, useTranslation} from 'react-i18next'; import i18n from './util/i18n'; import {MUILocalization} from './components/shared/MUILocalization'; - +import AuthProvider from './components/AuthProvider'; /** * This is the root element of the React application. It divides the main screen area into the three main components. * The top bar, the sidebar and the main content area. @@ -28,31 +28,33 @@ export default function App(): JSX.Element { return ( - - - - - - - - - - + + + + + + + + + + + + - - - - - + + + + + ); diff --git a/frontend/src/components/AuthProvider.tsx b/frontend/src/components/AuthProvider.tsx new file mode 100644 index 00000000..14d7556c --- /dev/null +++ b/frontend/src/components/AuthProvider.tsx @@ -0,0 +1,29 @@ +import React from "react"; +import { ReactNode } from "react"; +import { AuthProvider as OAuth2WithPkceProvider, TAuthConfig } from "react-oauth2-code-pkce" +import { useAppSelector } from "store/hooks"; + +interface AuthProviderProps { + children: ReactNode; +} + +function AuthProvider({ children }: AuthProviderProps) { + const realm = useAppSelector((state) => state.realm.name); + + const authConfig: TAuthConfig = { + clientId: import.meta.env.VITE_OAUTH_CLIENT_ID, + authorizationEndpoint: `${import.meta.env.VITE_OAUTH_API_URL}/realms/${realm}/protocol/openid-connect/auth`, + tokenEndpoint: `${import.meta.env.VITE_OAUTH_API_URL}/realms/${realm}/protocol/openid-connect/token`, + redirectUri: window.location.origin, // always redirect to root + scope: 'openid profile email', // default scope without audience + autoLogin: false + } + + return ( + + { children } + + ) +} + +export default AuthProvider; \ No newline at end of file diff --git a/frontend/src/components/TopBar/ApplicationMenu.tsx b/frontend/src/components/TopBar/ApplicationMenu.tsx index e5a29af6..1d328e9a 100644 --- a/frontend/src/components/TopBar/ApplicationMenu.tsx +++ b/frontend/src/components/TopBar/ApplicationMenu.tsx @@ -1,17 +1,17 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import React, {MouseEvent} from 'react'; +import React, {MouseEvent, useContext} from 'react'; import MenuIcon from '@mui/icons-material/Menu'; import {useTranslation} from 'react-i18next'; -import Alert from '@mui/material/Alert'; import Button from '@mui/material/Button'; import Dialog from '@mui/material/Dialog'; import Divider from '@mui/material/Divider'; import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; -import Snackbar from '@mui/material/Snackbar'; import Box from '@mui/system/Box'; +import { useAppSelector } from 'store/hooks'; +import { AuthContext, IAuthContext } from 'react-oauth2-code-pkce'; // Let's import pop-ups only once they are opened. const ChangelogDialog = React.lazy(() => import('./PopUps/ChangelogDialog')); @@ -27,14 +27,22 @@ const AttributionDialog = React.lazy(() => import('./PopUps/AttributionDialog')) export default function ApplicationMenu(): JSX.Element { const {t} = useTranslation(); + const realm = useAppSelector((state) => state.realm.name); + const { login, token, logOut } = useContext(AuthContext) + + // user cannot login when realm is not selected + const loginDisabled = realm === ""; + // user is authenticated when token is not empty + const isAuthenticated = token !== ""; + const [anchorElement, setAnchorElement] = React.useState(null); const [imprintOpen, setImprintOpen] = React.useState(false); const [privacyPolicyOpen, setPrivacyPolicyOpen] = React.useState(false); const [accessibilityOpen, setAccessibilityOpen] = React.useState(false); const [attributionsOpen, setAttributionsOpen] = React.useState(false); const [changelogOpen, setChangelogOpen] = React.useState(false); - const [snackbarOpen, setSnackbarOpen] = React.useState(false); + /** Calling this method opens the application menu. */ const openMenu = (event: MouseEvent) => { setAnchorElement(event.currentTarget); @@ -48,9 +56,15 @@ export default function ApplicationMenu(): JSX.Element { /** This method gets called, when the login menu entry was clicked. */ const loginClicked = () => { closeMenu(); - setSnackbarOpen(true); + login(); }; + /** This method gets called, when the logout menu entry was clicked. */ + const logoutClicked = () => { + closeMenu(); + logOut(); + } + /** This method gets called, when the imprint menu entry was clicked. It opens a dialog showing the legal text. */ const imprintClicked = () => { closeMenu(); @@ -93,7 +107,11 @@ export default function ApplicationMenu(): JSX.Element { - {t('topBar.menu.login')} + { + isAuthenticated ? + Logout : + {t('topBar.menu.login')} + } {t('topBar.menu.imprint')} {t('topBar.menu.privacy-policy')} @@ -121,12 +139,6 @@ export default function ApplicationMenu(): JSX.Element { setChangelogOpen(false)}> - - setSnackbarOpen(false)}> - setSnackbarOpen(false)} severity='info'> - {t('WIP')} - - ); } diff --git a/frontend/src/components/TopBar/RealmSelect.tsx b/frontend/src/components/TopBar/RealmSelect.tsx new file mode 100644 index 00000000..8c6cdc05 --- /dev/null +++ b/frontend/src/components/TopBar/RealmSelect.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import { + FormControl, + InputLabel, + Select, + OutlinedInput, + MenuItem, +} from "@mui/material"; +import { useAppDispatch, useAppSelector } from 'store/hooks'; +import { setRealm } from 'store/RealmSlice'; + +function RealmSelect() { + const realm = useAppSelector((state) => state.realm.name); + const dispatch = useAppDispatch() + + // realms are hardcoded for now + // should be fetched from keycloak + const realms = [ + "lha-a", + "lha-b", + "lha-c" + ]; + + return ( + + Realm + + + + ) +} + +export default RealmSelect; \ No newline at end of file diff --git a/frontend/src/components/TopBar/index.tsx b/frontend/src/components/TopBar/index.tsx index d8ef3615..a3dfcabc 100644 --- a/frontend/src/components/TopBar/index.tsx +++ b/frontend/src/components/TopBar/index.tsx @@ -7,6 +7,7 @@ import {useTranslation} from 'react-i18next'; import ApplicationMenu from './ApplicationMenu'; import Box from '@mui/material/Box'; import LanguagePicker from './LanguagePicker'; +import RealmSelect from './RealmSelect'; import esidLogo from '../../../assets/logo/logo-200x66.svg'; /** @@ -43,6 +44,7 @@ export default function TopBar(): JSX.Element { + ); diff --git a/frontend/src/store/RealmSlice.ts b/frontend/src/store/RealmSlice.ts new file mode 100644 index 00000000..d583c598 --- /dev/null +++ b/frontend/src/store/RealmSlice.ts @@ -0,0 +1,25 @@ +import {createSlice, PayloadAction} from '@reduxjs/toolkit'; + +export interface Realm { + name: string +} + +const initialState: Realm = { + name: localStorage.getItem("realm") || "" +} + +export const RealmSlice = createSlice({ + name: "Realm", + initialState, + reducers: { + setRealm(state, action: PayloadAction) { + // store realm in local storage + // redirects start new the browser sessions i.e. store state will be reset + localStorage.setItem("realm", action.payload) + state.name = action.payload; + } + }, +}); + +export const {setRealm} = RealmSlice.actions; +export default RealmSlice.reducer; \ No newline at end of file diff --git a/frontend/src/store/index.ts b/frontend/src/store/index.ts index 729b48fb..f06dc5dc 100644 --- a/frontend/src/store/index.ts +++ b/frontend/src/store/index.ts @@ -11,6 +11,7 @@ import {persistReducer, persistStore} from 'redux-persist'; import storage from 'redux-persist/lib/storage'; import {groupApi} from './services/groupApi'; import LayoutReducer from './LayoutSlice'; +import RealmReducer from './RealmSlice'; const persistConfig = { key: 'root', @@ -23,6 +24,7 @@ const rootReducer = combineReducers({ scenarioList: ScenarioReducer, userPreference: UserPreferenceReducer, layoutSlice: LayoutReducer, + realm: RealmReducer, [caseDataApi.reducerPath]: caseDataApi.reducer, [scenarioApi.reducerPath]: scenarioApi.reducer, [groupApi.reducerPath]: groupApi.reducer, From 3e2702be3f1e4ffd68cf5e07e2a6a330a0b2b086 Mon Sep 17 00:00:00 2001 From: Kanakanajm Date: Wed, 15 May 2024 13:29:23 +0200 Subject: [PATCH 02/21] :sparkles: Format --- frontend/src/components/AuthProvider.tsx | 41 ++++++------ .../src/components/TopBar/ApplicationMenu.tsx | 25 ++++---- .../src/components/TopBar/RealmSelect.tsx | 64 ++++++++----------- frontend/src/store/RealmSlice.ts | 14 ++-- 4 files changed, 66 insertions(+), 78 deletions(-) diff --git a/frontend/src/components/AuthProvider.tsx b/frontend/src/components/AuthProvider.tsx index 14d7556c..356c28c2 100644 --- a/frontend/src/components/AuthProvider.tsx +++ b/frontend/src/components/AuthProvider.tsx @@ -1,29 +1,26 @@ -import React from "react"; -import { ReactNode } from "react"; -import { AuthProvider as OAuth2WithPkceProvider, TAuthConfig } from "react-oauth2-code-pkce" -import { useAppSelector } from "store/hooks"; +import React from 'react'; +import {ReactNode} from 'react'; +import {AuthProvider as OAuth2WithPkceProvider, TAuthConfig} from 'react-oauth2-code-pkce'; +import {useAppSelector} from 'store/hooks'; interface AuthProviderProps { - children: ReactNode; + children: ReactNode; } -function AuthProvider({ children }: AuthProviderProps) { - const realm = useAppSelector((state) => state.realm.name); - - const authConfig: TAuthConfig = { - clientId: import.meta.env.VITE_OAUTH_CLIENT_ID, - authorizationEndpoint: `${import.meta.env.VITE_OAUTH_API_URL}/realms/${realm}/protocol/openid-connect/auth`, - tokenEndpoint: `${import.meta.env.VITE_OAUTH_API_URL}/realms/${realm}/protocol/openid-connect/token`, - redirectUri: window.location.origin, // always redirect to root - scope: 'openid profile email', // default scope without audience - autoLogin: false - } - - return ( - - { children } - - ) +function AuthProvider({children}: AuthProviderProps) { + const realm = useAppSelector((state) => state.realm.name); + + const authConfig: TAuthConfig = { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + clientId: import.meta.env.VITE_OAUTH_CLIENT_ID, + authorizationEndpoint: `${import.meta.env.VITE_OAUTH_API_URL}/realms/${realm}/protocol/openid-connect/auth`, + tokenEndpoint: `${import.meta.env.VITE_OAUTH_API_URL}/realms/${realm}/protocol/openid-connect/token`, + redirectUri: window.location.origin, // always redirect to root + scope: 'openid profile email', // default scope without audience + autoLogin: false, + }; + + return {children}; } export default AuthProvider; \ No newline at end of file diff --git a/frontend/src/components/TopBar/ApplicationMenu.tsx b/frontend/src/components/TopBar/ApplicationMenu.tsx index 1d328e9a..f1d19c7d 100644 --- a/frontend/src/components/TopBar/ApplicationMenu.tsx +++ b/frontend/src/components/TopBar/ApplicationMenu.tsx @@ -10,8 +10,8 @@ import Divider from '@mui/material/Divider'; import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; import Box from '@mui/system/Box'; -import { useAppSelector } from 'store/hooks'; -import { AuthContext, IAuthContext } from 'react-oauth2-code-pkce'; +import {useAppSelector} from 'store/hooks'; +import {AuthContext, IAuthContext} from 'react-oauth2-code-pkce'; // Let's import pop-ups only once they are opened. const ChangelogDialog = React.lazy(() => import('./PopUps/ChangelogDialog')); @@ -28,12 +28,12 @@ export default function ApplicationMenu(): JSX.Element { const {t} = useTranslation(); const realm = useAppSelector((state) => state.realm.name); - const { login, token, logOut } = useContext(AuthContext) + const {login, token, logOut} = useContext(AuthContext); // user cannot login when realm is not selected - const loginDisabled = realm === ""; + const loginDisabled = realm === ''; // user is authenticated when token is not empty - const isAuthenticated = token !== ""; + const isAuthenticated = token !== ''; const [anchorElement, setAnchorElement] = React.useState(null); const [imprintOpen, setImprintOpen] = React.useState(false); @@ -42,7 +42,6 @@ export default function ApplicationMenu(): JSX.Element { const [attributionsOpen, setAttributionsOpen] = React.useState(false); const [changelogOpen, setChangelogOpen] = React.useState(false); - /** Calling this method opens the application menu. */ const openMenu = (event: MouseEvent) => { setAnchorElement(event.currentTarget); @@ -63,7 +62,7 @@ export default function ApplicationMenu(): JSX.Element { const logoutClicked = () => { closeMenu(); logOut(); - } + }; /** This method gets called, when the imprint menu entry was clicked. It opens a dialog showing the legal text. */ const imprintClicked = () => { @@ -107,11 +106,13 @@ export default function ApplicationMenu(): JSX.Element { - { - isAuthenticated ? - Logout : - {t('topBar.menu.login')} - } + {isAuthenticated ? ( + Logout + ) : ( + + {t('topBar.menu.login')} + + )} {t('topBar.menu.imprint')} {t('topBar.menu.privacy-policy')} diff --git a/frontend/src/components/TopBar/RealmSelect.tsx b/frontend/src/components/TopBar/RealmSelect.tsx index 8c6cdc05..58434f1d 100644 --- a/frontend/src/components/TopBar/RealmSelect.tsx +++ b/frontend/src/components/TopBar/RealmSelect.tsx @@ -1,44 +1,34 @@ import React from 'react'; -import { - FormControl, - InputLabel, - Select, - OutlinedInput, - MenuItem, -} from "@mui/material"; -import { useAppDispatch, useAppSelector } from 'store/hooks'; -import { setRealm } from 'store/RealmSlice'; +import {FormControl, InputLabel, Select, OutlinedInput, MenuItem} from '@mui/material'; +import {useAppDispatch, useAppSelector} from 'store/hooks'; +import {setRealm} from 'store/RealmSlice'; function RealmSelect() { - const realm = useAppSelector((state) => state.realm.name); - const dispatch = useAppDispatch() + const realm = useAppSelector((state) => state.realm.name); + const dispatch = useAppDispatch(); - // realms are hardcoded for now - // should be fetched from keycloak - const realms = [ - "lha-a", - "lha-b", - "lha-c" - ]; + // realms are hardcoded for now + // should be fetched from keycloak + const realms = ['lha-a', 'lha-b', 'lha-c']; - return ( - - Realm - - - - ) + return ( + + Realm + + + ); } -export default RealmSelect; \ No newline at end of file +export default RealmSelect; diff --git a/frontend/src/store/RealmSlice.ts b/frontend/src/store/RealmSlice.ts index d583c598..6694e2a3 100644 --- a/frontend/src/store/RealmSlice.ts +++ b/frontend/src/store/RealmSlice.ts @@ -1,25 +1,25 @@ import {createSlice, PayloadAction} from '@reduxjs/toolkit'; export interface Realm { - name: string + name: string; } const initialState: Realm = { - name: localStorage.getItem("realm") || "" -} + name: localStorage.getItem('realm') || '', +}; export const RealmSlice = createSlice({ - name: "Realm", + name: 'Realm', initialState, reducers: { setRealm(state, action: PayloadAction) { // store realm in local storage // redirects start new the browser sessions i.e. store state will be reset - localStorage.setItem("realm", action.payload) + localStorage.setItem('realm', action.payload); state.name = action.payload; - } + }, }, }); export const {setRealm} = RealmSlice.actions; -export default RealmSlice.reducer; \ No newline at end of file +export default RealmSlice.reducer; From 1220e91578c97f9f0cb3cc3a2f08e6674ff95a44 Mon Sep 17 00:00:00 2001 From: Kanakanajm Date: Sat, 1 Jun 2024 16:16:45 +0200 Subject: [PATCH 03/21] :wrench: Try fix format --- frontend/.env.dev | 11 +++++++++-- frontend/src/components/AuthProvider.tsx | 12 +++++++----- frontend/src/components/TopBar/RealmSelect.tsx | 15 +++++++++++---- frontend/src/store/RealmSlice.ts | 3 +++ 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/frontend/.env.dev b/frontend/.env.dev index 60331321..78f74079 100644 --- a/frontend/.env.dev +++ b/frontend/.env.dev @@ -3,5 +3,12 @@ # This is for development only. For production you need to replace this with the actual URL. VITE_API_URL=http://localhost:8000 -VITE_OAUTH_API_URL=https://134.94.199.133:7000 -VITE_OAUTH_CLIENT_ID=loki-front \ No newline at end of file + +# IDP Settings + +# IDP URL +VITE_OAUTH_API_URL=https://lokiam.de:7000 + +# IDP Client ID +# Dev only, change me for staging and production +VITE_OAUTH_CLIENT_ID=loki-front-dev \ No newline at end of file diff --git a/frontend/src/components/AuthProvider.tsx b/frontend/src/components/AuthProvider.tsx index 356c28c2..338a91b4 100644 --- a/frontend/src/components/AuthProvider.tsx +++ b/frontend/src/components/AuthProvider.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) and CISPA Helmholtz Center for Information Security +// SPDX-License-Identifier: Apache-2.0 + import React from 'react'; import {ReactNode} from 'react'; import {AuthProvider as OAuth2WithPkceProvider, TAuthConfig} from 'react-oauth2-code-pkce'; @@ -11,10 +14,9 @@ function AuthProvider({children}: AuthProviderProps) { const realm = useAppSelector((state) => state.realm.name); const authConfig: TAuthConfig = { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - clientId: import.meta.env.VITE_OAUTH_CLIENT_ID, - authorizationEndpoint: `${import.meta.env.VITE_OAUTH_API_URL}/realms/${realm}/protocol/openid-connect/auth`, - tokenEndpoint: `${import.meta.env.VITE_OAUTH_API_URL}/realms/${realm}/protocol/openid-connect/token`, + clientId: `${import.meta.env.VITE_OAUTH_CLIENT_ID || ''}`, + authorizationEndpoint: `${import.meta.env.VITE_OAUTH_API_URL || ''}/realms/${realm}/protocol/openid-connect/auth`, + tokenEndpoint: `${import.meta.env.VITE_OAUTH_API_URL || ''}/realms/${realm}/protocol/openid-connect/token`, redirectUri: window.location.origin, // always redirect to root scope: 'openid profile email', // default scope without audience autoLogin: false, @@ -23,4 +25,4 @@ function AuthProvider({children}: AuthProviderProps) { return {children}; } -export default AuthProvider; \ No newline at end of file +export default AuthProvider; diff --git a/frontend/src/components/TopBar/RealmSelect.tsx b/frontend/src/components/TopBar/RealmSelect.tsx index 58434f1d..2e8d34e6 100644 --- a/frontend/src/components/TopBar/RealmSelect.tsx +++ b/frontend/src/components/TopBar/RealmSelect.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) and CISPA Helmholtz Center for Information Security +// SPDX-License-Identifier: Apache-2.0 + import React from 'react'; import {FormControl, InputLabel, Select, OutlinedInput, MenuItem} from '@mui/material'; import {useAppDispatch, useAppSelector} from 'store/hooks'; @@ -8,8 +11,12 @@ function RealmSelect() { const dispatch = useAppDispatch(); // realms are hardcoded for now - // should be fetched from keycloak - const realms = ['lha-a', 'lha-b', 'lha-c']; + // TODO: should be fetched from keycloak + const realms = [ + {id: 'lha-a', name: 'LHA A', disabled: false}, + {id: 'lha-b', name: 'LHA B', disabled: true}, + {id: 'lha-c', name: 'LHA C', disabled: true}, + ]; return ( @@ -22,8 +29,8 @@ function RealmSelect() { input={} > {realms.map((realm) => ( - - {realm} + + {realm.name} ))} diff --git a/frontend/src/store/RealmSlice.ts b/frontend/src/store/RealmSlice.ts index 6694e2a3..ba3b9982 100644 --- a/frontend/src/store/RealmSlice.ts +++ b/frontend/src/store/RealmSlice.ts @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) and CISPA Helmholtz Center for Information Security +// SPDX-License-Identifier: Apache-2.0 + import {createSlice, PayloadAction} from '@reduxjs/toolkit'; export interface Realm { From 4f86bda14ac989f6b73f7488c131e90c8e10e6d6 Mon Sep 17 00:00:00 2001 From: Jackie Date: Fri, 14 Jun 2024 11:12:05 +0200 Subject: [PATCH 04/21] :wrench: Fix provider and store missing test errors in TopBar related components --- .../TopBar/ApplicationMenu.test.tsx | 7 ++-- .../PopUps/AccessibilityDialog.test.tsx | 7 ++-- .../TopBar/PopUps/AttributionDialog.test.tsx | 7 ++-- .../TopBar/PopUps/ImprintDialog.test.tsx | 7 ++-- .../PopUps/PrivacyPolicyDialog.test.tsx | 7 ++-- .../components/TopBar/TopBar.test.tsx | 6 +++- frontend/src/components/AuthProvider.tsx | 32 ++++++++++++++----- 7 files changed, 54 insertions(+), 19 deletions(-) diff --git a/frontend/src/__tests__/components/TopBar/ApplicationMenu.test.tsx b/frontend/src/__tests__/components/TopBar/ApplicationMenu.test.tsx index 2ed732df..c2ec93fc 100644 --- a/frontend/src/__tests__/components/TopBar/ApplicationMenu.test.tsx +++ b/frontend/src/__tests__/components/TopBar/ApplicationMenu.test.tsx @@ -10,12 +10,15 @@ import i18n from '../../../util/i18nForTests'; import {I18nextProvider} from 'react-i18next'; import ApplicationMenu from '../../../components/TopBar/ApplicationMenu'; - +import {Provider} from 'react-redux'; +import {Store} from '../../../store'; describe('TopBarMenu', () => { test('open', async () => { render( - + + + ); const menu = screen.getByLabelText('topBar.menu.label'); diff --git a/frontend/src/__tests__/components/TopBar/PopUps/AccessibilityDialog.test.tsx b/frontend/src/__tests__/components/TopBar/PopUps/AccessibilityDialog.test.tsx index 95d66b53..a8b87125 100644 --- a/frontend/src/__tests__/components/TopBar/PopUps/AccessibilityDialog.test.tsx +++ b/frontend/src/__tests__/components/TopBar/PopUps/AccessibilityDialog.test.tsx @@ -9,13 +9,16 @@ import userEvent from '@testing-library/user-event'; import i18n from '../../../../util/i18nForTests'; import {I18nextProvider} from 'react-i18next'; import ApplicationMenu from '../../../../components/TopBar/ApplicationMenu'; - +import {Provider} from 'react-redux'; +import {Store} from '../../../../store'; describe('AccessibilityDialog', () => { test('PopUp', async () => { render( - + + + ); diff --git a/frontend/src/__tests__/components/TopBar/PopUps/AttributionDialog.test.tsx b/frontend/src/__tests__/components/TopBar/PopUps/AttributionDialog.test.tsx index 7fe2e93a..30db2fc0 100644 --- a/frontend/src/__tests__/components/TopBar/PopUps/AttributionDialog.test.tsx +++ b/frontend/src/__tests__/components/TopBar/PopUps/AttributionDialog.test.tsx @@ -11,7 +11,8 @@ import i18n from '../../../../util/i18nForTests'; import {I18nextProvider} from 'react-i18next'; import {forceVisible} from 'react-lazyload'; import ApplicationMenu from '../../../../components/TopBar/ApplicationMenu'; - +import {Provider} from 'react-redux'; +import {Store} from '../../../../store'; describe('AttributionDialog', () => { test('PopUp', async () => { // We mock fetch to return two entries for attributions. @@ -45,7 +46,9 @@ describe('AttributionDialog', () => { render( - + + + ); diff --git a/frontend/src/__tests__/components/TopBar/PopUps/ImprintDialog.test.tsx b/frontend/src/__tests__/components/TopBar/PopUps/ImprintDialog.test.tsx index 8aba5d62..10b817c4 100644 --- a/frontend/src/__tests__/components/TopBar/PopUps/ImprintDialog.test.tsx +++ b/frontend/src/__tests__/components/TopBar/PopUps/ImprintDialog.test.tsx @@ -10,13 +10,16 @@ import i18n from '../../../../util/i18nForTests'; import {I18nextProvider} from 'react-i18next'; import ApplicationMenu from '../../../../components/TopBar/ApplicationMenu'; - +import {Provider} from 'react-redux'; +import {Store} from '../../../../store'; describe('ImprintDialog', () => { test('PopUp', async () => { render( - + + + ); diff --git a/frontend/src/__tests__/components/TopBar/PopUps/PrivacyPolicyDialog.test.tsx b/frontend/src/__tests__/components/TopBar/PopUps/PrivacyPolicyDialog.test.tsx index 76cbedb5..9a4ece22 100644 --- a/frontend/src/__tests__/components/TopBar/PopUps/PrivacyPolicyDialog.test.tsx +++ b/frontend/src/__tests__/components/TopBar/PopUps/PrivacyPolicyDialog.test.tsx @@ -9,13 +9,16 @@ import userEvent from '@testing-library/user-event'; import i18n from '../../../../util/i18nForTests'; import {I18nextProvider} from 'react-i18next'; import ApplicationMenu from '../../../../components/TopBar/ApplicationMenu'; - +import {Provider} from 'react-redux'; +import {Store} from '../../../../store'; describe('PrivacyPolicyDialog', () => { test('PopUp', async () => { render( - + + + ); diff --git a/frontend/src/__tests__/components/TopBar/TopBar.test.tsx b/frontend/src/__tests__/components/TopBar/TopBar.test.tsx index 00c1cd04..92eca80b 100644 --- a/frontend/src/__tests__/components/TopBar/TopBar.test.tsx +++ b/frontend/src/__tests__/components/TopBar/TopBar.test.tsx @@ -9,12 +9,16 @@ import i18n from '../../../util/i18nForTests'; import TopBar from '../../../components/TopBar'; import {I18nextProvider} from 'react-i18next'; +import {Provider} from 'react-redux'; +import {Store} from '../../../store'; describe('TopBar', () => { test('icon', () => { render( - + + + ); screen.getByAltText('topBar.icon-alt'); diff --git a/frontend/src/components/AuthProvider.tsx b/frontend/src/components/AuthProvider.tsx index 338a91b4..95144fe9 100644 --- a/frontend/src/components/AuthProvider.tsx +++ b/frontend/src/components/AuthProvider.tsx @@ -12,15 +12,31 @@ interface AuthProviderProps { function AuthProvider({children}: AuthProviderProps) { const realm = useAppSelector((state) => state.realm.name); + let authConfig: TAuthConfig; - const authConfig: TAuthConfig = { - clientId: `${import.meta.env.VITE_OAUTH_CLIENT_ID || ''}`, - authorizationEndpoint: `${import.meta.env.VITE_OAUTH_API_URL || ''}/realms/${realm}/protocol/openid-connect/auth`, - tokenEndpoint: `${import.meta.env.VITE_OAUTH_API_URL || ''}/realms/${realm}/protocol/openid-connect/token`, - redirectUri: window.location.origin, // always redirect to root - scope: 'openid profile email', // default scope without audience - autoLogin: false, - }; + if (!import.meta.env.VITE_OAUTH_CLIENT_ID || !import.meta.env.VITE_OAUTH_API_URL) { + // in case required auth env vars are not set + console.warn( + 'Missing environment variables: VITE_OAUTH_CLIENT_ID or VITE_OAUTH_API_URL. Please set it to enable authentication.' + ); + authConfig = { + clientId: 'client-placeholder', + authorizationEndpoint: 'auth-endpoint-placeholder', + tokenEndpoint: 'token-endpoint-placeholder', + redirectUri: window.location.origin, + autoLogin: false, + }; + } else { + // actual auth configurations + authConfig = { + clientId: `${import.meta.env.VITE_OAUTH_CLIENT_ID}`, + authorizationEndpoint: `${import.meta.env.VITE_OAUTH_API_URL}/realms/${realm}/protocol/openid-connect/auth`, + tokenEndpoint: `${import.meta.env.VITE_OAUTH_API_URL}/realms/${realm}/protocol/openid-connect/token`, + redirectUri: window.location.origin, // always redirect to root + scope: 'openid profile email', // default scope without audience + autoLogin: false, + }; + } return {children}; } From bbb6d9ddd248eb5c299191b2a41c07f90cabb25c Mon Sep 17 00:00:00 2001 From: Jackie Date: Mon, 24 Jun 2024 10:44:25 +0200 Subject: [PATCH 05/21] :wrench: Update default IDP port --- frontend/.env.dev | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/.env.dev b/frontend/.env.dev index 78f74079..ab32463b 100644 --- a/frontend/.env.dev +++ b/frontend/.env.dev @@ -7,7 +7,7 @@ VITE_API_URL=http://localhost:8000 # IDP Settings # IDP URL -VITE_OAUTH_API_URL=https://lokiam.de:7000 +VITE_OAUTH_API_URL=https://lokiam.de # IDP Client ID # Dev only, change me for staging and production From c194ffd586762e477abb9c307ee73c1512812b4a Mon Sep 17 00:00:00 2001 From: Jackie Date: Tue, 25 Jun 2024 17:44:30 +0200 Subject: [PATCH 06/21] Update frontend/src/components/AuthProvider.tsx Co-authored-by: Jonas Gilg --- frontend/src/components/AuthProvider.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/AuthProvider.tsx b/frontend/src/components/AuthProvider.tsx index 95144fe9..132d7be6 100644 --- a/frontend/src/components/AuthProvider.tsx +++ b/frontend/src/components/AuthProvider.tsx @@ -23,7 +23,7 @@ function AuthProvider({children}: AuthProviderProps) { clientId: 'client-placeholder', authorizationEndpoint: 'auth-endpoint-placeholder', tokenEndpoint: 'token-endpoint-placeholder', - redirectUri: window.location.origin, + redirectUri: window.location.href, autoLogin: false, }; } else { From 4bff11151d6339a8b908513fc1ab20efa9c3f8a9 Mon Sep 17 00:00:00 2001 From: Jackie Date: Tue, 25 Jun 2024 17:44:40 +0200 Subject: [PATCH 07/21] Update frontend/src/components/AuthProvider.tsx Co-authored-by: Jonas Gilg --- frontend/src/components/AuthProvider.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/AuthProvider.tsx b/frontend/src/components/AuthProvider.tsx index 132d7be6..00cc6b99 100644 --- a/frontend/src/components/AuthProvider.tsx +++ b/frontend/src/components/AuthProvider.tsx @@ -32,7 +32,7 @@ function AuthProvider({children}: AuthProviderProps) { clientId: `${import.meta.env.VITE_OAUTH_CLIENT_ID}`, authorizationEndpoint: `${import.meta.env.VITE_OAUTH_API_URL}/realms/${realm}/protocol/openid-connect/auth`, tokenEndpoint: `${import.meta.env.VITE_OAUTH_API_URL}/realms/${realm}/protocol/openid-connect/token`, - redirectUri: window.location.origin, // always redirect to root + redirectUri: window.location.href, scope: 'openid profile email', // default scope without audience autoLogin: false, }; From 4af0870c1b264095126cf46d674b6019a0b830c1 Mon Sep 17 00:00:00 2001 From: Jackie Date: Tue, 25 Jun 2024 17:45:09 +0200 Subject: [PATCH 08/21] Update frontend/src/components/TopBar/RealmSelect.tsx Co-authored-by: Jonas Gilg --- frontend/src/components/TopBar/RealmSelect.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/TopBar/RealmSelect.tsx b/frontend/src/components/TopBar/RealmSelect.tsx index 2e8d34e6..a18d1061 100644 --- a/frontend/src/components/TopBar/RealmSelect.tsx +++ b/frontend/src/components/TopBar/RealmSelect.tsx @@ -2,7 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 import React from 'react'; -import {FormControl, InputLabel, Select, OutlinedInput, MenuItem} from '@mui/material'; +import FormControl from '@mui/material/FormControl'; +import InputLabel from '@mui/material/InputLabel'; +import Select from '@mui/material/Select'; +import OutlinedInput from '@mui/material/OutlinedInput'; +import MenuItem from '@mui/material/MenuItem'; import {useAppDispatch, useAppSelector} from 'store/hooks'; import {setRealm} from 'store/RealmSlice'; From 4517da6e1f3d0a4a322d6760c2497bf7775d650c Mon Sep 17 00:00:00 2001 From: Jackie Date: Tue, 25 Jun 2024 18:29:46 +0200 Subject: [PATCH 09/21] :wrench: Add locales for realm select and logout --- frontend/locales/de-global.json5 | 2 ++ frontend/locales/en-global.json5 | 2 ++ frontend/src/components/TopBar/ApplicationMenu.tsx | 2 +- frontend/src/components/TopBar/RealmSelect.tsx | 5 ++++- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/frontend/locales/de-global.json5 b/frontend/locales/de-global.json5 index 1785524c..96962d8c 100644 --- a/frontend/locales/de-global.json5 +++ b/frontend/locales/de-global.json5 @@ -7,9 +7,11 @@ topBar: { 'icon-alt': 'ESID Anwendungslogo', language: 'Sprache', + org: 'Organisation', menu: { label: 'Anwendungsmenü', login: 'Anmelden', + logout: 'Abmelden', imprint: 'Impressum', 'privacy-policy': 'Datenschutzerklärung', accessibility: 'Barrierefreiheit', diff --git a/frontend/locales/en-global.json5 b/frontend/locales/en-global.json5 index a61d0caf..0184c8a0 100644 --- a/frontend/locales/en-global.json5 +++ b/frontend/locales/en-global.json5 @@ -7,9 +7,11 @@ topBar: { 'icon-alt': 'ESID application logo', language: 'Language', + org: 'Organization', menu: { label: 'Application menu', login: 'Login', + logout: 'Logout', imprint: 'Imprint', 'privacy-policy': 'Privacy Policy', accessibility: 'Accessibility', diff --git a/frontend/src/components/TopBar/ApplicationMenu.tsx b/frontend/src/components/TopBar/ApplicationMenu.tsx index f1d19c7d..4e76da0a 100644 --- a/frontend/src/components/TopBar/ApplicationMenu.tsx +++ b/frontend/src/components/TopBar/ApplicationMenu.tsx @@ -107,7 +107,7 @@ export default function ApplicationMenu(): JSX.Element { {isAuthenticated ? ( - Logout + {t('topBar.menu.logout')} ) : ( {t('topBar.menu.login')} diff --git a/frontend/src/components/TopBar/RealmSelect.tsx b/frontend/src/components/TopBar/RealmSelect.tsx index a18d1061..94be034e 100644 --- a/frontend/src/components/TopBar/RealmSelect.tsx +++ b/frontend/src/components/TopBar/RealmSelect.tsx @@ -9,8 +9,11 @@ import OutlinedInput from '@mui/material/OutlinedInput'; import MenuItem from '@mui/material/MenuItem'; import {useAppDispatch, useAppSelector} from 'store/hooks'; import {setRealm} from 'store/RealmSlice'; +import {useTranslation} from 'react-i18next'; function RealmSelect() { + const {t} = useTranslation(); + const realm = useAppSelector((state) => state.realm.name); const dispatch = useAppDispatch(); @@ -24,7 +27,7 @@ function RealmSelect() { return ( - Realm + {t('topBar.org')} dispatch(setRealm(event.target.value))} - input={} - > - {realms.map((realm) => ( - - {realm.name} - - ))} - - + + + {t('topBar.org')} + + + ); } From 4074d4f38cfdde4ed1505cc2a1ebc68db114509c Mon Sep 17 00:00:00 2001 From: Jackie Date: Tue, 2 Jul 2024 11:27:59 +0200 Subject: [PATCH 13/21] Update frontend/src/store/RealmSlice.ts Remove realm select manual localStorage persist Co-authored-by: Jonas Gilg --- frontend/src/store/RealmSlice.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/frontend/src/store/RealmSlice.ts b/frontend/src/store/RealmSlice.ts index ba3b9982..6a52852c 100644 --- a/frontend/src/store/RealmSlice.ts +++ b/frontend/src/store/RealmSlice.ts @@ -8,7 +8,7 @@ export interface Realm { } const initialState: Realm = { - name: localStorage.getItem('realm') || '', + name: '', }; export const RealmSlice = createSlice({ @@ -16,9 +16,6 @@ export const RealmSlice = createSlice({ initialState, reducers: { setRealm(state, action: PayloadAction) { - // store realm in local storage - // redirects start new the browser sessions i.e. store state will be reset - localStorage.setItem('realm', action.payload); state.name = action.payload; }, }, From 2477dcb8e47d51dbaaf5a74ec1506ba07d4a9698 Mon Sep 17 00:00:00 2001 From: Jackie Date: Tue, 2 Jul 2024 15:15:52 +0200 Subject: [PATCH 14/21] :wrench: Add fixed redirect url --- frontend/.env.dev | 8 ++++++-- frontend/src/components/AuthProvider.tsx | 7 +++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/frontend/.env.dev b/frontend/.env.dev index ab32463b..15fed202 100644 --- a/frontend/.env.dev +++ b/frontend/.env.dev @@ -10,5 +10,9 @@ VITE_API_URL=http://localhost:8000 VITE_OAUTH_API_URL=https://lokiam.de # IDP Client ID -# Dev only, change me for staging and production -VITE_OAUTH_CLIENT_ID=loki-front-dev \ No newline at end of file +# Dev only, change me for staging or production +VITE_OAUTH_CLIENT_ID=loki-front-dev + +# IDP Redirect URL +# Dev only, change me for staging or production +VITE_OAUTH_REDIRECT_URL=http://localhost:5443 \ No newline at end of file diff --git a/frontend/src/components/AuthProvider.tsx b/frontend/src/components/AuthProvider.tsx index 7d560c67..a5b5ea3c 100644 --- a/frontend/src/components/AuthProvider.tsx +++ b/frontend/src/components/AuthProvider.tsx @@ -23,7 +23,7 @@ function AuthProvider({children}: AuthProviderProps) { clientId: 'client-placeholder', authorizationEndpoint: 'auth-endpoint-placeholder', tokenEndpoint: 'token-endpoint-placeholder', - redirectUri: window.location.origin, + redirectUri: 'redirect-uri-placeholder', autoLogin: false, }; } else { @@ -32,7 +32,10 @@ function AuthProvider({children}: AuthProviderProps) { clientId: `${import.meta.env.VITE_OAUTH_CLIENT_ID}`, authorizationEndpoint: `${import.meta.env.VITE_OAUTH_API_URL}/realms/${realm}/protocol/openid-connect/auth`, tokenEndpoint: `${import.meta.env.VITE_OAUTH_API_URL}/realms/${realm}/protocol/openid-connect/token`, - redirectUri: window.location.origin, + redirectUri: + import.meta.env.VITE_OAUTH_REDIRECT_URL === undefined + ? window.location.origin + : `${import.meta.env.VITE_OAUTH_REDIRECT_URL}`, scope: 'openid profile email', // default scope without audience autoLogin: false, }; From 0cdddde4353a0298d3f6dfa2c1d8898ab5332014 Mon Sep 17 00:00:00 2001 From: Moritz Zeumer <25636783+NXXR@users.noreply.github.com> Date: Mon, 22 Jul 2024 09:34:30 +0200 Subject: [PATCH 15/21] Restructure issue templates (#371) --- .../{BUG-REPORT.yml => 1-report.yml} | 30 ++++------- .github/ISSUE_TEMPLATE/2-epic.yml | 50 +++++++++++++++++++ .github/ISSUE_TEMPLATE/EPIC.yml | 38 -------------- .github/ISSUE_TEMPLATE/FEEDBACK-REPORT.yml | 45 ----------------- .github/ISSUE_TEMPLATE/config.yml | 4 ++ 5 files changed, 65 insertions(+), 102 deletions(-) rename .github/ISSUE_TEMPLATE/{BUG-REPORT.yml => 1-report.yml} (54%) create mode 100644 .github/ISSUE_TEMPLATE/2-epic.yml delete mode 100644 .github/ISSUE_TEMPLATE/EPIC.yml delete mode 100644 .github/ISSUE_TEMPLATE/FEEDBACK-REPORT.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml diff --git a/.github/ISSUE_TEMPLATE/BUG-REPORT.yml b/.github/ISSUE_TEMPLATE/1-report.yml similarity index 54% rename from .github/ISSUE_TEMPLATE/BUG-REPORT.yml rename to .github/ISSUE_TEMPLATE/1-report.yml index 5bce91e2..af5c010d 100644 --- a/.github/ISSUE_TEMPLATE/BUG-REPORT.yml +++ b/.github/ISSUE_TEMPLATE/1-report.yml @@ -1,38 +1,30 @@ # SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) # SPDX-License-Identifier: CC0-1.0 -name: Bug Report -description: File a bug report -title: "[Bug]: " -labels: ["class:bug"] +name: Feedback or Bug Report +about: File a report to tell us your thoughts +labels: ["FEEDBACK"] body: - type: markdown attributes: value: | - Thank you for your report! + Thank you for your report/feedback! - type: textarea id: description attributes: label: Description placeholder: | - Provide a clear and concise description of the bug. - If necessary, add screenshots to explain the problem. - Provide steps to reproduce the problem. - value: | - Provide a clear and concise description of the bug. - If necessary, add screenshots to explain the problem. - - Steps to reproduce the problem: - 1. Do this - 2. Do that + Tell us about your feedback or provide a description of the bug you found. + If necessary, add screenshots to explain the idea or problem. + If possible provide steps to reproduce the problem. validations: required: true - type: textarea id: expected attributes: - label: Expected Behavior - description: Please describe what should happen instead. - placeholder: A clear description of what you expected to happen. + label: Expected Outcome + description: Please describe what should or could happen. + placeholder: A clear description of what you think should happen. validations: required: false - type: dropdown @@ -49,7 +41,7 @@ body: - Internet Explorer - Other validations: - required: true + required: false - type: input id: version attributes: diff --git a/.github/ISSUE_TEMPLATE/2-epic.yml b/.github/ISSUE_TEMPLATE/2-epic.yml new file mode 100644 index 00000000..83be7fce --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2-epic.yml @@ -0,0 +1,50 @@ +# SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +# SPDX-License-Identifier: CC0-1.0 + +name: Epic +description: Create a new epic +title: "[EPIC]: " +labels: ["Epic"] +body: + - type: checkboxes + id: pre-steps + attributes: + label: Things to do durng epic creation + options: + - label: Create a Label with a short name for this epic (`Epic:ShortName`) with the color `#4660F9` and add the label to this issue + required: true + - label: Add this Issue to the "ESID-Frontend" Project board + required: true + - label: Crate a branch for this epic (`feature/short-name`) and add it in the development field + required: true + - type: textarea + id: subtasks + attributes: + label: Related Issues/Tasks + value: | + + --- + validations: + required: true + - type: textarea + id: details + attributes: + label: Details + value: | + + + --- + validations: + required: true + - type: textarea + id: notes + attributes: + label: Notes + value: | + diff --git a/.github/ISSUE_TEMPLATE/EPIC.yml b/.github/ISSUE_TEMPLATE/EPIC.yml deleted file mode 100644 index 1ab64045..00000000 --- a/.github/ISSUE_TEMPLATE/EPIC.yml +++ /dev/null @@ -1,38 +0,0 @@ -# SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -# SPDX-License-Identifier: CC0-1.0 - -name: Epic -description: Create a new epic -title: "[EPIC]: " -labels: ["Epic"] -body: - - type: textarea - id: description - attributes: - label: Description - value: | - - ## Related Issues/Tasks: - - --- - ## Details - - - --- - - validations: - required: true diff --git a/.github/ISSUE_TEMPLATE/FEEDBACK-REPORT.yml b/.github/ISSUE_TEMPLATE/FEEDBACK-REPORT.yml deleted file mode 100644 index 0b3104ba..00000000 --- a/.github/ISSUE_TEMPLATE/FEEDBACK-REPORT.yml +++ /dev/null @@ -1,45 +0,0 @@ -# SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -# SPDX-License-Identifier: CC0-1.0 - -name: Feedback Report -description: Send in Feedback -title: "[Feedback]: " -labels: ["FEEDBACK"] -assignees: - - NXXR -body: - - type: markdown - attributes: - value: | - Thank you for your feedback! - - type: textarea - id: feedback - attributes: - label: Feedback - placeholder: Tell us about your feedback. - validations: - required: true - - type: input - id: contact - attributes: - label: Contact Details - description: Please leave a way for us to contact you if you want to be contacted off Github. - placeholder: e.g. email@address.net - validations: - required: false - - type: markdown - attributes: - value: | - ## Additional Information - - type: dropdown - id: browsers - attributes: - label: What browser(s) are you using? - multiple: true - options: - - Microsoft Edge - - Chrome - - Firefox - - Safari - - Opera - - Internet Explorer diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..9f4d4054 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,4 @@ +# SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +# SPDX-License-Identifier: CC0-1.0 + +blank_issues_enabled: true From fe2a46c69112cf860e5d187a0ec24573f46bb28a Mon Sep 17 00:00:00 2001 From: Moritz Zeumer <25636783+NXXR@users.noreply.github.com> Date: Mon, 22 Jul 2024 09:37:46 +0200 Subject: [PATCH 16/21] Fix 1-report.yml --- .github/ISSUE_TEMPLATE/1-report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/1-report.yml b/.github/ISSUE_TEMPLATE/1-report.yml index af5c010d..07901dc8 100644 --- a/.github/ISSUE_TEMPLATE/1-report.yml +++ b/.github/ISSUE_TEMPLATE/1-report.yml @@ -2,7 +2,7 @@ # SPDX-License-Identifier: CC0-1.0 name: Feedback or Bug Report -about: File a report to tell us your thoughts +description: File a report to tell us your thoughts labels: ["FEEDBACK"] body: - type: markdown From 4f379266489dfdcaa8c3f65af64ed075199d1d4d Mon Sep 17 00:00:00 2001 From: Moritz Zeumer <25636783+NXXR@users.noreply.github.com> Date: Mon, 22 Jul 2024 09:46:39 +0200 Subject: [PATCH 17/21] Add blank issue Template --- .github/ISSUE_TEMPLATE/0-blank.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/0-blank.yml diff --git a/.github/ISSUE_TEMPLATE/0-blank.yml b/.github/ISSUE_TEMPLATE/0-blank.yml new file mode 100644 index 00000000..c5048dab --- /dev/null +++ b/.github/ISSUE_TEMPLATE/0-blank.yml @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +# SPDX-License-Identifier: CC0-1.0 + +name: Blank Issue +description: Create a blank issue +projects: "DLR-SC/5" +body: + - type: textarea + id: content + atributes: + label: Description + description: Describe the issue. + validations: + required: true From 3d4a23e434ae31895eae93f01e83b34a01e378c0 Mon Sep 17 00:00:00 2001 From: Moritz Zeumer <25636783+NXXR@users.noreply.github.com> Date: Mon, 22 Jul 2024 09:47:38 +0200 Subject: [PATCH 18/21] fix typo --- .github/ISSUE_TEMPLATE/0-blank.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/0-blank.yml b/.github/ISSUE_TEMPLATE/0-blank.yml index c5048dab..7317f0ab 100644 --- a/.github/ISSUE_TEMPLATE/0-blank.yml +++ b/.github/ISSUE_TEMPLATE/0-blank.yml @@ -7,7 +7,7 @@ projects: "DLR-SC/5" body: - type: textarea id: content - atributes: + attributes: label: Description description: Describe the issue. validations: From bb684fec4a075bfa4e73a7b6a2685ce0aeae62b6 Mon Sep 17 00:00:00 2001 From: Moritz Zeumer <25636783+NXXR@users.noreply.github.com> Date: Mon, 22 Jul 2024 09:53:06 +0200 Subject: [PATCH 19/21] Add Project to epic issue template --- .github/ISSUE_TEMPLATE/2-epic.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE/2-epic.yml b/.github/ISSUE_TEMPLATE/2-epic.yml index 83be7fce..b7a61ed0 100644 --- a/.github/ISSUE_TEMPLATE/2-epic.yml +++ b/.github/ISSUE_TEMPLATE/2-epic.yml @@ -4,6 +4,7 @@ name: Epic description: Create a new epic title: "[EPIC]: " +projects: "DLR-SC/5" labels: ["Epic"] body: - type: checkboxes From a1aabdece4258f5b1f8f1574c17b11bfde35df42 Mon Sep 17 00:00:00 2001 From: Moritz Zeumer <25636783+NXXR@users.noreply.github.com> Date: Mon, 22 Jul 2024 09:53:49 +0200 Subject: [PATCH 20/21] Add project to report issue template --- .github/ISSUE_TEMPLATE/1-report.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE/1-report.yml b/.github/ISSUE_TEMPLATE/1-report.yml index 07901dc8..a7ce6d04 100644 --- a/.github/ISSUE_TEMPLATE/1-report.yml +++ b/.github/ISSUE_TEMPLATE/1-report.yml @@ -4,6 +4,7 @@ name: Feedback or Bug Report description: File a report to tell us your thoughts labels: ["FEEDBACK"] +projects: "DLR-SC/5" body: - type: markdown attributes: From d51f9b4aa4aa39ad367b8784f4b8b652743d7fbf Mon Sep 17 00:00:00 2001 From: Lorenzo Serloni <114689720+LorenzoSerloni@users.noreply.github.com> Date: Tue, 23 Jul 2024 15:45:35 +0200 Subject: [PATCH 21/21] Implemented a generalized version of the Map, LineChart, and Scenario components using VVAFER approach (#367) * Created new branch * Implemented Generalized map and linechart * Connected Line Chart * :hammer: Generalize Map component and LineChart component. * :wrench: Memoize HeatMap props and delete temporary Redux Store files. * :beetle: Fix data loading on map component. * :beetle: Fix selected items storage * :beetle: Fix tooltip heatlegend * :beetle: Fix heatlegendedit * :sparkles: Format containers * :beetle: Fix heat palette as user preference * :wrench: Remove unused components * Revert ":beetle: Fix heat palette as user preference" This reverts commit 3aced9a866c680f75928223447d17f8c36a43d44. * :wrench: Add previous removed files * :hammer: Generalize Scenario components * :sparkles: Format Translation files & add the Compliance with REUSE Specification in missing files * :sparkles: Add the Compliance with REUSE Specification in missing files * :wrench: Simplify code * Add localization for Map and LineChart components * Add localization and searchbar tests. Deleted old searchbar. * :wrench: Modified Map components props and added HeatMap test * :hammer: & :memo: & :beetle: & :tada: refactor some part of the scenario components add also docs and fix major bug and also add the possibility to decide how many lines to show in the card when are folded and when are expanded * :memo: refactor some part of the scenario components add also docs and fix major bug and also add the possibility to decide how many lines to show in the card when are folded and when are expanded * :green_heart: fix the test according to the new version in order to make the CI build * :wrench: Add tests for new components, removed old components and refactored new components props * Add Compliance information in missing files * :wrench: Remove debugs inside tests * :memo: Add documentation for Linechart components * :heavy_check_mark: added tests for the new scenarios components * Add Compliance information in missing files * :sparkles: fix formatting * :sparkles: fix formatting * :sparkles: Format Linechart component * :wrench: adjusting ui responsivness across multiple browser * :wrench: small ui responsive adjustment * :heavy_check_mark: add some tests for the cards * :beetle: fix the first render bug on firefox * :wrench: Simplify Scenario components * :beetle: Fix Scenario styling * :heavy_check_mark: fix the cardTitle test * :wrench: Add new color feature in Scenario components * :wrench: Fix the filter color * :hammer: Add cologne districts and change color on LineChart and Map components. Refactor map components and container to move data handling in the Data Socket * :heavy_check_mark: Add CardtooltipTest * :wrench: Refactor Searchbar interface and fix tests * :wrench: Small refactoring in the scss in order to mantain the layout across browser * :fire: Remove unused file * :beetle: fix bug on flipping card title * :wrench: Refactor legend component by wrapping amchart components * :wrench: Changed localization inside HeatLegend * :sparkles: Add Reuse Compliance * :wrench: Wrapped root,zoom and chart of HeatMap component * :twisted_rightwards_arrows: merging * :wrench: Remove stoplist in legend * :beetle: fixed the tooltip translation in the CompartmentsRow component * :beetle: fixed the tooltip translation in the CompartmentsRow component * :wrench: Wrap Amchart components inside LineChart * :wrench: Small refactoring in how it's defined test component * :beetle: Fixed crash on language change * :beetle: Fix the updating of the map when changing languages * :beetle: Fix language change problem on map * :beetle: Fix Reference Day on LineChart Component and Germany translation when changing language on Map Component * :beetle: Fix zoom when changing language * :beetle: Fix selectedDistrict when changing language * :beetle: Fix the bug on selectedArea on the Heatmap when refreshed the page * :wrench: Error handling on zoom * :wrench: Refactor Wrapping components * :wrench: Refactor heatmap * :sparkles: Lint DataContext * :hammer: update the scenario and the other component to be completly compliant with the new api * :hammer: update the scenario and the other component to be completly compliant with the new api * :sparkles: adjust the formatting * :hammer: Stable version of the library with the new api * :hammer: Stable version of the library with the new api * :sparkles: Stable version of the library with the new api * :wrench: Removed lazy loading on components * :sparkles: Stable version of the library with the new api * :wrench: Adjust the code as suggested from the code review * :sparkles: Adjust the code as suggested from the code review * :sparkles: Adjust linting in the code * :heavy_check_mark: Adjust test for the store * :wrench: Refactor Map and DataContext * :sparkles: Fix the comment in the scenario components to be compliant with the codestyle & :beetle: fixed a bug in the linechart * :beetle: Fix a bug in the linechart * :wrench: adjust the code according to the changes requested in the code review * :wrench: adjust the code according to the changes requested in the code review * :wrench: Generalize line chart series * :sparkles: Add reuse compliance * :sparkles: Add comments in LineChart and HeatMap components * :beetle: Fix the wrapped version of the Map * :wrench: Refactor percentiledata series in LineChart * :sparkles: Format heatmap * :wrench: Remove unused hook * :wrench: Fix the handling of the null values in the cards in order to be equal to the deployed version * :beetle: Fix wrapped version of the Linechart * :wrench: Refactor LineSeries * :wrench: Small adjustment * :wrench: Remove gorupFilterList inside LineChart * :wrench: Remove scenarioList in LineChart component * :sparkle: Fix also the last problem with the heatmap with the zoom now the amchart component should be bugless :) * :sparkles: Fix also the last problem with the heatmap with the zoom now the amchart component should be bugless :) * :wrench: Map component final version bugless * :wrench: Refactor Linechart component. * :sparkles: Modify console error * :sparkles: Rename mapcontainer * :wrench: Refactor linechart data selection * :wrench: Refactor localization in Linechart and more button logic * :wrench: Replace serie id with valueYField * :wrench: Remove linechart caseData translation in linechart * :wrench: Refactor export data in linechart * :wrench: Refactor some small detail * :sparkle: Fix the formatting * :wrench: Fix Compartment values null logic in the compartments components * :wrench: Fix typo error in the CardTooltip test * :wrench: Refactor localization in LineChart * :wrench: Remove unused lines * :wrench: Refactor localization in Map components * :wrench: Adjusted the code according to the request changes in the pull request * :wrench: Adjusted the code according to the request changes in the pull request --------- Co-authored-by: Violini Co-authored-by: Serloni --- frontend/{.env.dev => .env.template} | 0 frontend/assets/third-party-attributions.json | 2 +- frontend/locales/de-backend.json5 | 2 +- frontend/locales/de-global.json5 | 1 + frontend/locales/en-backend.json5 | 2 +- frontend/locales/en-global.json5 | 1 + frontend/package-lock.json | 789 ++++++++++++----- frontend/package.json | 12 +- frontend/src/App.scss | 26 + frontend/src/App.tsx | 38 +- frontend/src/DataContext.tsx | 583 +++++++++++++ .../__tests__/components/LineChart.test.tsx | 68 ++ .../CardsComponents/CardContainer.test.tsx | 140 +++ .../CardsComponents/DataCard.test.tsx | 181 ++++ .../MainCard/CardRows.test.tsx | 86 ++ .../MainCard/CardTitle.test.tsx | 22 + .../MainCard/CardTooltip.test.tsx | 53 ++ .../MainCard/MainCard.test.tsx | 92 ++ .../Scenario/CompartmentList.test.tsx | 93 -- .../CompartmentsRow.test.tsx | 73 ++ .../CompartmentsRows.test.tsx | 56 ++ .../ExpandedButton.test.tsx | 45 + .../Scenario/ReferenceDatePicker.test.tsx | 73 ++ .../components/Sidebar/DistrictMap.test.tsx | 33 - .../components/Sidebar/HeatLegend.test.tsx | 37 + .../components/Sidebar/HeatMap.test.tsx | 121 +++ .../components/Sidebar/LockMaxValue.test.tsx | 46 + .../components/Sidebar/SearchBar.test.tsx | 121 +-- .../components/shared/ConfirmDialog.test.tsx | 3 +- frontend/src/__tests__/mocks/handlers.ts | 397 ++++++++- frontend/src/__tests__/mocks/resize.ts | 10 + .../store/DataSelectionSlice.test.ts | 16 +- .../LineChartComponents/LineChart.tsx | 654 ++++++++++++++ .../src/components/LineChartContainer.tsx | 72 ++ frontend/src/components/MainContent.tsx | 5 +- frontend/src/components/MainContentTabs.tsx | 3 +- frontend/src/components/ManageGroupDialog.tsx | 474 ---------- .../src/components/Scenario/CaseDataCard.tsx | 67 -- .../components/Scenario/CompartmentList.tsx | 293 ------- frontend/src/components/Scenario/DataCard.tsx | 398 --------- .../src/components/Scenario/DataCardList.tsx | 162 ---- .../Scenario/GroupFilterAppendage.tsx | 93 -- .../components/Scenario/GroupFilterCard.tsx | 161 ---- .../src/components/Scenario/ScenarioCard.tsx | 88 -- frontend/src/components/Scenario/index.tsx | 144 --- .../CardsComponents/CardContainer.tsx | 158 ++++ .../CardsComponents/DataCard.tsx | 189 ++++ .../GroupFilter/FilterButton.tsx | 71 ++ .../GroupFilter/FilterCard.tsx | 140 +++ .../GroupFilter/FilterRows.tsx | 125 +++ .../GroupFilter/FiltersContainer.tsx | 139 +++ .../CardsComponents/MainCard/CardRows.tsx | 193 +++++ .../CardsComponents/MainCard/CardTitle.tsx | 34 + .../CardsComponents/MainCard/CardTooltip.tsx | 135 +++ .../CardsComponents/MainCard/MainCard.tsx | 196 +++++ .../CardsComponents/MainCard/TrendArrow.tsx | 35 + .../CompartmentsRow.tsx | 138 +++ .../CompartmentsRows.tsx | 107 +++ .../ExpandedButton.tsx | 56 ++ .../FilterDialogContainer.tsx | 170 ++++ .../FilterComponents/GroupFilterCard.tsx | 165 ++++ .../FilterComponents/GroupFilterEditor.tsx | 222 +++++ .../FilterComponents/ManageGroupDialog.tsx | 279 ++++++ .../ReferenceDatePicker.tsx | 75 ++ .../ScenarioComponents/ScenarioContainer.tsx | 450 ++++++++++ .../{Scenario => ScenarioComponents}/hooks.ts | 12 +- .../src/components/Sidebar/DistrictMap.tsx | 499 ----------- .../src/components/Sidebar/HeatLegend.tsx | 78 -- .../Sidebar/MapComponents/HeatLegend.tsx | 141 +++ .../{ => MapComponents}/HeatLegendEdit.tsx | 168 ++-- .../Sidebar/MapComponents/HeatMap.tsx | 454 ++++++++++ .../Sidebar/MapComponents/LockMaxValue.tsx | 82 ++ .../Sidebar/MapComponents/SearchBar.tsx | 149 ++++ frontend/src/components/Sidebar/SearchBar.tsx | 185 ---- .../components/Sidebar/SidebarContainer.tsx | 233 +++++ frontend/src/components/Sidebar/index.tsx | 39 - frontend/src/components/SimulationChart.tsx | 817 ------------------ .../src/components/TopBar/ApplicationMenu.tsx | 1 - .../src/components/shared/ConfirmDialog.tsx | 24 +- .../src/components/shared/HeatMap/Legend.ts | 34 + frontend/src/components/shared/HeatMap/Map.ts | 36 + .../src/components/shared/HeatMap/Polygon.ts | 36 + .../src/components/shared/HeatMap/Zoom.ts | 35 + .../components/shared/LineChart/AxisRange.ts | 48 + .../src/components/shared/LineChart/Chart.ts | 35 + .../components/shared/LineChart/DateAxis.ts | 49 ++ .../src/components/shared/LineChart/Filter.ts | 43 + .../components/shared/LineChart/LineSeries.ts | 58 ++ .../components/shared/LineChart/ValueAxis.ts | 50 ++ frontend/src/components/shared/Root.ts | 28 + frontend/src/main.tsx | 1 - frontend/src/store/DataSelectionSlice.ts | 33 +- frontend/src/store/services/caseDataApi.ts | 3 +- frontend/src/store/services/groupApi.ts | 147 +++- frontend/src/store/services/scenarioApi.ts | 38 +- frontend/src/types/card.ts | 26 + ...cologneDisticts.ts => cologneDistricts.ts} | 0 frontend/src/types/group.ts | 13 + frontend/src/types/heatmapLegend.ts | 21 + frontend/src/types/lineChart.ts | 79 ++ frontend/src/types/localization.ts | 26 + frontend/src/types/scenario.ts | 8 + frontend/src/util/Theme.ts | 2 +- frontend/src/util/hooks.ts | 18 + frontend/src/util/util.ts | 20 +- 105 files changed, 8621 insertions(+), 4061 deletions(-) rename frontend/{.env.dev => .env.template} (100%) create mode 100644 frontend/src/DataContext.tsx create mode 100644 frontend/src/__tests__/components/LineChart.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/CardsComponents/CardContainer.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/CardsComponents/DataCard.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardRows.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTitle.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTooltip.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/MainCard.test.tsx delete mode 100644 frontend/src/__tests__/components/Scenario/CompartmentList.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRow.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRows.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/ExpandedButtonComponents/ExpandedButton.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/ReferenceDatePicker.test.tsx delete mode 100644 frontend/src/__tests__/components/Sidebar/DistrictMap.test.tsx create mode 100644 frontend/src/__tests__/components/Sidebar/HeatLegend.test.tsx create mode 100644 frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx create mode 100644 frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx create mode 100644 frontend/src/__tests__/mocks/resize.ts create mode 100644 frontend/src/components/LineChartComponents/LineChart.tsx create mode 100644 frontend/src/components/LineChartContainer.tsx delete mode 100644 frontend/src/components/ManageGroupDialog.tsx delete mode 100644 frontend/src/components/Scenario/CaseDataCard.tsx delete mode 100644 frontend/src/components/Scenario/CompartmentList.tsx delete mode 100644 frontend/src/components/Scenario/DataCard.tsx delete mode 100644 frontend/src/components/Scenario/DataCardList.tsx delete mode 100644 frontend/src/components/Scenario/GroupFilterAppendage.tsx delete mode 100644 frontend/src/components/Scenario/GroupFilterCard.tsx delete mode 100644 frontend/src/components/Scenario/ScenarioCard.tsx delete mode 100644 frontend/src/components/Scenario/index.tsx create mode 100644 frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx create mode 100644 frontend/src/components/ScenarioComponents/CardsComponents/DataCard.tsx create mode 100644 frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterButton.tsx create mode 100644 frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterCard.tsx create mode 100644 frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterRows.tsx create mode 100644 frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FiltersContainer.tsx create mode 100644 frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardRows.tsx create mode 100644 frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTitle.tsx create mode 100644 frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTooltip.tsx create mode 100644 frontend/src/components/ScenarioComponents/CardsComponents/MainCard/MainCard.tsx create mode 100644 frontend/src/components/ScenarioComponents/CardsComponents/MainCard/TrendArrow.tsx create mode 100644 frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRow.tsx create mode 100644 frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRows.tsx create mode 100644 frontend/src/components/ScenarioComponents/ExpandedButtonComponents/ExpandedButton.tsx create mode 100644 frontend/src/components/ScenarioComponents/FilterComponents/FilterDialogContainer.tsx create mode 100644 frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterCard.tsx create mode 100644 frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterEditor.tsx create mode 100644 frontend/src/components/ScenarioComponents/FilterComponents/ManageGroupDialog.tsx create mode 100644 frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx create mode 100644 frontend/src/components/ScenarioComponents/ScenarioContainer.tsx rename frontend/src/components/{Scenario => ScenarioComponents}/hooks.ts (70%) delete mode 100644 frontend/src/components/Sidebar/DistrictMap.tsx delete mode 100644 frontend/src/components/Sidebar/HeatLegend.tsx create mode 100644 frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx rename frontend/src/components/Sidebar/{ => MapComponents}/HeatLegendEdit.tsx (55%) create mode 100644 frontend/src/components/Sidebar/MapComponents/HeatMap.tsx create mode 100644 frontend/src/components/Sidebar/MapComponents/LockMaxValue.tsx create mode 100644 frontend/src/components/Sidebar/MapComponents/SearchBar.tsx delete mode 100644 frontend/src/components/Sidebar/SearchBar.tsx create mode 100644 frontend/src/components/Sidebar/SidebarContainer.tsx delete mode 100644 frontend/src/components/Sidebar/index.tsx delete mode 100644 frontend/src/components/SimulationChart.tsx create mode 100644 frontend/src/components/shared/HeatMap/Legend.ts create mode 100644 frontend/src/components/shared/HeatMap/Map.ts create mode 100644 frontend/src/components/shared/HeatMap/Polygon.ts create mode 100644 frontend/src/components/shared/HeatMap/Zoom.ts create mode 100644 frontend/src/components/shared/LineChart/AxisRange.ts create mode 100644 frontend/src/components/shared/LineChart/Chart.ts create mode 100644 frontend/src/components/shared/LineChart/DateAxis.ts create mode 100644 frontend/src/components/shared/LineChart/Filter.ts create mode 100644 frontend/src/components/shared/LineChart/LineSeries.ts create mode 100644 frontend/src/components/shared/LineChart/ValueAxis.ts create mode 100644 frontend/src/components/shared/Root.ts create mode 100644 frontend/src/types/card.ts rename frontend/src/types/{cologneDisticts.ts => cologneDistricts.ts} (100%) create mode 100644 frontend/src/types/lineChart.ts create mode 100644 frontend/src/types/localization.ts diff --git a/frontend/.env.dev b/frontend/.env.template similarity index 100% rename from frontend/.env.dev rename to frontend/.env.template diff --git a/frontend/assets/third-party-attributions.json b/frontend/assets/third-party-attributions.json index 63c81cec..222820ae 100644 --- a/frontend/assets/third-party-attributions.json +++ b/frontend/assets/third-party-attributions.json @@ -1 +1 @@ -[{"name":"@amcharts/amcharts5","authors":"amCharts (https://www.amcharts.com/)","version":"5.8.4","repository":"https://github.com/amcharts/amcharts5.git","license":"SEE LICENSE IN LICENSE","licenseText":"## Free amCharts license\n\nThis amCharts software is copyrighted by Antanas Marcelionis.\n\nThis amCharts software is provided under linkware license, conditions of which are outlined below.\n\n### You can\n\n* Use amCharts software in any of your projects, including commercial.\n* Modify amCharts software to suit your needs (source code is available at [here](https://github.com/amcharts/amcharts5)).\n* Bundle amCharts software with your own projects (free, open source, or commercial).\n\n### If the following conditions are met\n\n* You do not disable, hide or alter the branding link which is displayed on all the content generated by amCharts software.\n* You include this original LICENSE file together with original (or modified) files from amCharts software.\n* Your own personal license does not supersede or in any way negate the effect of this LICENSE, or make the impression of doing so.\n\n### You can't\n\n* Remove or alter this LICENSE file.\n* Remove any of the amCharts copyright notices from any of the files of amCharts software.\n* Use amCharts software without built-in attribution (logo). Please see note about commercial amCharts licenses below.\n* Sell or receive any compensation for amCharts software.\n* Distribute amCharts software on its own, not as part of other application.\n\n### The above does not suit you?\n\namCharts provides commercial licenses for purchase for various usage scenarios that are not covered by the above conditions.\n\nPlease refer to [this web page](https://www.amcharts.com/online-store/) or [contact amCharts support](mailto:contact@amcharts.com) for further information.\n\n### In doubt?\n\n[Contact amCharts](mailto:contact@amcharts.com). We'll be happy to sort you out."},{"name":"@emotion/react","authors":"Emotion Contributors","version":"11.11.4","repository":"https://github.com/emotion-js/emotion/tree/main/packages/react","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/styled","authors":null,"version":"11.11.0","repository":"https://github.com/emotion-js/emotion/tree/main/packages/styled","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/icons-material","authors":"MUI Team","version":"5.15.13","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/lab","authors":"MUI Team","version":"5.0.0-alpha.168","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/material","authors":"MUI Team","version":"5.15.13","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/system","authors":"MUI Team","version":"5.15.13","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/x-date-pickers","authors":"MUI Team","version":"6.19.7","repository":"https://github.com/mui/mui-x.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2020 Material-UI SAS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@reduxjs/toolkit","authors":"Mark Erikson ","version":"2.2.1","repository":"git+https://github.com/reduxjs/redux-toolkit.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2018 Mark Erikson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@types/geojson","authors":"Jacob Bruun, Arne Schubert, Jeff Jacobson, Ilia Choly, Dan Vanderkam","version":"7946.0.14","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"country-flag-icons","authors":"catamphetamine ","version":"1.5.9","repository":"git+https://gitlab.com/catamphetamine/country-flag-icons.git","license":"MIT","licenseText":"(The MIT License)\r\n\r\nCopyright (c) 2020 @catamphetamine \r\n\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of this software and associated documentation files (the\r\n'Software'), to deal in the Software without restriction, including\r\nwithout limitation the rights to use, copy, modify, merge, publish,\r\ndistribute, sublicense, and/or sell copies of the Software, and to\r\npermit persons to whom the Software is furnished to do so, subject to\r\nthe following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."},{"name":"dayjs","authors":"iamkun","version":"1.11.10","repository":"https://github.com/iamkun/dayjs.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2018-present, iamkun\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"i18next","authors":"Jan Mühlemann (https://github.com/jamuhl)","version":"23.10.1","repository":"https://github.com/i18next/i18next.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2024 i18next\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"i18next-browser-languagedetector","authors":"Jan Mühlemann (https://github.com/jamuhl)","version":"7.2.0","repository":"https://github.com/i18next/i18next-browser-languageDetector.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2023 i18next\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"i18next-http-backend","authors":null,"version":"2.5.0","repository":"git@github.com:i18next/i18next-http-backend.git","license":"MIT","licenseText":"Copyright (c) 2023 i18next\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"json5","authors":"Aseem Kishore ","version":"2.2.3","repository":"git+https://github.com/json5/json5.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2012-2018 Aseem Kishore, and [others].\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n[others]: https://github.com/json5/json5/contributors\n"},{"name":"react","authors":null,"version":"18.2.0","repository":"https://github.com/facebook/react.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Facebook, Inc. and its affiliates.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"react-dom","authors":null,"version":"18.2.0","repository":"https://github.com/facebook/react.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Facebook, Inc. and its affiliates.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"react-i18next","authors":"Jan Mühlemann (https://github.com/jamuhl)","version":"13.5.0","repository":"https://github.com/i18next/react-i18next.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2023 i18next\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"react-lazyload","authors":"jasonslyvia (http://undefinedblog.com/)","version":"3.2.0","repository":"https://github.com/jasonslyvia/react-lazyload.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Sen Yang\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"react-markdown","authors":"Espen Hovlandsdal ","version":"9.0.1","repository":"remarkjs/react-markdown","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Espen Hovlandsdal\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"react-redux","authors":"Dan Abramov (https://github.com/gaearon)","version":"9.1.0","repository":"github:reduxjs/react-redux","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015-present Dan Abramov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"react-scroll-sync","authors":"Andrey Okonetchnikov ","version":"0.11.2","repository":"https://github.com/okonet/react-scroll-sync.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2016 Andrey Okonetchnikov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"redux","authors":"Dan Abramov (https://github.com/gaearon), Andrew Clark (https://github.com/acdlite)","version":"5.0.1","repository":"github:reduxjs/redux","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015-present Dan Abramov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"redux-persist","authors":null,"version":"6.0.0","repository":"rt2zz/redux-persist","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2017 Zack Story\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"rehype-katex","authors":"Junyoung Choi (https://rokt33r.github.io)","version":"7.0.0","repository":"https://github.com/remarkjs/remark-math/tree/main/packages/rehype-katex","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Junyoung Choi (https://rokt33r.github.io)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"remark-math","authors":"Junyoung Choi (https://rokt33r.github.io)","version":"6.0.0","repository":"https://github.com/remarkjs/remark-math/tree/main/packages/remark-math","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Junyoung Choi (https://rokt33r.github.io)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"rooks","authors":null,"version":"7.14.1","repository":"https://github.com/imbhargav5/rooks.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@types/d3","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema, Fil","version":"7.4.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-chord","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"3.0.6","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-hierarchy","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema, Fil","version":"3.1.1","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-sankey","authors":"Tom Wanzek, Alex Ford","version":"0.11.2","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-shape","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema, Fil","version":"3.1.6","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/polylabel","authors":"Denis Carriere","version":"1.1.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/svg-arc-to-cubic-bezier","authors":"Fabien Caylus","version":"3.2.2","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"d3","authors":"Mike Bostock","version":"7.9.0","repository":"https://github.com/d3/d3.git","license":"ISC","licenseText":"Copyright 2010-2023 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-chord","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-chord.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-geo","authors":"Mike Bostock","version":"3.1.1","repository":"https://github.com/d3/d3-geo.git","license":"ISC","licenseText":"Copyright 2010-2024 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n\nThis license applies to GeographicLib, versions 1.12 and later.\n\nCopyright 2008-2012 Charles Karney\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"d3-sankey","authors":"Mike Bostock","version":"0.12.3","repository":"https://github.com/d3/d3-sankey.git","license":"BSD-3-Clause","licenseText":"Copyright 2015, Mike Bostock\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the author nor the names of contributors may be used to\n endorse or promote products derived from this software without specific prior\n written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"d3-selection","authors":"Mike Bostock","version":"3.0.0","repository":"https://github.com/d3/d3-selection.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-transition","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-transition.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-voronoi-treemap","authors":" Kcnarf ","version":"1.1.2","repository":"https://github.com/Kcnarf/d3-voronoi-treemap.git","license":"BSD-3-Clause","licenseText":"BSD 3-Clause License\n\nCopyright (c) 2018, LEBEAU Franck\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"flatpickr","authors":"Gregory ","version":"4.6.13","repository":"git+https://github.com/chmln/flatpickr.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017 Gregory Petrosyan\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"markerjs2","authors":"Alan Mendelevich","version":"2.32.1","repository":"https://github.com/ailon/markerjs2","license":"SEE LICENSE IN LICENSE","licenseText":"marker.js 2 Linkware License\r\n\r\nCopyright (c) 2020 Alan Mendelevich\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\n1. The above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\n2. Link back to the Software website displayed during operation of the Software\r\nor an equivalent prominent public attribution must be retained. Alternative \r\ncommercial licenses can be obtained to remove this clause.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE."},{"name":"pdfmake","authors":"Bartek Pampuch ","version":"0.2.10","repository":"git://github.com/bpampuch/pdfmake.git","license":"MIT","licenseText":"The MIT License (MIT)\r\n\r\nCopyright (c) 2014-2015 bpampuch\r\n 2016-2024 liborm85\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy of\r\nthis software and associated documentation files (the \"Software\"), to deal in\r\nthe Software without restriction, including without limitation the rights to\r\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\r\nthe Software, and to permit persons to whom the Software is furnished to do so,\r\nsubject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\r\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n"},{"name":"polylabel","authors":"Vladimir Agafonkin","version":"1.1.0","repository":null,"license":"ISC","licenseText":"ISC License\nCopyright (c) 2016 Mapbox\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD TO\nTHIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.\nIN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR\nCONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA\nOR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS\nACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS\nSOFTWARE.\n"},{"name":"seedrandom","authors":"David Bau","version":"3.0.5","repository":"git://github.com/davidbau/seedrandom.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 David Bau\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"svg-arc-to-cubic-bezier","authors":"Colin Meinke","version":"3.2.0","repository":"https://github.com/colinmeinke/svg-arc-to-cubic-bezier","license":"ISC","licenseText":"Internet Systems Consortium license\n===================================\n\nCopyright (c) `2017`, `Colin Meinke`\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"tslib","authors":"Microsoft Corp.","version":"2.6.2","repository":"https://github.com/Microsoft/tslib.git","license":"0BSD","licenseText":"Copyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE."},{"name":"@babel/runtime","authors":"The Babel Team (https://babel.dev/team)","version":"7.24.0","repository":"https://github.com/babel/babel.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014-present Sebastian McKenzie and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@emotion/babel-plugin","authors":"Kye Hohenberger","version":"11.11.0","repository":"https://github.com/emotion-js/emotion/tree/main/packages/babel-plugin","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/cache","authors":null,"version":"11.11.0","repository":"https://github.com/emotion-js/emotion/tree/main/packages/cache","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/serialize","authors":null,"version":"1.1.3","repository":"https://github.com/emotion-js/emotion/tree/main/packages/serialize","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/use-insertion-effect-with-fallbacks","authors":null,"version":"1.0.1","repository":"https://github.com/emotion-js/emotion/tree/main/packages/use-insertion-effect-with-fallbacks","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/utils","authors":null,"version":"1.2.1","repository":"https://github.com/emotion-js/emotion/tree/main/packages/utils","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/weak-memoize","authors":null,"version":"0.3.1","repository":"https://github.com/emotion-js/emotion/tree/main/packages/weak-memoize","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"hoist-non-react-statics","authors":"Michael Ridgway ","version":"3.3.2","repository":"git://github.com/mridgway/hoist-non-react-statics.git","license":"BSD-3-Clause","licenseText":"Software License Agreement (BSD License)\n========================================\n\nCopyright (c) 2015, Yahoo! Inc. All rights reserved.\n----------------------------------------------------\n\nRedistribution and use of this software in source and binary forms, with or\nwithout modification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n * Neither the name of Yahoo! Inc. nor the names of YUI's contributors may be\n used to endorse or promote products derived from this software without\n specific prior written permission of Yahoo! Inc.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"@emotion/is-prop-valid","authors":null,"version":"1.2.2","repository":"https://github.com/emotion-js/emotion/tree/main/packages/is-prop-valid","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"clsx","authors":"Luke Edwards","version":"2.1.0","repository":"lukeed/clsx","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Luke Edwards (lukeed.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"prop-types","authors":null,"version":"15.8.1","repository":"facebook/prop-types","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2013-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/base","authors":"MUI Team","version":"5.0.0-beta.39","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/types","authors":"MUI Team","version":"7.2.13","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/utils","authors":"MUI Team","version":"5.15.13","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@types/react-transition-group","authors":"Karol Janyst, Epskampie, Masafumi Koba, Ben Grynhaus","version":"4.4.10","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"csstype","authors":"Fredrik Nicol ","version":"3.1.3","repository":"https://github.com/frenic/csstype","license":"MIT","licenseText":"Copyright (c) 2017-2018 Fredrik Nicol\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"react-is","authors":null,"version":"18.2.0","repository":"https://github.com/facebook/react.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Facebook, Inc. and its affiliates.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"react-transition-group","authors":null,"version":"4.4.5","repository":"https://github.com/reactjs/react-transition-group.git","license":"BSD-3-Clause","licenseText":"BSD 3-Clause License\n\nCopyright (c) 2018, React Community\nForked from React (https://github.com/facebook/react) Copyright 2013-present, Facebook, Inc.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"@mui/core-downloads-tracker","authors":"MUI Team","version":"5.15.13","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/private-theming","authors":"MUI Team","version":"5.15.13","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/styled-engine","authors":"MUI Team","version":"5.15.11","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"immer","authors":"Michel Weststrate ","version":"10.0.4","repository":"https://github.com/immerjs/immer.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2017 Michel Weststrate\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"redux-thunk","authors":"Dan Abramov ","version":"3.1.0","repository":"github:reduxjs/redux-thunk","license":"MIT","licenseText":"The MIT License (MIT)\r\n\r\nCopyright (c) 2015-present Dan Abramov\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n"},{"name":"reselect","authors":"Lee Bannard, Robert Binna, Martijn Faassen, Philip Spitzlinger","version":"5.1.0","repository":"https://github.com/reduxjs/reselect.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015-2018 Reselect Contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"cross-fetch","authors":"Leonardo Quixada ","version":"4.0.0","repository":"https://github.com/lquixada/cross-fetch.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017 Leonardo Quixadá\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"loose-envify","authors":"Andres Suarez ","version":"1.4.0","repository":"git://github.com/zertosh/loose-envify.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Andres Suarez \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"scheduler","authors":null,"version":"0.23.0","repository":"https://github.com/facebook/react.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Facebook, Inc. and its affiliates.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"html-parse-stringify","authors":"Henrik Joreteg ","version":"3.0.1","repository":"https://github.com/henrikjoreteg/html-parse-stringify","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Henrik Joreteg \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@types/hast","authors":"lukeggchapman, Junyoung Choi, Christian Murphy, Remco Haszing","version":"3.0.4","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"devlop","authors":"Titus Wormer (https://wooorm.com)","version":"1.1.0","repository":"wooorm/devlop","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2023 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"hast-util-to-jsx-runtime","authors":"Titus Wormer (https://wooorm.com)","version":"2.3.0","repository":"syntax-tree/hast-util-to-jsx-runtime","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2023 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"html-url-attributes","authors":"Titus Wormer (https://wooorm.com)","version":"3.0.0","repository":"https://github.com/rehypejs/rehype-minify/tree/main/packages/html-url-attributes","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"mdast-util-to-hast","authors":"Titus Wormer (https://wooorm.com)","version":"13.1.0","repository":"syntax-tree/mdast-util-to-hast","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"remark-parse","authors":"Titus Wormer (https://wooorm.com)","version":"11.0.0","repository":"https://github.com/remarkjs/remark/tree/main/packages/remark-parse","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2014 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"remark-rehype","authors":"Titus Wormer (https://wooorm.com)","version":"11.1.0","repository":"remarkjs/remark-rehype","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"unified","authors":"Titus Wormer (https://wooorm.com)","version":"11.0.4","repository":"unifiedjs/unified","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"unist-util-visit","authors":"Titus Wormer (https://wooorm.com)","version":"5.0.0","repository":"syntax-tree/unist-util-visit","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"vfile","authors":"Titus Wormer (https://wooorm.com)","version":"6.0.1","repository":"vfile/vfile","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"@types/use-sync-external-store","authors":"eps1lon, Mark Erikson","version":"0.0.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"use-sync-external-store","authors":null,"version":"1.2.0","repository":"https://github.com/facebook/react.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Facebook, Inc. and its affiliates.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@types/katex","authors":"Michael Randolph, Kevin Nguyen, bLue, Sebastian Weigand, sapphi-red, Stefaans","version":"0.16.7","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"hast-util-from-html-isomorphic","authors":"Remco Haszing ","version":"2.0.0","repository":"syntax-tree/hast-util-from-html-isomorphic","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2023 Remco Haszing \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"hast-util-to-text","authors":"Titus Wormer (https://wooorm.com)","version":"4.0.0","repository":"syntax-tree/hast-util-to-text","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2019 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"katex","authors":null,"version":"0.16.9","repository":"https://github.com/KaTeX/KaTeX.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2013-2020 Khan Academy and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"unist-util-visit-parents","authors":"Titus Wormer (https://wooorm.com)","version":"6.0.1","repository":"syntax-tree/unist-util-visit-parents","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@types/mdast","authors":"Christian Murphy, Jun Lu, Remco Haszing, Titus Wormer, Remco Haszing","version":"4.0.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"mdast-util-math","authors":"Titus Wormer (https://wooorm.com)","version":"3.0.0","repository":"syntax-tree/mdast-util-math","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2020 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"micromark-extension-math","authors":"Titus Wormer (https://wooorm.com)","version":"3.0.0","repository":"micromark/micromark-extension-math","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2020 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"fast-deep-equal","authors":"Evgeny Poberezkin","version":"3.1.3","repository":"git+https://github.com/epoberezkin/fast-deep-equal.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2017 Evgeny Poberezkin\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"lodash.debounce","authors":"John-David Dalton (http://allyoucanleet.com/)","version":"4.0.8","repository":"lodash/lodash","license":"MIT","licenseText":"Copyright jQuery Foundation and other contributors \n\nBased on Underscore.js, copyright Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors \n\nThis software consists of voluntary contributions made by many\nindividuals. For exact contribution history, see the revision history\navailable at https://github.com/lodash/lodash\n\nThe following license applies to all parts of this software except as\ndocumented below:\n\n====\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n====\n\nCopyright and related rights for sample code are waived via CC0. Sample\ncode is defined as all source code displayed within the prose of the\ndocumentation.\n\nCC0: http://creativecommons.org/publicdomain/zero/1.0/\n\n====\n\nFiles located in the node_modules and vendor directories are externally\nmaintained libraries used by this software which have their own\nlicenses; we recommend you read them, as their terms may differ from the\nterms above.\n"},{"name":"raf","authors":"Chris Dickinson ","version":"3.4.1","repository":"git://github.com/chrisdickinson/raf.git","license":"MIT","licenseText":"Copyright 2013 Chris Dickinson \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@types/d3-array","authors":"Alex Ford, Boris Yankov, Tom Wanzek, denisname, Hugues Stefanski, Nathan Bierema, Fil","version":"3.2.1","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-axis","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.6","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-brush","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"3.0.6","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-color","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Hugues Stefanski, Nathan Bierema, Fil","version":"3.1.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-contour","authors":"Tom Wanzek, Hugues Stefanski, Nathan Bierema","version":"3.0.6","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-delaunay","authors":"Bradley Odell, Nathan Bierema","version":"6.0.4","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-dispatch","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.6","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-drag","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"3.0.7","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-dsv","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.7","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-ease","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"3.0.2","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-fetch","authors":"Hugues Stefanski, denisname, Nathan Bierema","version":"3.0.7","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-force","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.9","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-format","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.4","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-geo","authors":"Hugues Stefanski, Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"3.1.0","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-interpolate","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.4","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-path","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"3.1.0","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-polygon","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"3.0.2","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-quadtree","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.6","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-random","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"3.0.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-scale","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, rulonder, Nathan Bierema","version":"4.0.8","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-scale-chromatic","authors":"Hugues Stefanski, Alex Ford, Boris Yankov, Henrique Machado, Nathan Bierema","version":"3.0.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-selection","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema, Ambar Mutha","version":"3.0.10","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-time","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-time-format","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"4.0.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-timer","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.2","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-transition","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Robert Moura, Nathan Bierema","version":"3.0.8","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-zoom","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.8","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"d3-array","authors":"Mike Bostock","version":"3.2.4","repository":"https://github.com/d3/d3-array.git","license":"ISC","licenseText":"Copyright 2010-2023 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-axis","authors":"Mike Bostock","version":"3.0.0","repository":"https://github.com/d3/d3-axis.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-brush","authors":"Mike Bostock","version":"3.0.0","repository":"https://github.com/d3/d3-brush.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-color","authors":"Mike Bostock","version":"3.1.0","repository":"https://github.com/d3/d3-color.git","license":"ISC","licenseText":"Copyright 2010-2022 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-contour","authors":"Mike Bostock","version":"4.0.2","repository":"https://github.com/d3/d3-contour.git","license":"ISC","licenseText":"Copyright 2012-2023 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-delaunay","authors":"Mike Bostock","version":"6.0.4","repository":"https://github.com/d3/d3-delaunay.git","license":"ISC","licenseText":"Copyright 2018-2021 Observable, Inc.\nCopyright 2021 Mapbox\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-dispatch","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-dispatch.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-drag","authors":"Mike Bostock","version":"3.0.0","repository":"https://github.com/d3/d3-drag.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-dsv","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-dsv.git","license":"ISC","licenseText":"Copyright 2013-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-ease","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-ease.git","license":"BSD-3-Clause","licenseText":"Copyright 2010-2021 Mike Bostock\nCopyright 2001 Robert Penner\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the author nor the names of contributors may be used to\n endorse or promote products derived from this software without specific prior\n written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"d3-fetch","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-fetch.git","license":"ISC","licenseText":"Copyright 2016-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-force","authors":"Mike Bostock","version":"3.0.0","repository":"https://github.com/d3/d3-force.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-format","authors":"Mike Bostock","version":"3.1.0","repository":"https://github.com/d3/d3-format.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-hierarchy","authors":"Mike Bostock","version":"3.1.2","repository":"https://github.com/d3/d3-hierarchy.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-interpolate","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-interpolate.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-path","authors":"Mike Bostock","version":"3.1.0","repository":"https://github.com/d3/d3-path.git","license":"ISC","licenseText":"Copyright 2015-2022 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-polygon","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-polygon.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-quadtree","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-quadtree.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-random","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-random.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-scale","authors":"Mike Bostock","version":"4.0.2","repository":"https://github.com/d3/d3-scale.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-scale-chromatic","authors":"Mike Bostock","version":"3.1.0","repository":"https://github.com/d3/d3-scale-chromatic.git","license":"ISC","licenseText":"Copyright 2010-2024 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n\nApache-Style Software License for ColorBrewer software and ColorBrewer Color Schemes\n\nCopyright 2002 Cynthia Brewer, Mark Harrower, and The Pennsylvania State University\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed\nunder the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the License for the\nspecific language governing permissions and limitations under the License.\n"},{"name":"d3-shape","authors":"Mike Bostock","version":"3.2.0","repository":"https://github.com/d3/d3-shape.git","license":"ISC","licenseText":"Copyright 2010-2022 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-time","authors":"Mike Bostock","version":"3.1.0","repository":"https://github.com/d3/d3-time.git","license":"ISC","licenseText":"Copyright 2010-2022 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-time-format","authors":"Mike Bostock","version":"4.1.0","repository":"https://github.com/d3/d3-time-format.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-timer","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-timer.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-zoom","authors":"Mike Bostock","version":"3.0.0","repository":"https://github.com/d3/d3-zoom.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-voronoi-map","authors":" Kcnarf ","version":"2.1.1","repository":"https://github.com/Kcnarf/d3-voronoi-map.git","license":"BSD-3-Clause","licenseText":"BSD 3-Clause License\n\nCopyright (c) 2018, LEBEAU Franck\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"@foliojs-fork/linebreak","authors":"Devon Govett ","version":"1.1.2","repository":"https://github.com/foliojs-fork/linebreaker.git","license":"MIT","licenseText":"MIT License\r\n\r\nCopyright (c) 2014-present Devon Govett\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n"},{"name":"@foliojs-fork/pdfkit","authors":"Devon Govett","version":"0.14.0","repository":"https://github.com/foliojs-fork/pdfkit.git","license":"MIT","licenseText":"MIT LICENSE\r\nCopyright (c) 2014 Devon Govett\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."},{"name":"iconv-lite","authors":"Alexander Shtuchkin ","version":"0.6.3","repository":"git://github.com/ashtuchkin/iconv-lite.git","license":"MIT","licenseText":"Copyright (c) 2011 Alexander Shtuchkin\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"},{"name":"xmldoc","authors":"Nick Farina","version":"1.3.0","repository":"git://github.com/nfarina/xmldoc.git","license":"MIT","licenseText":"Copyright 2012 Nick Farina.\nAll rights reserved.\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"tinyqueue","authors":null,"version":"2.0.3","repository":"https://github.com/mourner/tinyqueue.git","license":"ISC","licenseText":"ISC License\n\nCopyright (c) 2017, Vladimir Agafonkin\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"regenerator-runtime","authors":"Ben Newman ","version":"0.14.1","repository":"https://github.com/facebook/regenerator/tree/main/packages/runtime","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@babel/helper-module-imports","authors":"The Babel Team (https://babel.dev/team)","version":"7.22.15","repository":"https://github.com/babel/babel.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014-present Sebastian McKenzie and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@emotion/hash","authors":null,"version":"0.9.1","repository":"https://github.com/emotion-js/emotion/tree/main/packages/hash","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/memoize","authors":null,"version":"0.8.1","repository":"https://github.com/emotion-js/emotion/tree/main/packages/memoize","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"babel-plugin-macros","authors":"Kent C. Dodds (https://kentcdodds.com)","version":"3.1.0","repository":"https://github.com/kentcdodds/babel-plugin-macros","license":"MIT","licenseText":"The MIT License (MIT)\nCopyright (c) 2020 Kent C. Dodds\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"convert-source-map","authors":"Thorsten Lorenz","version":"2.0.0","repository":"git://github.com/thlorenz/convert-source-map.git","license":"MIT","licenseText":"Copyright 2013 Thorsten Lorenz. \nAll rights reserved.\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"escape-string-regexp","authors":"Sindre Sorhus","version":"4.0.0","repository":"sindresorhus/escape-string-regexp","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (https://sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"find-root","authors":"jsdnxx","version":"1.1.0","repository":"git@github.com:js-n/find-root.git","license":"MIT","licenseText":"Copyright © 2017 jsdnxx\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."},{"name":"source-map","authors":"Nick Fitzgerald ","version":"0.5.7","repository":"http://github.com/mozilla/source-map.git","license":"BSD-3-Clause","licenseText":"\nCopyright (c) 2009-2011, Mozilla Foundation and contributors\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the names of the Mozilla Foundation nor the names of project\n contributors may be used to endorse or promote products derived from this\n software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"stylis","authors":"Sultan Tarimo ","version":"4.2.0","repository":"https://github.com/thysultan/stylis.js","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2016-present Sultan Tarimo\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/sheet","authors":null,"version":"1.2.2","repository":"https://github.com/emotion-js/emotion/tree/main/packages/sheet","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/unitless","authors":null,"version":"0.8.1","repository":"https://github.com/emotion-js/emotion/tree/main/packages/unitless","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"object-assign","authors":"Sindre Sorhus","version":"4.1.1","repository":"sindresorhus/object-assign","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"@floating-ui/react-dom","authors":"atomiks","version":"2.0.8","repository":"https://github.com/floating-ui/floating-ui.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2021-present Floating UI contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@popperjs/core","authors":"Federico Zivolo ","version":"2.11.8","repository":"github:popperjs/popper-core","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2019 Federico Zivolo\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@types/prop-types","authors":"DovydasNavickas, Ferdy Budhidharma, Sebastian Silbermann","version":"15.7.11","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/react","authors":"Asana, AssureSign, Microsoft, John Reilly, Benoit Benezech, Patricio Zavolinsky, Eric Anderson, Dovydas Navickas, Josh Rutherford, Guilherme Hübner, Ferdy Budhidharma, Johann Rakotoharisoa, Olivier Pascal, Martin Hochel, Frank Li, Jessica Franco, Saransh Kataria, Kanitkorn Sujautra, Sebastian Silbermann, Kyle Scully, Cong Zhang, Dimitri Mitropoulos, JongChan Choi, Victor Magalhães, Dale Tan, Priyanshu Rav, Dmitry Semigradsky, Matt Pocock","version":"18.2.66","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"dom-helpers","authors":"Jason Quense","version":"5.2.1","repository":"git+https://github.com/react-bootstrap/dom-helpers.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Jason Quense\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."},{"name":"node-fetch","authors":"David Frank","version":"3.3.2","repository":"https://github.com/node-fetch/node-fetch.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2016 - 2020 Node Fetch Team\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"js-tokens","authors":"Simon Lydell","version":"4.0.0","repository":"lydell/js-tokens","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014, 2015, 2016, 2017, 2018 Simon Lydell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"void-elements","authors":"hemanth.hm","version":"3.1.0","repository":"pugjs/void-elements","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2014 hemanth\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@types/unist","authors":"bizen241, Jun Lu, Hernan Rajchert, Titus Wormer, Junyoung Choi, Ben Moon, JounQin, Remco Haszing","version":"3.0.2","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"dequal","authors":"Luke Edwards","version":"2.0.3","repository":"lukeed/dequal","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) Luke Edwards (lukeed.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"@types/estree","authors":"RReverser","version":"1.0.5","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"comma-separated-tokens","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.3","repository":"wooorm/comma-separated-tokens","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"estree-util-is-identifier-name","authors":"Titus Wormer (https://wooorm.com)","version":"3.0.0","repository":"syntax-tree/estree-util-is-identifier-name","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2020 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"hast-util-whitespace","authors":"Titus Wormer (https://wooorm.com)","version":"3.0.0","repository":"syntax-tree/hast-util-whitespace","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"mdast-util-mdx-expression","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"syntax-tree/mdast-util-mdx-expression","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2020 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"mdast-util-mdx-jsx","authors":"Titus Wormer (https://wooorm.com)","version":"3.1.2","repository":"syntax-tree/mdast-util-mdx-jsx","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2020 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"mdast-util-mdxjs-esm","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"syntax-tree/mdast-util-mdxjs-esm","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2020 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"property-information","authors":"Titus Wormer (https://wooorm.com)","version":"6.4.1","repository":"wooorm/property-information","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"space-separated-tokens","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.2","repository":"wooorm/space-separated-tokens","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"style-to-object","authors":"Mark ","version":"1.0.5","repository":"https://github.com/remarkablemark/style-to-object","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017 Menglin \"Mark\" Xu \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"unist-util-position","authors":"Titus Wormer (https://wooorm.com)","version":"5.0.0","repository":"syntax-tree/unist-util-position","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"vfile-message","authors":"Titus Wormer (https://wooorm.com)","version":"4.0.2","repository":"vfile/vfile-message","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2017 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@ungap/structured-clone","authors":"Andrea Giammarchi","version":"1.2.0","repository":"git+https://github.com/ungap/structured-clone.git","license":"ISC","licenseText":"ISC License\n\nCopyright (c) 2021, Andrea Giammarchi, @WebReflection\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted, provided that the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE\nOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n"},{"name":"micromark-util-sanitize-uri","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-sanitize-uri","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"trim-lines","authors":"Titus Wormer (https://wooorm.com)","version":"3.0.1","repository":"wooorm/trim-lines","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"mdast-util-from-markdown","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"syntax-tree/mdast-util-from-markdown","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2020 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"micromark-util-types","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-types","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"bail","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.2","repository":"wooorm/bail","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"extend","authors":"Stefan Thomas (http://www.justmoon.net)","version":"3.0.2","repository":"https://github.com/justmoon/node-extend.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Stefan Thomas\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"},{"name":"is-plain-obj","authors":"Sindre Sorhus","version":"4.1.0","repository":"sindresorhus/is-plain-obj","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (https://sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"trough","authors":"Titus Wormer (https://wooorm.com)","version":"2.2.0","repository":"wooorm/trough","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"unist-util-is","authors":"Titus Wormer (https://wooorm.com)","version":"6.0.0","repository":"syntax-tree/unist-util-is","license":"MIT","licenseText":"(The MIT license)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"unist-util-stringify-position","authors":"Titus Wormer (https://wooorm.com)","version":"4.0.0","repository":"syntax-tree/unist-util-stringify-position","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"hast-util-from-html","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"syntax-tree/hast-util-from-html","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2022 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"hast-util-from-dom","authors":"Keith McKnight (https://keith.mcknig.ht)","version":"5.0.0","repository":"syntax-tree/hast-util-from-dom","license":"ISC","licenseText":"(ISC License)\n\nCopyright (c) 2018 Keith McKnight \n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"unist-util-remove-position","authors":"Titus Wormer (https://wooorm.com)","version":"5.0.0","repository":"syntax-tree/unist-util-remove-position","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"hast-util-is-element","authors":"Titus Wormer (https://wooorm.com)","version":"3.0.0","repository":"syntax-tree/hast-util-is-element","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"unist-util-find-after","authors":"Titus Wormer (https://wooorm.com)","version":"5.0.0","repository":"syntax-tree/unist-util-find-after","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"commander","authors":"TJ Holowaychuk ","version":"7.2.0","repository":"https://github.com/tj/commander.js.git","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"longest-streak","authors":"Titus Wormer (https://wooorm.com)","version":"3.1.0","repository":"wooorm/longest-streak","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"mdast-util-to-markdown","authors":"Titus Wormer (https://wooorm.com)","version":"2.1.0","repository":"syntax-tree/mdast-util-to-markdown","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2020 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"micromark-factory-space","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-factory-space","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-character","authors":"Titus Wormer (https://wooorm.com)","version":"2.1.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-character","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-symbol","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-symbol","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"performance-now","authors":"Braveg1rl ","version":"2.1.0","repository":"git://github.com/braveg1rl/performance-now.git","license":"MIT","licenseText":"Copyright (c) 2013 Braveg1rl\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."},{"name":"internmap","authors":"Mike Bostock","version":"2.0.3","repository":"https://github.com/mbostock/internmap.git","license":"ISC","licenseText":"Copyright 2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"delaunator","authors":"Vladimir Agafonkin","version":"5.0.1","repository":"https://github.com/mapbox/delaunator.git","license":"ISC","licenseText":"ISC License\n\nCopyright (c) 2021, Mapbox\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"rw","authors":"Mike Bostock","version":"1.3.3","repository":"http://github.com/mbostock/rw.git","license":"BSD-3-Clause","licenseText":"Copyright (c) 2014-2016, Michael Bostock\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* The name Michael Bostock may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT,\nINDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\nBUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\nOF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\nEVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"d3-weighted-voronoi","authors":" Kcnarf ","version":"1.1.3","repository":"https://github.com/Kcnarf/d3-weighted-voronoi.git","license":"BSD-3-Clause","licenseText":"BSD 3-Clause License\n\nCopyright (c) 2018, LEBEAU Franck\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"base64-js","authors":"T. Jameson Little ","version":"1.3.1","repository":"git://github.com/beatgammit/base64-js.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Jameson Little\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"unicode-trie","authors":"Devon Govett ","version":"2.0.0","repository":"git://github.com/devongovett/unicode-trie.git","license":"MIT","licenseText":"Copyright 2018\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"},{"name":"crypto-js","authors":"Evan Vosberg","version":"4.2.0","repository":"http://github.com/brix/crypto-js.git","license":"MIT","licenseText":"# License\n\n[The MIT License (MIT)](http://opensource.org/licenses/MIT)\n\nCopyright (c) 2009-2013 Jeff Mott \nCopyright (c) 2013-2016 Evan Vosberg\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"@foliojs-fork/fontkit","authors":"Devon Govett ","version":"1.9.2","repository":"git://github.com/foliojs-fork/fontkit.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Devon Govett \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"png-js","authors":"Devon Govett","version":"1.0.0","repository":"https://github.com/devongovett/png.js.git","license":null,"licenseText":"MIT License\n\nCopyright (c) 2017 Devon Govett\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"safer-buffer","authors":"Nikita Skovoroda","version":"2.1.2","repository":"git+https://github.com/ChALkeR/safer-buffer.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2018 Nikita Skovoroda \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"sax","authors":"Isaac Z. Schlueter (http://blog.izs.me/)","version":"1.3.0","repository":"git://github.com/isaacs/sax-js.git","license":"ISC","licenseText":"The ISC License\n\nCopyright (c) 2010-2022 Isaac Z. Schlueter and Contributors\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted, provided that the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n====\n\n`String.fromCodePoint` by Mathias Bynens used according to terms of MIT\nLicense, as follows:\n\nCopyright (c) 2010-2022 Mathias Bynens \n\n Permission is hereby granted, free of charge, to any person obtaining\n a copy of this software and associated documentation files (the\n \"Software\"), to deal in the Software without restriction, including\n without limitation the rights to use, copy, modify, merge, publish,\n distribute, sublicense, and/or sell copies of the Software, and to\n permit persons to whom the Software is furnished to do so, subject to\n the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@babel/types","authors":"The Babel Team (https://babel.dev/team)","version":"7.24.0","repository":"https://github.com/babel/babel.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014-present Sebastian McKenzie and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"cosmiconfig","authors":"David Clark ","version":"7.1.0","repository":"git+https://github.com/davidtheclark/cosmiconfig.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 David Clark\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"resolve","authors":"James Halliday","version":"1.22.8","repository":"git://github.com/browserify/resolve.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2012 James Halliday\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@floating-ui/dom","authors":"atomiks","version":"1.6.3","repository":"https://github.com/floating-ui/floating-ui.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2021-present Floating UI contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@types/scheduler","authors":"Nathan Bierema, Sebastian Silbermann","version":"0.16.8","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"data-uri-to-buffer","authors":"Nathan Rajlich (http://n8.io/)","version":"4.0.1","repository":"git://github.com/TooTallNate/node-data-uri-to-buffer.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Nathan Rajlich (http://n8.io/)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"fetch-blob","authors":"Jimmy Wärting (https://jimmy.warting.se)","version":"3.2.0","repository":"https://github.com/node-fetch/fetch-blob.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 David Frank\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"formdata-polyfill","authors":"Jimmy Wärting","version":"4.0.10","repository":"git+https://jimmywarting@github.com/jimmywarting/FormData.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2016 Jimmy Karl Roland Wärting\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@types/estree-jsx","authors":"Tony Ross","version":"1.0.5","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"ccount","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"wooorm/ccount","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"parse-entities","authors":"Titus Wormer (https://wooorm.com)","version":"4.0.1","repository":"wooorm/parse-entities","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"stringify-entities","authors":"Titus Wormer (https://wooorm.com)","version":"4.0.3","repository":"wooorm/stringify-entities","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"inline-style-parser","authors":null,"version":"0.2.2","repository":"https://github.com/remarkablemark/inline-style-parser","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-encode","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-encode","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"decode-named-character-reference","authors":"Titus Wormer (https://wooorm.com)","version":"1.0.2","repository":"wooorm/decode-named-character-reference","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2021 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"mdast-util-to-string","authors":"Titus Wormer (https://wooorm.com)","version":"4.0.0","repository":"syntax-tree/mdast-util-to-string","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"micromark","authors":"Titus Wormer (https://wooorm.com)","version":"4.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-decode-numeric-character-reference","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-decode-numeric-character-reference","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-decode-string","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-decode-string","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-normalize-identifier","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-normalize-identifier","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"hast-util-from-parse5","authors":"Titus Wormer (https://wooorm.com)","version":"8.0.1","repository":"syntax-tree/hast-util-from-parse5","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"parse5","authors":"Ivan Nikulin (https://github.com/inikulin)","version":"7.1.2","repository":"git://github.com/inikulin/parse5.git","license":"MIT","licenseText":"Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"hastscript","authors":"Titus Wormer (https://wooorm.com)","version":"8.0.0","repository":"syntax-tree/hastscript","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"web-namespaces","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"wooorm/web-namespaces","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"mdast-util-phrasing","authors":"Victor Felder (https://draft.li)","version":"4.1.0","repository":"syntax-tree/mdast-util-phrasing","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2017 Titus Wormer \nCopyright (c) 2017 Victor Felder \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"zwitch","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.4","repository":"wooorm/zwitch","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"robust-predicates","authors":"Vladimir Agafonkin","version":"3.0.2","repository":"https://github.com/mourner/robust-predicates.git","license":"Unlicense","licenseText":"This is free and unencumbered software released into the public domain.\n\nAnyone is free to copy, modify, publish, use, compile, sell, or\ndistribute this software, either in source code form or as a compiled\nbinary, for any purpose, commercial or non-commercial, and by any\nmeans.\n\nIn jurisdictions that recognize copyright laws, the author or authors\nof this software dedicate any and all copyright interest in the\nsoftware to the public domain. We make this dedication for the benefit\nof the public at large and to the detriment of our heirs and\nsuccessors. We intend this dedication to be an overt act of\nrelinquishment in perpetuity of all present and future rights to this\nsoftware under copyright law.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\nOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\nARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\nFor more information, please refer to \n"},{"name":"pako","authors":"Andrei Tuputcyn (https://github.com/andr83), Vitaly Puzrin (https://github.com/puzrin)","version":"0.2.9","repository":"nodeca/pako","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (C) 2014-2016 by Vitaly Puzrin\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"tiny-inflate","authors":"Devon Govett ","version":"1.0.3","repository":"git://github.com/devongovett/tiny-inflate.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2015-present Devon Govett\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"brotli","authors":"Devon Govett ","version":"1.3.3","repository":"https://github.com/devongovett/brotli.js.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Devon Govett \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"clone","authors":"Paul Vorbach (http://paul.vorba.ch/)","version":"1.0.4","repository":"git://github.com/pvorb/node-clone.git","license":"MIT","licenseText":"Copyright © 2011-2015 Paul Vorbach \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the “Software”), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"deep-equal","authors":"James Halliday","version":"2.2.3","repository":"http://github.com/inspect-js/node-deep-equal.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2012, 2013, 2014 James Halliday , 2009 Thomas Robinson <280north.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"dfa","authors":"Devon Govett ","version":"1.2.0","repository":"git+ssh://git@github.com/devongovett/dfa.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Devon Govett \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@foliojs-fork/restructure","authors":"Devon Govett ","version":"2.0.2","repository":"git://github.com/foliojs-fork/restructure.git","license":"MIT","licenseText":"MIT License\r\n\r\nCopyright (c) 2015-present Devon Govett\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n"},{"name":"unicode-properties","authors":"Devon Govett ","version":"1.4.1","repository":"git://github.com/devongovett/unicode-properties.git","license":"MIT","licenseText":"Copyright 2018\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"},{"name":"@babel/helper-string-parser","authors":"The Babel Team (https://babel.dev/team)","version":"7.23.4","repository":"https://github.com/babel/babel.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014-present Sebastian McKenzie and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@babel/helper-validator-identifier","authors":"The Babel Team (https://babel.dev/team)","version":"7.22.20","repository":"https://github.com/babel/babel.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014-present Sebastian McKenzie and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"to-fast-properties","authors":"Sindre Sorhus","version":"2.0.0","repository":"sindresorhus/to-fast-properties","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014 Petka Antonov\n 2015 Sindre Sorhus\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@types/parse-json","authors":"mrmlnc","version":"4.0.2","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"import-fresh","authors":"Sindre Sorhus","version":"3.3.0","repository":"sindresorhus/import-fresh","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (https://sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"parse-json","authors":"Sindre Sorhus","version":"5.2.0","repository":"sindresorhus/parse-json","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (https://sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"path-type","authors":"Sindre Sorhus","version":"4.0.0","repository":"sindresorhus/path-type","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"yaml","authors":"Eemeli Aro ","version":"1.10.2","repository":"github:eemeli/yaml","license":"ISC","licenseText":"Copyright 2018 Eemeli Aro \n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"is-core-module","authors":"Jordan Harband ","version":"2.13.1","repository":"git+https://github.com/inspect-js/is-core-module.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Dave Justice\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."},{"name":"path-parse","authors":"Javier Blanco ","version":"1.0.7","repository":"https://github.com/jbgutierrez/path-parse.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Javier Blanco\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"supports-preserve-symlinks-flag","authors":"Jordan Harband ","version":"1.0.0","repository":"git+https://github.com/inspect-js/node-supports-preserve-symlinks-flag.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2022 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@floating-ui/core","authors":"atomiks","version":"1.6.0","repository":"https://github.com/floating-ui/floating-ui.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2021-present Floating UI contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@floating-ui/utils","authors":"atomiks","version":"0.2.1","repository":"https://github.com/floating-ui/floating-ui.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2021-present Floating UI contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"node-domexception","authors":"Jimmy Wärting","version":"1.0.0","repository":"git+https://github.com/jimmywarting/node-domexception.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2021 Jimmy Wärting\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"web-streams-polyfill","authors":"Mattias Buelens ","version":"3.3.3","repository":"git+https://github.com/MattiasBuelens/web-streams-polyfill.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2024 Mattias Buelens\nCopyright (c) 2016 Diwank Singh Tomer\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"character-entities","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.2","repository":"wooorm/character-entities","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"character-entities-legacy","authors":"Titus Wormer (https://wooorm.com)","version":"3.0.0","repository":"wooorm/character-entities-legacy","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"character-reference-invalid","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"wooorm/character-reference-invalid","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"is-alphanumerical","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"wooorm/is-alphanumerical","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"is-decimal","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"wooorm/is-decimal","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"is-hexadecimal","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"wooorm/is-hexadecimal","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"character-entities-html4","authors":"Titus Wormer (https://wooorm.com)","version":"2.1.0","repository":"wooorm/character-entities-html4","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@types/debug","authors":"Seon-Wook Park, Gal Talmor, John McLaughlin, Brasten Sager, Nicolas Penin, Kristian Brünn, Caleb Gregory","version":"4.1.12","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"debug","authors":"Josh Junon ","version":"4.3.4","repository":"git://github.com/debug-js/debug.git","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2014-2017 TJ Holowaychuk \nCopyright (c) 2018-2021 Josh Junon\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the 'Software'), to deal in the Software without restriction,\nincluding without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial\nportions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\nLIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"},{"name":"micromark-core-commonmark","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-core-commonmark","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-chunked","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-chunked","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-combine-extensions","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-combine-extensions","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-resolve-all","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-resolve-all","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-subtokenize","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-subtokenize","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"vfile-location","authors":"Titus Wormer (https://wooorm.com)","version":"5.0.2","repository":"vfile/vfile-location","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"entities","authors":"Felix Boehm ","version":"4.5.0","repository":"git://github.com/fb55/entities.git","license":"BSD-2-Clause","licenseText":"Copyright (c) Felix Böhm\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\nRedistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\nRedistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\nTHIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,\nEVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"hast-util-parse-selector","authors":"Titus Wormer (https://wooorm.com)","version":"4.0.0","repository":"syntax-tree/hast-util-parse-selector","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"array-buffer-byte-length","authors":"Jordan Harband ","version":"1.0.1","repository":"git+https://github.com/inspect-js/array-buffer-byte-length.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2023 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"call-bind","authors":"Jordan Harband ","version":"1.0.7","repository":"git+https://github.com/ljharb/call-bind.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2020 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"es-get-iterator","authors":"Jordan Harband ","version":"1.1.3","repository":"git+https://github.com/ljharb/es-get-iterator.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"get-intrinsic","authors":"Jordan Harband ","version":"1.2.4","repository":"git+https://github.com/ljharb/get-intrinsic.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2020 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-arguments","authors":"Jordan Harband","version":"1.1.1","repository":"git://github.com/inspect-js/is-arguments.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"is-array-buffer","authors":"Jordan Harband ","version":"3.0.4","repository":"git+https://github.com/inspect-js/is-array-buffer.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2015 Chen Gengyuan, Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-date-object","authors":"Jordan Harband","version":"1.0.5","repository":"git://github.com/inspect-js/is-date-object.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"is-regex","authors":"Jordan Harband ","version":"1.1.4","repository":"git://github.com/inspect-js/is-regex.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"is-shared-array-buffer","authors":"Jordan Harband","version":"1.0.3","repository":"git+https://github.com/inspect-js/is-shared-array-buffer.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2021 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"isarray","authors":"Julian Gruber","version":"2.0.5","repository":"git://github.com/juliangruber/isarray.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2013 Julian Gruber \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"object-is","authors":"Jordan Harband","version":"1.1.6","repository":"git://github.com/es-shims/object-is.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"object-keys","authors":"Jordan Harband","version":"1.1.1","repository":"git://github.com/ljharb/object-keys.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (C) 2013 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."},{"name":"object.assign","authors":"Jordan Harband","version":"4.1.5","repository":"git://github.com/ljharb/object.assign.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."},{"name":"regexp.prototype.flags","authors":"Jordan Harband ","version":"1.5.2","repository":"git://github.com/es-shims/RegExp.prototype.flags.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (C) 2014 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n"},{"name":"side-channel","authors":"Jordan Harband ","version":"1.0.6","repository":"git+https://github.com/ljharb/side-channel.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"which-boxed-primitive","authors":"Jordan Harband ","version":"1.0.2","repository":"git+https://github.com/inspect-js/which-boxed-primitive.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"which-collection","authors":"Jordan Harband ","version":"1.0.2","repository":"git+https://github.com/inspect-js/which-collection.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"which-typed-array","authors":"Jordan Harband","version":"1.1.15","repository":"git://github.com/inspect-js/which-typed-array.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"parent-module","authors":"Sindre Sorhus","version":"1.0.1","repository":"sindresorhus/parent-module","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"resolve-from","authors":"Sindre Sorhus","version":"4.0.0","repository":"sindresorhus/resolve-from","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@babel/code-frame","authors":"The Babel Team (https://babel.dev/team)","version":"7.23.5","repository":"https://github.com/babel/babel.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014-present Sebastian McKenzie and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"error-ex","authors":"Josh Junon (github.com/qix-), Sindre Sorhus (sindresorhus.com)","version":"1.3.2","repository":"qix-/node-error-ex","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 JD Ballard\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"json-parse-even-better-errors","authors":"Kat Marchán","version":"2.3.1","repository":"https://github.com/npm/json-parse-even-better-errors","license":"MIT","licenseText":"Copyright 2017 Kat Marchán\nCopyright npm, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction, including without limitation\nthe rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n\n---\n\nThis library is a fork of 'better-json-errors' by Kat Marchán, extended and\ndistributed under the terms of the MIT license above.\n"},{"name":"lines-and-columns","authors":"Brian Donovan ","version":"1.2.4","repository":"https://github.com/eventualbuddha/lines-and-columns.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Brian Donovan\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"hasown","authors":"Jordan Harband ","version":"2.0.2","repository":"git+https://github.com/inspect-js/hasOwn.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Jordan Harband and contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-alphabetical","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"wooorm/is-alphabetical","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@types/ms","authors":"Zhiyuan Wang","version":"0.7.34","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"ms","authors":null,"version":"2.1.2","repository":"zeit/ms","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2016 Zeit, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-factory-destination","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-factory-destination","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-factory-label","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-factory-label","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-factory-title","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-factory-title","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-factory-whitespace","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-factory-whitespace","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-classify-character","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-classify-character","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-html-tag-name","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-html-tag-name","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"es-define-property","authors":"Jordan Harband ","version":"1.0.0","repository":"git+https://github.com/ljharb/es-define-property.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"es-errors","authors":"Jordan Harband ","version":"1.3.0","repository":"git+https://github.com/ljharb/es-errors.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"function-bind","authors":"Raynos ","version":"1.1.2","repository":"https://github.com/Raynos/function-bind.git","license":"MIT","licenseText":"Copyright (c) 2013 Raynos.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n"},{"name":"set-function-length","authors":"Jordan Harband ","version":"1.2.2","repository":"git+https://github.com/ljharb/set-function-length.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Jordan Harband and contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"has-symbols","authors":"Jordan Harband","version":"1.0.3","repository":"git://github.com/inspect-js/has-symbols.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2016 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-map","authors":"Jordan Harband ","version":"2.0.3","repository":"git+https://github.com/inspect-js/is-map.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-set","authors":"Jordan Harband ","version":"2.0.3","repository":"git+https://github.com/inspect-js/is-set.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-string","authors":"Jordan Harband ","version":"1.0.7","repository":"git://github.com/ljharb/is-string.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"stop-iteration-iterator","authors":"Jordan Harband ","version":"1.0.0","repository":"git+https://github.com/ljharb/stop-iteration-iterator.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2023 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"has-proto","authors":"Jordan Harband ","version":"1.0.3","repository":"git+https://github.com/inspect-js/has-proto.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2022 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"has-tostringtag","authors":"Jordan Harband","version":"1.0.2","repository":"git+https://github.com/inspect-js/has-tostringtag.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2021 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"define-properties","authors":"Jordan Harband ","version":"1.2.1","repository":"git://github.com/ljharb/define-properties.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (C) 2015 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."},{"name":"set-function-name","authors":"Jordan Harband ","version":"2.0.2","repository":"git+https://github.com/ljharb/set-function-name.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Jordan Harband and contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"object-inspect","authors":"James Halliday","version":"1.13.1","repository":"git://github.com/inspect-js/object-inspect.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2013 James Halliday\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-bigint","authors":"Jordan Harband ","version":"1.0.4","repository":"git+https://github.com/inspect-js/is-bigint.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2018 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-boolean-object","authors":"Jordan Harband ","version":"1.1.2","repository":"git://github.com/inspect-js/is-boolean-object.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"is-number-object","authors":"Jordan Harband ","version":"1.0.7","repository":"git://github.com/inspect-js/is-number-object.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"is-symbol","authors":"Jordan Harband ","version":"1.0.4","repository":"git://github.com/inspect-js/is-symbol.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"is-weakmap","authors":"Jordan Harband ","version":"2.0.2","repository":"git+https://github.com/inspect-js/is-weakmap.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-weakset","authors":"Jordan Harband ","version":"2.0.3","repository":"git+https://github.com/inspect-js/is-weakset.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"available-typed-arrays","authors":"Jordan Harband ","version":"1.0.7","repository":"git+https://github.com/inspect-js/available-typed-arrays.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2020 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"for-each","authors":"Raynos ","version":"0.3.3","repository":"git://github.com/Raynos/for-each.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2012 Raynos.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"gopd","authors":"Jordan Harband ","version":"1.0.1","repository":"git+https://github.com/ljharb/gopd.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2022 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"callsites","authors":"Sindre Sorhus","version":"3.1.0","repository":"sindresorhus/callsites","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@babel/highlight","authors":"The Babel Team (https://babel.dev/team)","version":"7.23.4","repository":"https://github.com/babel/babel.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014-present Sebastian McKenzie and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"chalk","authors":null,"version":"2.4.2","repository":"chalk/chalk","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"is-arrayish","authors":"Qix (http://github.com/qix-)","version":"0.2.1","repository":"https://github.com/qix-/node-is-arrayish.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 JD Ballard\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"define-data-property","authors":"Jordan Harband ","version":"1.1.4","repository":"git+https://github.com/ljharb/define-data-property.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2023 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"has-property-descriptors","authors":"Jordan Harband ","version":"1.0.2","repository":"git+https://github.com/inspect-js/has-property-descriptors.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2022 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"internal-slot","authors":"Jordan Harband ","version":"1.0.7","repository":"git+https://github.com/ljharb/internal-slot.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"functions-have-names","authors":"Jordan Harband ","version":"1.2.3","repository":"git+https://github.com/inspect-js/functions-have-names.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"has-bigints","authors":"Jordan Harband ","version":"1.0.2","repository":"git+https://github.com/ljharb/has-bigints.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"possible-typed-array-names","authors":"Jordan Harband ","version":"1.0.0","repository":"git+https://github.com/ljharb/possible-typed-array-names.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-callable","authors":"Jordan Harband","version":"1.2.7","repository":"git://github.com/inspect-js/is-callable.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"ansi-styles","authors":"Sindre Sorhus","version":"3.2.1","repository":"chalk/ansi-styles","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"supports-color","authors":"Sindre Sorhus","version":"5.5.0","repository":"chalk/supports-color","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"color-convert","authors":"Heather Arthur ","version":"1.9.3","repository":"Qix-/color-convert","license":"MIT","licenseText":"Copyright (c) 2011-2016 Heather Arthur \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"},{"name":"has-flag","authors":"Sindre Sorhus","version":"3.0.0","repository":"sindresorhus/has-flag","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"color-name","authors":"DY ","version":"1.1.3","repository":"git@github.com:dfcreative/color-name.git","license":"MIT","licenseText":"The MIT License (MIT)\r\nCopyright (c) 2015 Dmitry Ivanov\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."}] \ No newline at end of file +[{"name":"@amcharts/amcharts5","authors":"amCharts (https://www.amcharts.com/)","version":"5.8.4","repository":"https://github.com/amcharts/amcharts5.git","license":"SEE LICENSE IN LICENSE","licenseText":"## Free amCharts license\n\nThis amCharts software is copyrighted by Antanas Marcelionis.\n\nThis amCharts software is provided under linkware license, conditions of which are outlined below.\n\n### You can\n\n* Use amCharts software in any of your projects, including commercial.\n* Modify amCharts software to suit your needs (source code is available at [here](https://github.com/amcharts/amcharts5)).\n* Bundle amCharts software with your own projects (free, open source, or commercial).\n\n### If the following conditions are met\n\n* You do not disable, hide or alter the branding link which is displayed on all the content generated by amCharts software.\n* You include this original LICENSE file together with original (or modified) files from amCharts software.\n* Your own personal license does not supersede or in any way negate the effect of this LICENSE, or make the impression of doing so.\n\n### You can't\n\n* Remove or alter this LICENSE file.\n* Remove any of the amCharts copyright notices from any of the files of amCharts software.\n* Use amCharts software without built-in attribution (logo). Please see note about commercial amCharts licenses below.\n* Sell or receive any compensation for amCharts software.\n* Distribute amCharts software on its own, not as part of other application.\n\n### The above does not suit you?\n\namCharts provides commercial licenses for purchase for various usage scenarios that are not covered by the above conditions.\n\nPlease refer to [this web page](https://www.amcharts.com/online-store/) or [contact amCharts support](mailto:contact@amcharts.com) for further information.\n\n### In doubt?\n\n[Contact amCharts](mailto:contact@amcharts.com). We'll be happy to sort you out."},{"name":"@emotion/react","authors":"Emotion Contributors","version":"11.11.4","repository":"https://github.com/emotion-js/emotion/tree/main/packages/react","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/styled","authors":null,"version":"11.11.0","repository":"https://github.com/emotion-js/emotion/tree/main/packages/styled","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/icons-material","authors":"MUI Team","version":"5.15.13","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/lab","authors":"MUI Team","version":"5.0.0-alpha.170","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/material","authors":"MUI Team","version":"5.15.13","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/system","authors":"MUI Team","version":"5.15.15","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/x-date-pickers","authors":"MUI Team","version":"6.20.0","repository":"https://github.com/mui/mui-x.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2020 Material-UI SAS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@reduxjs/toolkit","authors":"Mark Erikson ","version":"2.2.1","repository":"git+https://github.com/reduxjs/redux-toolkit.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2018 Mark Erikson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@types/geojson","authors":"Jacob Bruun, Arne Schubert, Jeff Jacobson, Ilia Choly, Dan Vanderkam","version":"7946.0.14","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"country-flag-icons","authors":"catamphetamine ","version":"1.5.9","repository":"git+https://gitlab.com/catamphetamine/country-flag-icons.git","license":"MIT","licenseText":"(The MIT License)\r\n\r\nCopyright (c) 2020 @catamphetamine \r\n\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of this software and associated documentation files (the\r\n'Software'), to deal in the Software without restriction, including\r\nwithout limitation the rights to use, copy, modify, merge, publish,\r\ndistribute, sublicense, and/or sell copies of the Software, and to\r\npermit persons to whom the Software is furnished to do so, subject to\r\nthe following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."},{"name":"dayjs","authors":"iamkun","version":"1.11.10","repository":"https://github.com/iamkun/dayjs.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2018-present, iamkun\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"i18next","authors":"Jan Mühlemann (https://github.com/jamuhl)","version":"23.10.1","repository":"https://github.com/i18next/i18next.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2024 i18next\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"i18next-browser-languagedetector","authors":"Jan Mühlemann (https://github.com/jamuhl)","version":"7.2.0","repository":"https://github.com/i18next/i18next-browser-languageDetector.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2023 i18next\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"i18next-http-backend","authors":null,"version":"2.5.0","repository":"git@github.com:i18next/i18next-http-backend.git","license":"MIT","licenseText":"Copyright (c) 2023 i18next\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"json5","authors":"Aseem Kishore ","version":"2.2.3","repository":"git+https://github.com/json5/json5.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2012-2018 Aseem Kishore, and [others].\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n[others]: https://github.com/json5/json5/contributors\n"},{"name":"react","authors":null,"version":"18.3.1","repository":"https://github.com/facebook/react.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Facebook, Inc. and its affiliates.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"react-dom","authors":null,"version":"18.3.1","repository":"https://github.com/facebook/react.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Facebook, Inc. and its affiliates.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"react-i18next","authors":"Jan Mühlemann (https://github.com/jamuhl)","version":"13.5.0","repository":"https://github.com/i18next/react-i18next.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2023 i18next\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"react-lazyload","authors":"jasonslyvia (http://undefinedblog.com/)","version":"3.2.0","repository":"https://github.com/jasonslyvia/react-lazyload.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Sen Yang\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"react-markdown","authors":"Espen Hovlandsdal ","version":"9.0.1","repository":"remarkjs/react-markdown","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Espen Hovlandsdal\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"react-redux","authors":"Dan Abramov (https://github.com/gaearon)","version":"9.1.0","repository":"github:reduxjs/react-redux","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015-present Dan Abramov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"react-scroll-sync","authors":"Andrey Okonetchnikov ","version":"0.11.2","repository":"https://github.com/okonet/react-scroll-sync.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2016 Andrey Okonetchnikov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"redux","authors":"Dan Abramov (https://github.com/gaearon), Andrew Clark (https://github.com/acdlite)","version":"5.0.1","repository":"github:reduxjs/redux","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015-present Dan Abramov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"redux-persist","authors":null,"version":"6.0.0","repository":"rt2zz/redux-persist","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2017 Zack Story\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"rehype-katex","authors":"Junyoung Choi (https://rokt33r.github.io)","version":"7.0.0","repository":"https://github.com/remarkjs/remark-math/tree/main/packages/rehype-katex","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Junyoung Choi (https://rokt33r.github.io)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"remark-math","authors":"Junyoung Choi (https://rokt33r.github.io)","version":"6.0.0","repository":"https://github.com/remarkjs/remark-math/tree/main/packages/remark-math","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Junyoung Choi (https://rokt33r.github.io)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"rooks","authors":null,"version":"7.14.1","repository":"https://github.com/imbhargav5/rooks.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@types/d3","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema, Fil","version":"7.4.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-chord","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"3.0.6","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-hierarchy","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema, Fil","version":"3.1.1","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-sankey","authors":"Tom Wanzek, Alex Ford","version":"0.11.2","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-shape","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema, Fil","version":"3.1.6","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/polylabel","authors":"Denis Carriere","version":"1.1.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/svg-arc-to-cubic-bezier","authors":"Fabien Caylus","version":"3.2.2","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"d3","authors":"Mike Bostock","version":"7.9.0","repository":"https://github.com/d3/d3.git","license":"ISC","licenseText":"Copyright 2010-2023 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-chord","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-chord.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-geo","authors":"Mike Bostock","version":"3.1.1","repository":"https://github.com/d3/d3-geo.git","license":"ISC","licenseText":"Copyright 2010-2024 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n\nThis license applies to GeographicLib, versions 1.12 and later.\n\nCopyright 2008-2012 Charles Karney\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"d3-sankey","authors":"Mike Bostock","version":"0.12.3","repository":"https://github.com/d3/d3-sankey.git","license":"BSD-3-Clause","licenseText":"Copyright 2015, Mike Bostock\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the author nor the names of contributors may be used to\n endorse or promote products derived from this software without specific prior\n written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"d3-selection","authors":"Mike Bostock","version":"3.0.0","repository":"https://github.com/d3/d3-selection.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-transition","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-transition.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-voronoi-treemap","authors":" Kcnarf ","version":"1.1.2","repository":"https://github.com/Kcnarf/d3-voronoi-treemap.git","license":"BSD-3-Clause","licenseText":"BSD 3-Clause License\n\nCopyright (c) 2018, LEBEAU Franck\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"flatpickr","authors":"Gregory ","version":"4.6.13","repository":"git+https://github.com/chmln/flatpickr.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017 Gregory Petrosyan\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"markerjs2","authors":"Alan Mendelevich","version":"2.32.1","repository":"https://github.com/ailon/markerjs2","license":"SEE LICENSE IN LICENSE","licenseText":"marker.js 2 Linkware License\r\n\r\nCopyright (c) 2020 Alan Mendelevich\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\n1. The above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\n2. Link back to the Software website displayed during operation of the Software\r\nor an equivalent prominent public attribution must be retained. Alternative \r\ncommercial licenses can be obtained to remove this clause.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE."},{"name":"pdfmake","authors":"Bartek Pampuch ","version":"0.2.10","repository":"git://github.com/bpampuch/pdfmake.git","license":"MIT","licenseText":"The MIT License (MIT)\r\n\r\nCopyright (c) 2014-2015 bpampuch\r\n 2016-2024 liborm85\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy of\r\nthis software and associated documentation files (the \"Software\"), to deal in\r\nthe Software without restriction, including without limitation the rights to\r\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\r\nthe Software, and to permit persons to whom the Software is furnished to do so,\r\nsubject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\r\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n"},{"name":"polylabel","authors":"Vladimir Agafonkin","version":"1.1.0","repository":null,"license":"ISC","licenseText":"ISC License\nCopyright (c) 2016 Mapbox\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD TO\nTHIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.\nIN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR\nCONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA\nOR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS\nACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS\nSOFTWARE.\n"},{"name":"seedrandom","authors":"David Bau","version":"3.0.5","repository":"git://github.com/davidbau/seedrandom.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 David Bau\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"svg-arc-to-cubic-bezier","authors":"Colin Meinke","version":"3.2.0","repository":"https://github.com/colinmeinke/svg-arc-to-cubic-bezier","license":"ISC","licenseText":"Internet Systems Consortium license\n===================================\n\nCopyright (c) `2017`, `Colin Meinke`\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"tslib","authors":"Microsoft Corp.","version":"2.6.2","repository":"https://github.com/Microsoft/tslib.git","license":"0BSD","licenseText":"Copyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE."},{"name":"@babel/runtime","authors":"The Babel Team (https://babel.dev/team)","version":"7.24.0","repository":"https://github.com/babel/babel.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014-present Sebastian McKenzie and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@emotion/babel-plugin","authors":"Kye Hohenberger","version":"11.11.0","repository":"https://github.com/emotion-js/emotion/tree/main/packages/babel-plugin","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/cache","authors":null,"version":"11.11.0","repository":"https://github.com/emotion-js/emotion/tree/main/packages/cache","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/serialize","authors":null,"version":"1.1.3","repository":"https://github.com/emotion-js/emotion/tree/main/packages/serialize","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/use-insertion-effect-with-fallbacks","authors":null,"version":"1.0.1","repository":"https://github.com/emotion-js/emotion/tree/main/packages/use-insertion-effect-with-fallbacks","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/utils","authors":null,"version":"1.2.1","repository":"https://github.com/emotion-js/emotion/tree/main/packages/utils","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/weak-memoize","authors":null,"version":"0.3.1","repository":"https://github.com/emotion-js/emotion/tree/main/packages/weak-memoize","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"hoist-non-react-statics","authors":"Michael Ridgway ","version":"3.3.2","repository":"git://github.com/mridgway/hoist-non-react-statics.git","license":"BSD-3-Clause","licenseText":"Software License Agreement (BSD License)\n========================================\n\nCopyright (c) 2015, Yahoo! Inc. All rights reserved.\n----------------------------------------------------\n\nRedistribution and use of this software in source and binary forms, with or\nwithout modification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n * Neither the name of Yahoo! Inc. nor the names of YUI's contributors may be\n used to endorse or promote products derived from this software without\n specific prior written permission of Yahoo! Inc.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"@emotion/is-prop-valid","authors":null,"version":"1.2.2","repository":"https://github.com/emotion-js/emotion/tree/main/packages/is-prop-valid","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"clsx","authors":"Luke Edwards","version":"2.1.0","repository":"lukeed/clsx","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Luke Edwards (lukeed.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"prop-types","authors":null,"version":"15.8.1","repository":"facebook/prop-types","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2013-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/types","authors":"MUI Team","version":"7.2.14","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/utils","authors":"MUI Team","version":"5.15.14","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/base","authors":"MUI Team","version":"5.0.0-beta.39","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@types/react-transition-group","authors":"Karol Janyst, Epskampie, Masafumi Koba, Ben Grynhaus","version":"4.4.10","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"csstype","authors":"Fredrik Nicol ","version":"3.1.3","repository":"https://github.com/frenic/csstype","license":"MIT","licenseText":"Copyright (c) 2017-2018 Fredrik Nicol\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"react-is","authors":null,"version":"18.2.0","repository":"https://github.com/facebook/react.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Facebook, Inc. and its affiliates.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"react-transition-group","authors":null,"version":"4.4.5","repository":"https://github.com/reactjs/react-transition-group.git","license":"BSD-3-Clause","licenseText":"BSD 3-Clause License\n\nCopyright (c) 2018, React Community\nForked from React (https://github.com/facebook/react) Copyright 2013-present, Facebook, Inc.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"@mui/core-downloads-tracker","authors":"MUI Team","version":"5.15.13","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/private-theming","authors":"MUI Team","version":"5.15.14","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@mui/styled-engine","authors":"MUI Team","version":"5.15.14","repository":"https://github.com/mui/material-ui.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Call-Em-All\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"immer","authors":"Michel Weststrate ","version":"10.0.4","repository":"https://github.com/immerjs/immer.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2017 Michel Weststrate\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"redux-thunk","authors":"Dan Abramov ","version":"3.1.0","repository":"github:reduxjs/redux-thunk","license":"MIT","licenseText":"The MIT License (MIT)\r\n\r\nCopyright (c) 2015-present Dan Abramov\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n"},{"name":"reselect","authors":"Lee Bannard, Robert Binna, Martijn Faassen, Philip Spitzlinger","version":"5.1.0","repository":"https://github.com/reduxjs/reselect.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015-2018 Reselect Contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"cross-fetch","authors":"Leonardo Quixada ","version":"4.0.0","repository":"https://github.com/lquixada/cross-fetch.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017 Leonardo Quixadá\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"loose-envify","authors":"Andres Suarez ","version":"1.4.0","repository":"git://github.com/zertosh/loose-envify.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Andres Suarez \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"scheduler","authors":null,"version":"0.23.2","repository":"https://github.com/facebook/react.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Facebook, Inc. and its affiliates.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"html-parse-stringify","authors":"Henrik Joreteg ","version":"3.0.1","repository":"https://github.com/henrikjoreteg/html-parse-stringify","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Henrik Joreteg \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@types/hast","authors":"lukeggchapman, Junyoung Choi, Christian Murphy, Remco Haszing","version":"3.0.4","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"devlop","authors":"Titus Wormer (https://wooorm.com)","version":"1.1.0","repository":"wooorm/devlop","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2023 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"hast-util-to-jsx-runtime","authors":"Titus Wormer (https://wooorm.com)","version":"2.3.0","repository":"syntax-tree/hast-util-to-jsx-runtime","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2023 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"html-url-attributes","authors":"Titus Wormer (https://wooorm.com)","version":"3.0.0","repository":"https://github.com/rehypejs/rehype-minify/tree/main/packages/html-url-attributes","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"mdast-util-to-hast","authors":"Titus Wormer (https://wooorm.com)","version":"13.1.0","repository":"syntax-tree/mdast-util-to-hast","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"remark-parse","authors":"Titus Wormer (https://wooorm.com)","version":"11.0.0","repository":"https://github.com/remarkjs/remark/tree/main/packages/remark-parse","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2014 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"remark-rehype","authors":"Titus Wormer (https://wooorm.com)","version":"11.1.0","repository":"remarkjs/remark-rehype","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"unified","authors":"Titus Wormer (https://wooorm.com)","version":"11.0.4","repository":"unifiedjs/unified","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"unist-util-visit","authors":"Titus Wormer (https://wooorm.com)","version":"5.0.0","repository":"syntax-tree/unist-util-visit","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"vfile","authors":"Titus Wormer (https://wooorm.com)","version":"6.0.1","repository":"vfile/vfile","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"@types/use-sync-external-store","authors":"eps1lon, Mark Erikson","version":"0.0.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"use-sync-external-store","authors":null,"version":"1.2.0","repository":"https://github.com/facebook/react.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Facebook, Inc. and its affiliates.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@types/katex","authors":"Michael Randolph, Kevin Nguyen, bLue, Sebastian Weigand, sapphi-red, Stefaans","version":"0.16.7","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"hast-util-from-html-isomorphic","authors":"Remco Haszing ","version":"2.0.0","repository":"syntax-tree/hast-util-from-html-isomorphic","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2023 Remco Haszing \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"hast-util-to-text","authors":"Titus Wormer (https://wooorm.com)","version":"4.0.0","repository":"syntax-tree/hast-util-to-text","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2019 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"katex","authors":null,"version":"0.16.10","repository":"https://github.com/KaTeX/KaTeX.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2013-2020 Khan Academy and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"unist-util-visit-parents","authors":"Titus Wormer (https://wooorm.com)","version":"6.0.1","repository":"syntax-tree/unist-util-visit-parents","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@types/mdast","authors":"Christian Murphy, Jun Lu, Remco Haszing, Titus Wormer, Remco Haszing","version":"4.0.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"mdast-util-math","authors":"Titus Wormer (https://wooorm.com)","version":"3.0.0","repository":"syntax-tree/mdast-util-math","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2020 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"micromark-extension-math","authors":"Titus Wormer (https://wooorm.com)","version":"3.0.0","repository":"micromark/micromark-extension-math","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2020 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"fast-deep-equal","authors":"Evgeny Poberezkin","version":"3.1.3","repository":"git+https://github.com/epoberezkin/fast-deep-equal.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2017 Evgeny Poberezkin\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"lodash.debounce","authors":"John-David Dalton (http://allyoucanleet.com/)","version":"4.0.8","repository":"lodash/lodash","license":"MIT","licenseText":"Copyright jQuery Foundation and other contributors \n\nBased on Underscore.js, copyright Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors \n\nThis software consists of voluntary contributions made by many\nindividuals. For exact contribution history, see the revision history\navailable at https://github.com/lodash/lodash\n\nThe following license applies to all parts of this software except as\ndocumented below:\n\n====\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n====\n\nCopyright and related rights for sample code are waived via CC0. Sample\ncode is defined as all source code displayed within the prose of the\ndocumentation.\n\nCC0: http://creativecommons.org/publicdomain/zero/1.0/\n\n====\n\nFiles located in the node_modules and vendor directories are externally\nmaintained libraries used by this software which have their own\nlicenses; we recommend you read them, as their terms may differ from the\nterms above.\n"},{"name":"raf","authors":"Chris Dickinson ","version":"3.4.1","repository":"git://github.com/chrisdickinson/raf.git","license":"MIT","licenseText":"Copyright 2013 Chris Dickinson \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@types/d3-array","authors":"Alex Ford, Boris Yankov, Tom Wanzek, denisname, Hugues Stefanski, Nathan Bierema, Fil","version":"3.2.1","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-axis","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.6","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-brush","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"3.0.6","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-color","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Hugues Stefanski, Nathan Bierema, Fil","version":"3.1.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-contour","authors":"Tom Wanzek, Hugues Stefanski, Nathan Bierema","version":"3.0.6","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-delaunay","authors":"Bradley Odell, Nathan Bierema","version":"6.0.4","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-dispatch","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.6","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-drag","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"3.0.7","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-dsv","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.7","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-ease","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"3.0.2","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-fetch","authors":"Hugues Stefanski, denisname, Nathan Bierema","version":"3.0.7","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-force","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.9","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-format","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.4","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-geo","authors":"Hugues Stefanski, Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"3.1.0","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-interpolate","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.4","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-path","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"3.1.0","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-polygon","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"3.0.2","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-quadtree","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.6","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-random","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"3.0.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-scale","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, rulonder, Nathan Bierema","version":"4.0.8","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-scale-chromatic","authors":"Hugues Stefanski, Alex Ford, Boris Yankov, Henrique Machado, Nathan Bierema","version":"3.0.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-selection","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema, Ambar Mutha","version":"3.0.10","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-time","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-time-format","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Nathan Bierema","version":"4.0.3","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-timer","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.2","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-transition","authors":"Tom Wanzek, Alex Ford, Boris Yankov, Robert Moura, Nathan Bierema","version":"3.0.8","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@types/d3-zoom","authors":"Tom Wanzek, Alex Ford, Boris Yankov, denisname, Nathan Bierema","version":"3.0.8","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"d3-array","authors":"Mike Bostock","version":"3.2.4","repository":"https://github.com/d3/d3-array.git","license":"ISC","licenseText":"Copyright 2010-2023 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-axis","authors":"Mike Bostock","version":"3.0.0","repository":"https://github.com/d3/d3-axis.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-brush","authors":"Mike Bostock","version":"3.0.0","repository":"https://github.com/d3/d3-brush.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-color","authors":"Mike Bostock","version":"3.1.0","repository":"https://github.com/d3/d3-color.git","license":"ISC","licenseText":"Copyright 2010-2022 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-contour","authors":"Mike Bostock","version":"4.0.2","repository":"https://github.com/d3/d3-contour.git","license":"ISC","licenseText":"Copyright 2012-2023 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-delaunay","authors":"Mike Bostock","version":"6.0.4","repository":"https://github.com/d3/d3-delaunay.git","license":"ISC","licenseText":"Copyright 2018-2021 Observable, Inc.\nCopyright 2021 Mapbox\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-dispatch","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-dispatch.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-drag","authors":"Mike Bostock","version":"3.0.0","repository":"https://github.com/d3/d3-drag.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-dsv","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-dsv.git","license":"ISC","licenseText":"Copyright 2013-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-ease","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-ease.git","license":"BSD-3-Clause","licenseText":"Copyright 2010-2021 Mike Bostock\nCopyright 2001 Robert Penner\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the author nor the names of contributors may be used to\n endorse or promote products derived from this software without specific prior\n written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"d3-fetch","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-fetch.git","license":"ISC","licenseText":"Copyright 2016-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-force","authors":"Mike Bostock","version":"3.0.0","repository":"https://github.com/d3/d3-force.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-format","authors":"Mike Bostock","version":"3.1.0","repository":"https://github.com/d3/d3-format.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-hierarchy","authors":"Mike Bostock","version":"3.1.2","repository":"https://github.com/d3/d3-hierarchy.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-interpolate","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-interpolate.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-path","authors":"Mike Bostock","version":"3.1.0","repository":"https://github.com/d3/d3-path.git","license":"ISC","licenseText":"Copyright 2015-2022 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-polygon","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-polygon.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-quadtree","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-quadtree.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-random","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-random.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-scale","authors":"Mike Bostock","version":"4.0.2","repository":"https://github.com/d3/d3-scale.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-scale-chromatic","authors":"Mike Bostock","version":"3.1.0","repository":"https://github.com/d3/d3-scale-chromatic.git","license":"ISC","licenseText":"Copyright 2010-2024 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n\nApache-Style Software License for ColorBrewer software and ColorBrewer Color Schemes\n\nCopyright 2002 Cynthia Brewer, Mark Harrower, and The Pennsylvania State University\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed\nunder the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the License for the\nspecific language governing permissions and limitations under the License.\n"},{"name":"d3-shape","authors":"Mike Bostock","version":"3.2.0","repository":"https://github.com/d3/d3-shape.git","license":"ISC","licenseText":"Copyright 2010-2022 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-time","authors":"Mike Bostock","version":"3.1.0","repository":"https://github.com/d3/d3-time.git","license":"ISC","licenseText":"Copyright 2010-2022 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-time-format","authors":"Mike Bostock","version":"4.1.0","repository":"https://github.com/d3/d3-time-format.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-timer","authors":"Mike Bostock","version":"3.0.1","repository":"https://github.com/d3/d3-timer.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-zoom","authors":"Mike Bostock","version":"3.0.0","repository":"https://github.com/d3/d3-zoom.git","license":"ISC","licenseText":"Copyright 2010-2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"d3-voronoi-map","authors":" Kcnarf ","version":"2.1.1","repository":"https://github.com/Kcnarf/d3-voronoi-map.git","license":"BSD-3-Clause","licenseText":"BSD 3-Clause License\n\nCopyright (c) 2018, LEBEAU Franck\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"@foliojs-fork/linebreak","authors":"Devon Govett ","version":"1.1.2","repository":"https://github.com/foliojs-fork/linebreaker.git","license":"MIT","licenseText":"MIT License\r\n\r\nCopyright (c) 2014-present Devon Govett\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n"},{"name":"@foliojs-fork/pdfkit","authors":"Devon Govett","version":"0.14.0","repository":"https://github.com/foliojs-fork/pdfkit.git","license":"MIT","licenseText":"MIT LICENSE\r\nCopyright (c) 2014 Devon Govett\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."},{"name":"iconv-lite","authors":"Alexander Shtuchkin ","version":"0.6.3","repository":"git://github.com/ashtuchkin/iconv-lite.git","license":"MIT","licenseText":"Copyright (c) 2011 Alexander Shtuchkin\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"},{"name":"xmldoc","authors":"Nick Farina","version":"1.3.0","repository":"git://github.com/nfarina/xmldoc.git","license":"MIT","licenseText":"Copyright 2012 Nick Farina.\nAll rights reserved.\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"tinyqueue","authors":null,"version":"2.0.3","repository":"https://github.com/mourner/tinyqueue.git","license":"ISC","licenseText":"ISC License\n\nCopyright (c) 2017, Vladimir Agafonkin\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"regenerator-runtime","authors":"Ben Newman ","version":"0.14.1","repository":"https://github.com/facebook/regenerator/tree/main/packages/runtime","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@babel/helper-module-imports","authors":"The Babel Team (https://babel.dev/team)","version":"7.22.15","repository":"https://github.com/babel/babel.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014-present Sebastian McKenzie and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@emotion/hash","authors":null,"version":"0.9.1","repository":"https://github.com/emotion-js/emotion/tree/main/packages/hash","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/memoize","authors":null,"version":"0.8.1","repository":"https://github.com/emotion-js/emotion/tree/main/packages/memoize","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"babel-plugin-macros","authors":"Kent C. Dodds (https://kentcdodds.com)","version":"3.1.0","repository":"https://github.com/kentcdodds/babel-plugin-macros","license":"MIT","licenseText":"The MIT License (MIT)\nCopyright (c) 2020 Kent C. Dodds\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"convert-source-map","authors":"Thorsten Lorenz","version":"2.0.0","repository":"git://github.com/thlorenz/convert-source-map.git","license":"MIT","licenseText":"Copyright 2013 Thorsten Lorenz. \nAll rights reserved.\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"escape-string-regexp","authors":"Sindre Sorhus","version":"4.0.0","repository":"sindresorhus/escape-string-regexp","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (https://sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"find-root","authors":"jsdnxx","version":"1.1.0","repository":"git@github.com:js-n/find-root.git","license":"MIT","licenseText":"Copyright © 2017 jsdnxx\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."},{"name":"source-map","authors":"Nick Fitzgerald ","version":"0.5.7","repository":"http://github.com/mozilla/source-map.git","license":"BSD-3-Clause","licenseText":"\nCopyright (c) 2009-2011, Mozilla Foundation and contributors\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the names of the Mozilla Foundation nor the names of project\n contributors may be used to endorse or promote products derived from this\n software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"stylis","authors":"Sultan Tarimo ","version":"4.2.0","repository":"https://github.com/thysultan/stylis.js","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2016-present Sultan Tarimo\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/sheet","authors":null,"version":"1.2.2","repository":"https://github.com/emotion-js/emotion/tree/main/packages/sheet","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@emotion/unitless","authors":null,"version":"0.8.1","repository":"https://github.com/emotion-js/emotion/tree/main/packages/unitless","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Emotion team and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"object-assign","authors":"Sindre Sorhus","version":"4.1.1","repository":"sindresorhus/object-assign","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"@types/prop-types","authors":"DovydasNavickas, Ferdy Budhidharma, Sebastian Silbermann","version":"15.7.11","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"@floating-ui/react-dom","authors":"atomiks","version":"2.0.8","repository":"https://github.com/floating-ui/floating-ui.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2021-present Floating UI contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@popperjs/core","authors":"Federico Zivolo ","version":"2.11.8","repository":"github:popperjs/popper-core","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2019 Federico Zivolo\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@types/react","authors":"Asana, AssureSign, Microsoft, John Reilly, Benoit Benezech, Patricio Zavolinsky, Eric Anderson, Dovydas Navickas, Josh Rutherford, Guilherme Hübner, Ferdy Budhidharma, Johann Rakotoharisoa, Olivier Pascal, Martin Hochel, Frank Li, Jessica Franco, Saransh Kataria, Kanitkorn Sujautra, Sebastian Silbermann, Kyle Scully, Cong Zhang, Dimitri Mitropoulos, JongChan Choi, Victor Magalhães, Dale Tan, Priyanshu Rav, Dmitry Semigradsky, Matt Pocock","version":"18.2.66","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"dom-helpers","authors":"Jason Quense","version":"5.2.1","repository":"git+https://github.com/react-bootstrap/dom-helpers.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Jason Quense\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."},{"name":"node-fetch","authors":"David Frank","version":"3.3.2","repository":"https://github.com/node-fetch/node-fetch.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2016 - 2020 Node Fetch Team\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"js-tokens","authors":"Simon Lydell","version":"4.0.0","repository":"lydell/js-tokens","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014, 2015, 2016, 2017, 2018 Simon Lydell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"void-elements","authors":"hemanth.hm","version":"3.1.0","repository":"pugjs/void-elements","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2014 hemanth\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@types/unist","authors":"bizen241, Jun Lu, Hernan Rajchert, Titus Wormer, Junyoung Choi, Ben Moon, JounQin, Remco Haszing","version":"3.0.2","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"dequal","authors":"Luke Edwards","version":"2.0.3","repository":"lukeed/dequal","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) Luke Edwards (lukeed.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"@types/estree","authors":"RReverser","version":"1.0.5","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"comma-separated-tokens","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.3","repository":"wooorm/comma-separated-tokens","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"estree-util-is-identifier-name","authors":"Titus Wormer (https://wooorm.com)","version":"3.0.0","repository":"syntax-tree/estree-util-is-identifier-name","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2020 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"hast-util-whitespace","authors":"Titus Wormer (https://wooorm.com)","version":"3.0.0","repository":"syntax-tree/hast-util-whitespace","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"mdast-util-mdx-expression","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"syntax-tree/mdast-util-mdx-expression","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2020 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"mdast-util-mdx-jsx","authors":"Titus Wormer (https://wooorm.com)","version":"3.1.2","repository":"syntax-tree/mdast-util-mdx-jsx","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2020 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"mdast-util-mdxjs-esm","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"syntax-tree/mdast-util-mdxjs-esm","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2020 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"property-information","authors":"Titus Wormer (https://wooorm.com)","version":"6.4.1","repository":"wooorm/property-information","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"space-separated-tokens","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.2","repository":"wooorm/space-separated-tokens","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"style-to-object","authors":"Mark ","version":"1.0.5","repository":"https://github.com/remarkablemark/style-to-object","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017 Menglin \"Mark\" Xu \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"unist-util-position","authors":"Titus Wormer (https://wooorm.com)","version":"5.0.0","repository":"syntax-tree/unist-util-position","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"vfile-message","authors":"Titus Wormer (https://wooorm.com)","version":"4.0.2","repository":"vfile/vfile-message","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2017 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@ungap/structured-clone","authors":"Andrea Giammarchi","version":"1.2.0","repository":"git+https://github.com/ungap/structured-clone.git","license":"ISC","licenseText":"ISC License\n\nCopyright (c) 2021, Andrea Giammarchi, @WebReflection\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted, provided that the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE\nOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n"},{"name":"micromark-util-sanitize-uri","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-sanitize-uri","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"trim-lines","authors":"Titus Wormer (https://wooorm.com)","version":"3.0.1","repository":"wooorm/trim-lines","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"mdast-util-from-markdown","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"syntax-tree/mdast-util-from-markdown","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2020 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"micromark-util-types","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-types","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"bail","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.2","repository":"wooorm/bail","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"extend","authors":"Stefan Thomas (http://www.justmoon.net)","version":"3.0.2","repository":"https://github.com/justmoon/node-extend.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Stefan Thomas\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"},{"name":"is-plain-obj","authors":"Sindre Sorhus","version":"4.1.0","repository":"sindresorhus/is-plain-obj","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (https://sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"trough","authors":"Titus Wormer (https://wooorm.com)","version":"2.2.0","repository":"wooorm/trough","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"unist-util-is","authors":"Titus Wormer (https://wooorm.com)","version":"6.0.0","repository":"syntax-tree/unist-util-is","license":"MIT","licenseText":"(The MIT license)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"unist-util-stringify-position","authors":"Titus Wormer (https://wooorm.com)","version":"4.0.0","repository":"syntax-tree/unist-util-stringify-position","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"hast-util-from-html","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"syntax-tree/hast-util-from-html","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2022 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"hast-util-from-dom","authors":"Keith McKnight (https://keith.mcknig.ht)","version":"5.0.0","repository":"syntax-tree/hast-util-from-dom","license":"ISC","licenseText":"(ISC License)\n\nCopyright (c) 2018 Keith McKnight \n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"unist-util-remove-position","authors":"Titus Wormer (https://wooorm.com)","version":"5.0.0","repository":"syntax-tree/unist-util-remove-position","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"hast-util-is-element","authors":"Titus Wormer (https://wooorm.com)","version":"3.0.0","repository":"syntax-tree/hast-util-is-element","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"unist-util-find-after","authors":"Titus Wormer (https://wooorm.com)","version":"5.0.0","repository":"syntax-tree/unist-util-find-after","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"commander","authors":"TJ Holowaychuk ","version":"7.2.0","repository":"https://github.com/tj/commander.js.git","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"longest-streak","authors":"Titus Wormer (https://wooorm.com)","version":"3.1.0","repository":"wooorm/longest-streak","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"mdast-util-to-markdown","authors":"Titus Wormer (https://wooorm.com)","version":"2.1.0","repository":"syntax-tree/mdast-util-to-markdown","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2020 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"micromark-factory-space","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-factory-space","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-character","authors":"Titus Wormer (https://wooorm.com)","version":"2.1.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-character","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-symbol","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-symbol","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"performance-now","authors":"Braveg1rl ","version":"2.1.0","repository":"git://github.com/braveg1rl/performance-now.git","license":"MIT","licenseText":"Copyright (c) 2013 Braveg1rl\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."},{"name":"internmap","authors":"Mike Bostock","version":"2.0.3","repository":"https://github.com/mbostock/internmap.git","license":"ISC","licenseText":"Copyright 2021 Mike Bostock\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"delaunator","authors":"Vladimir Agafonkin","version":"5.0.1","repository":"https://github.com/mapbox/delaunator.git","license":"ISC","licenseText":"ISC License\n\nCopyright (c) 2021, Mapbox\n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"rw","authors":"Mike Bostock","version":"1.3.3","repository":"http://github.com/mbostock/rw.git","license":"BSD-3-Clause","licenseText":"Copyright (c) 2014-2016, Michael Bostock\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* The name Michael Bostock may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT,\nINDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\nBUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\nOF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\nEVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"d3-weighted-voronoi","authors":" Kcnarf ","version":"1.1.3","repository":"https://github.com/Kcnarf/d3-weighted-voronoi.git","license":"BSD-3-Clause","licenseText":"BSD 3-Clause License\n\nCopyright (c) 2018, LEBEAU Franck\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"base64-js","authors":"T. Jameson Little ","version":"1.3.1","repository":"git://github.com/beatgammit/base64-js.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Jameson Little\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"unicode-trie","authors":"Devon Govett ","version":"2.0.0","repository":"git://github.com/devongovett/unicode-trie.git","license":"MIT","licenseText":"Copyright 2018\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"},{"name":"crypto-js","authors":"Evan Vosberg","version":"4.2.0","repository":"http://github.com/brix/crypto-js.git","license":"MIT","licenseText":"# License\n\n[The MIT License (MIT)](http://opensource.org/licenses/MIT)\n\nCopyright (c) 2009-2013 Jeff Mott \nCopyright (c) 2013-2016 Evan Vosberg\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"@foliojs-fork/fontkit","authors":"Devon Govett ","version":"1.9.2","repository":"git://github.com/foliojs-fork/fontkit.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Devon Govett \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"png-js","authors":"Devon Govett","version":"1.0.0","repository":"https://github.com/devongovett/png.js.git","license":null,"licenseText":"MIT License\n\nCopyright (c) 2017 Devon Govett\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"safer-buffer","authors":"Nikita Skovoroda","version":"2.1.2","repository":"git+https://github.com/ChALkeR/safer-buffer.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2018 Nikita Skovoroda \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"sax","authors":"Isaac Z. Schlueter (http://blog.izs.me/)","version":"1.3.0","repository":"git://github.com/isaacs/sax-js.git","license":"ISC","licenseText":"The ISC License\n\nCopyright (c) 2010-2022 Isaac Z. Schlueter and Contributors\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted, provided that the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n====\n\n`String.fromCodePoint` by Mathias Bynens used according to terms of MIT\nLicense, as follows:\n\nCopyright (c) 2010-2022 Mathias Bynens \n\n Permission is hereby granted, free of charge, to any person obtaining\n a copy of this software and associated documentation files (the\n \"Software\"), to deal in the Software without restriction, including\n without limitation the rights to use, copy, modify, merge, publish,\n distribute, sublicense, and/or sell copies of the Software, and to\n permit persons to whom the Software is furnished to do so, subject to\n the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@babel/types","authors":"The Babel Team (https://babel.dev/team)","version":"7.24.0","repository":"https://github.com/babel/babel.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014-present Sebastian McKenzie and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"cosmiconfig","authors":"David Clark ","version":"7.1.0","repository":"git+https://github.com/davidtheclark/cosmiconfig.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 David Clark\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"resolve","authors":"James Halliday","version":"1.22.8","repository":"git://github.com/browserify/resolve.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2012 James Halliday\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@floating-ui/dom","authors":"atomiks","version":"1.6.3","repository":"https://github.com/floating-ui/floating-ui.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2021-present Floating UI contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@types/scheduler","authors":"Nathan Bierema, Sebastian Silbermann","version":"0.16.8","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"data-uri-to-buffer","authors":"Nathan Rajlich (http://n8.io/)","version":"4.0.1","repository":"git://github.com/TooTallNate/node-data-uri-to-buffer.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Nathan Rajlich (http://n8.io/)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"fetch-blob","authors":"Jimmy Wärting (https://jimmy.warting.se)","version":"3.2.0","repository":"https://github.com/node-fetch/fetch-blob.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 David Frank\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"formdata-polyfill","authors":"Jimmy Wärting","version":"4.0.10","repository":"git+https://jimmywarting@github.com/jimmywarting/FormData.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2016 Jimmy Karl Roland Wärting\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@types/estree-jsx","authors":"Tony Ross","version":"1.0.5","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"ccount","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"wooorm/ccount","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"parse-entities","authors":"Titus Wormer (https://wooorm.com)","version":"4.0.1","repository":"wooorm/parse-entities","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"stringify-entities","authors":"Titus Wormer (https://wooorm.com)","version":"4.0.3","repository":"wooorm/stringify-entities","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"inline-style-parser","authors":null,"version":"0.2.2","repository":"https://github.com/remarkablemark/inline-style-parser","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-encode","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-encode","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"decode-named-character-reference","authors":"Titus Wormer (https://wooorm.com)","version":"1.0.2","repository":"wooorm/decode-named-character-reference","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2021 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"mdast-util-to-string","authors":"Titus Wormer (https://wooorm.com)","version":"4.0.0","repository":"syntax-tree/mdast-util-to-string","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"micromark","authors":"Titus Wormer (https://wooorm.com)","version":"4.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-decode-numeric-character-reference","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-decode-numeric-character-reference","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-decode-string","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-decode-string","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-normalize-identifier","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-normalize-identifier","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"hast-util-from-parse5","authors":"Titus Wormer (https://wooorm.com)","version":"8.0.1","repository":"syntax-tree/hast-util-from-parse5","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"parse5","authors":"Ivan Nikulin (https://github.com/inikulin)","version":"7.1.2","repository":"git://github.com/inikulin/parse5.git","license":"MIT","licenseText":"Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"hastscript","authors":"Titus Wormer (https://wooorm.com)","version":"8.0.0","repository":"syntax-tree/hastscript","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"web-namespaces","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"wooorm/web-namespaces","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"mdast-util-phrasing","authors":"Victor Felder (https://draft.li)","version":"4.1.0","repository":"syntax-tree/mdast-util-phrasing","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2017 Titus Wormer \nCopyright (c) 2017 Victor Felder \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"zwitch","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.4","repository":"wooorm/zwitch","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"robust-predicates","authors":"Vladimir Agafonkin","version":"3.0.2","repository":"https://github.com/mourner/robust-predicates.git","license":"Unlicense","licenseText":"This is free and unencumbered software released into the public domain.\n\nAnyone is free to copy, modify, publish, use, compile, sell, or\ndistribute this software, either in source code form or as a compiled\nbinary, for any purpose, commercial or non-commercial, and by any\nmeans.\n\nIn jurisdictions that recognize copyright laws, the author or authors\nof this software dedicate any and all copyright interest in the\nsoftware to the public domain. We make this dedication for the benefit\nof the public at large and to the detriment of our heirs and\nsuccessors. We intend this dedication to be an overt act of\nrelinquishment in perpetuity of all present and future rights to this\nsoftware under copyright law.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\nOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\nARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\nFor more information, please refer to \n"},{"name":"pako","authors":"Andrei Tuputcyn (https://github.com/andr83), Vitaly Puzrin (https://github.com/puzrin)","version":"0.2.9","repository":"nodeca/pako","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (C) 2014-2016 by Vitaly Puzrin\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"tiny-inflate","authors":"Devon Govett ","version":"1.0.3","repository":"git://github.com/devongovett/tiny-inflate.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2015-present Devon Govett\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"brotli","authors":"Devon Govett ","version":"1.3.3","repository":"https://github.com/devongovett/brotli.js.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Devon Govett \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"clone","authors":"Paul Vorbach (http://paul.vorba.ch/)","version":"1.0.4","repository":"git://github.com/pvorb/node-clone.git","license":"MIT","licenseText":"Copyright © 2011-2015 Paul Vorbach \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the “Software”), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"deep-equal","authors":"James Halliday","version":"2.2.3","repository":"http://github.com/inspect-js/node-deep-equal.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2012, 2013, 2014 James Halliday , 2009 Thomas Robinson <280north.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"dfa","authors":"Devon Govett ","version":"1.2.0","repository":"git+ssh://git@github.com/devongovett/dfa.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Devon Govett \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@foliojs-fork/restructure","authors":"Devon Govett ","version":"2.0.2","repository":"git://github.com/foliojs-fork/restructure.git","license":"MIT","licenseText":"MIT License\r\n\r\nCopyright (c) 2015-present Devon Govett\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n"},{"name":"unicode-properties","authors":"Devon Govett ","version":"1.4.1","repository":"git://github.com/devongovett/unicode-properties.git","license":"MIT","licenseText":"Copyright 2018\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"},{"name":"@babel/helper-string-parser","authors":"The Babel Team (https://babel.dev/team)","version":"7.23.4","repository":"https://github.com/babel/babel.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014-present Sebastian McKenzie and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@babel/helper-validator-identifier","authors":"The Babel Team (https://babel.dev/team)","version":"7.22.20","repository":"https://github.com/babel/babel.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014-present Sebastian McKenzie and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"to-fast-properties","authors":"Sindre Sorhus","version":"2.0.0","repository":"sindresorhus/to-fast-properties","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014 Petka Antonov\n 2015 Sindre Sorhus\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@types/parse-json","authors":"mrmlnc","version":"4.0.2","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"import-fresh","authors":"Sindre Sorhus","version":"3.3.0","repository":"sindresorhus/import-fresh","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (https://sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"parse-json","authors":"Sindre Sorhus","version":"5.2.0","repository":"sindresorhus/parse-json","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (https://sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"path-type","authors":"Sindre Sorhus","version":"4.0.0","repository":"sindresorhus/path-type","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"yaml","authors":"Eemeli Aro ","version":"1.10.2","repository":"github:eemeli/yaml","license":"ISC","licenseText":"Copyright 2018 Eemeli Aro \n\nPermission to use, copy, modify, and/or distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright notice\nand this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\nOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\nTHIS SOFTWARE.\n"},{"name":"is-core-module","authors":"Jordan Harband ","version":"2.13.1","repository":"git+https://github.com/inspect-js/is-core-module.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Dave Justice\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."},{"name":"path-parse","authors":"Javier Blanco ","version":"1.0.7","repository":"https://github.com/jbgutierrez/path-parse.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Javier Blanco\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"supports-preserve-symlinks-flag","authors":"Jordan Harband ","version":"1.0.0","repository":"git+https://github.com/inspect-js/node-supports-preserve-symlinks-flag.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2022 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"@floating-ui/core","authors":"atomiks","version":"1.6.0","repository":"https://github.com/floating-ui/floating-ui.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2021-present Floating UI contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@floating-ui/utils","authors":"atomiks","version":"0.2.1","repository":"https://github.com/floating-ui/floating-ui.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2021-present Floating UI contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"node-domexception","authors":"Jimmy Wärting","version":"1.0.0","repository":"git+https://github.com/jimmywarting/node-domexception.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2021 Jimmy Wärting\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"web-streams-polyfill","authors":"Mattias Buelens ","version":"3.3.3","repository":"git+https://github.com/MattiasBuelens/web-streams-polyfill.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2024 Mattias Buelens\nCopyright (c) 2016 Diwank Singh Tomer\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"character-entities","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.2","repository":"wooorm/character-entities","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"character-entities-legacy","authors":"Titus Wormer (https://wooorm.com)","version":"3.0.0","repository":"wooorm/character-entities-legacy","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"character-reference-invalid","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"wooorm/character-reference-invalid","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"is-alphanumerical","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"wooorm/is-alphanumerical","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"is-decimal","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"wooorm/is-decimal","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"is-hexadecimal","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"wooorm/is-hexadecimal","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"character-entities-html4","authors":"Titus Wormer (https://wooorm.com)","version":"2.1.0","repository":"wooorm/character-entities-html4","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2015 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@types/debug","authors":"Seon-Wook Park, Gal Talmor, John McLaughlin, Brasten Sager, Nicolas Penin, Kristian Brünn, Caleb Gregory","version":"4.1.12","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"debug","authors":"Josh Junon ","version":"4.3.4","repository":"git://github.com/debug-js/debug.git","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2014-2017 TJ Holowaychuk \nCopyright (c) 2018-2021 Josh Junon\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the 'Software'), to deal in the Software without restriction,\nincluding without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial\nportions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\nLIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"},{"name":"micromark-core-commonmark","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-core-commonmark","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-chunked","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-chunked","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-combine-extensions","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-combine-extensions","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-resolve-all","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-resolve-all","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-subtokenize","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-subtokenize","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"vfile-location","authors":"Titus Wormer (https://wooorm.com)","version":"5.0.2","repository":"vfile/vfile-location","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"entities","authors":"Felix Boehm ","version":"4.5.0","repository":"git://github.com/fb55/entities.git","license":"BSD-2-Clause","licenseText":"Copyright (c) Felix Böhm\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\nRedistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\nRedistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\nTHIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,\nEVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},{"name":"hast-util-parse-selector","authors":"Titus Wormer (https://wooorm.com)","version":"4.0.0","repository":"syntax-tree/hast-util-parse-selector","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"array-buffer-byte-length","authors":"Jordan Harband ","version":"1.0.1","repository":"git+https://github.com/inspect-js/array-buffer-byte-length.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2023 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"call-bind","authors":"Jordan Harband ","version":"1.0.7","repository":"git+https://github.com/ljharb/call-bind.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2020 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"es-get-iterator","authors":"Jordan Harband ","version":"1.1.3","repository":"git+https://github.com/ljharb/es-get-iterator.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"get-intrinsic","authors":"Jordan Harband ","version":"1.2.4","repository":"git+https://github.com/ljharb/get-intrinsic.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2020 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-arguments","authors":"Jordan Harband","version":"1.1.1","repository":"git://github.com/inspect-js/is-arguments.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"is-array-buffer","authors":"Jordan Harband ","version":"3.0.4","repository":"git+https://github.com/inspect-js/is-array-buffer.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2015 Chen Gengyuan, Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-date-object","authors":"Jordan Harband","version":"1.0.5","repository":"git://github.com/inspect-js/is-date-object.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"is-regex","authors":"Jordan Harband ","version":"1.1.4","repository":"git://github.com/inspect-js/is-regex.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"is-shared-array-buffer","authors":"Jordan Harband","version":"1.0.3","repository":"git+https://github.com/inspect-js/is-shared-array-buffer.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2021 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"isarray","authors":"Julian Gruber","version":"2.0.5","repository":"git://github.com/juliangruber/isarray.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2013 Julian Gruber \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"object-is","authors":"Jordan Harband","version":"1.1.6","repository":"git://github.com/es-shims/object-is.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"object-keys","authors":"Jordan Harband","version":"1.1.1","repository":"git://github.com/ljharb/object-keys.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (C) 2013 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."},{"name":"object.assign","authors":"Jordan Harband","version":"4.1.5","repository":"git://github.com/ljharb/object.assign.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2014 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."},{"name":"regexp.prototype.flags","authors":"Jordan Harband ","version":"1.5.2","repository":"git://github.com/es-shims/RegExp.prototype.flags.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (C) 2014 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n"},{"name":"side-channel","authors":"Jordan Harband ","version":"1.0.6","repository":"git+https://github.com/ljharb/side-channel.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"which-boxed-primitive","authors":"Jordan Harband ","version":"1.0.2","repository":"git+https://github.com/inspect-js/which-boxed-primitive.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"which-collection","authors":"Jordan Harband ","version":"1.0.2","repository":"git+https://github.com/inspect-js/which-collection.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"which-typed-array","authors":"Jordan Harband","version":"1.1.15","repository":"git://github.com/inspect-js/which-typed-array.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"parent-module","authors":"Sindre Sorhus","version":"1.0.1","repository":"sindresorhus/parent-module","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"resolve-from","authors":"Sindre Sorhus","version":"4.0.0","repository":"sindresorhus/resolve-from","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@babel/code-frame","authors":"The Babel Team (https://babel.dev/team)","version":"7.23.5","repository":"https://github.com/babel/babel.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014-present Sebastian McKenzie and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"error-ex","authors":"Josh Junon (github.com/qix-), Sindre Sorhus (sindresorhus.com)","version":"1.3.2","repository":"qix-/node-error-ex","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 JD Ballard\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"json-parse-even-better-errors","authors":"Kat Marchán","version":"2.3.1","repository":"https://github.com/npm/json-parse-even-better-errors","license":"MIT","licenseText":"Copyright 2017 Kat Marchán\nCopyright npm, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction, including without limitation\nthe rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n\n---\n\nThis library is a fork of 'better-json-errors' by Kat Marchán, extended and\ndistributed under the terms of the MIT license above.\n"},{"name":"lines-and-columns","authors":"Brian Donovan ","version":"1.2.4","repository":"https://github.com/eventualbuddha/lines-and-columns.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Brian Donovan\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"hasown","authors":"Jordan Harband ","version":"2.0.2","repository":"git+https://github.com/inspect-js/hasOwn.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Jordan Harband and contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-alphabetical","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.1","repository":"wooorm/is-alphabetical","license":"MIT","licenseText":"(The MIT License)\n\nCopyright (c) 2016 Titus Wormer \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@types/ms","authors":"Zhiyuan Wang","version":"0.7.34","repository":"https://github.com/DefinitelyTyped/DefinitelyTyped.git","license":"MIT","licenseText":" MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE\n"},{"name":"ms","authors":null,"version":"2.1.2","repository":"zeit/ms","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2016 Zeit, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-factory-destination","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-factory-destination","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-factory-label","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-factory-label","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-factory-title","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-factory-title","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-factory-whitespace","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-factory-whitespace","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-classify-character","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-classify-character","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"micromark-util-html-tag-name","authors":"Titus Wormer (https://wooorm.com)","version":"2.0.0","repository":"https://github.com/micromark/micromark/tree/main/packages/micromark-util-html-tag-name","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Titus Wormer (https://wooorm.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"es-define-property","authors":"Jordan Harband ","version":"1.0.0","repository":"git+https://github.com/ljharb/es-define-property.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"es-errors","authors":"Jordan Harband ","version":"1.3.0","repository":"git+https://github.com/ljharb/es-errors.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"function-bind","authors":"Raynos ","version":"1.1.2","repository":"https://github.com/Raynos/function-bind.git","license":"MIT","licenseText":"Copyright (c) 2013 Raynos.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n"},{"name":"set-function-length","authors":"Jordan Harband ","version":"1.2.2","repository":"git+https://github.com/ljharb/set-function-length.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Jordan Harband and contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"has-symbols","authors":"Jordan Harband","version":"1.0.3","repository":"git://github.com/inspect-js/has-symbols.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2016 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-map","authors":"Jordan Harband ","version":"2.0.3","repository":"git+https://github.com/inspect-js/is-map.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-set","authors":"Jordan Harband ","version":"2.0.3","repository":"git+https://github.com/inspect-js/is-set.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-string","authors":"Jordan Harband ","version":"1.0.7","repository":"git://github.com/ljharb/is-string.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"stop-iteration-iterator","authors":"Jordan Harband ","version":"1.0.0","repository":"git+https://github.com/ljharb/stop-iteration-iterator.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2023 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"has-proto","authors":"Jordan Harband ","version":"1.0.3","repository":"git+https://github.com/inspect-js/has-proto.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2022 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"has-tostringtag","authors":"Jordan Harband","version":"1.0.2","repository":"git+https://github.com/inspect-js/has-tostringtag.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2021 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"define-properties","authors":"Jordan Harband ","version":"1.2.1","repository":"git://github.com/ljharb/define-properties.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (C) 2015 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."},{"name":"set-function-name","authors":"Jordan Harband ","version":"2.0.2","repository":"git+https://github.com/ljharb/set-function-name.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Jordan Harband and contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"object-inspect","authors":"James Halliday","version":"1.13.1","repository":"git://github.com/inspect-js/object-inspect.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2013 James Halliday\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-bigint","authors":"Jordan Harband ","version":"1.0.4","repository":"git+https://github.com/inspect-js/is-bigint.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2018 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-boolean-object","authors":"Jordan Harband ","version":"1.1.2","repository":"git://github.com/inspect-js/is-boolean-object.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"is-number-object","authors":"Jordan Harband ","version":"1.0.7","repository":"git://github.com/inspect-js/is-number-object.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"is-symbol","authors":"Jordan Harband ","version":"1.0.4","repository":"git://github.com/inspect-js/is-symbol.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"is-weakmap","authors":"Jordan Harband ","version":"2.0.2","repository":"git+https://github.com/inspect-js/is-weakmap.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-weakset","authors":"Jordan Harband ","version":"2.0.3","repository":"git+https://github.com/inspect-js/is-weakset.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"available-typed-arrays","authors":"Jordan Harband ","version":"1.0.7","repository":"git+https://github.com/inspect-js/available-typed-arrays.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2020 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"for-each","authors":"Raynos ","version":"0.3.3","repository":"git://github.com/Raynos/for-each.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2012 Raynos.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"gopd","authors":"Jordan Harband ","version":"1.0.1","repository":"git+https://github.com/ljharb/gopd.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2022 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"callsites","authors":"Sindre Sorhus","version":"3.1.0","repository":"sindresorhus/callsites","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"@babel/highlight","authors":"The Babel Team (https://babel.dev/team)","version":"7.23.4","repository":"https://github.com/babel/babel.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2014-present Sebastian McKenzie and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"chalk","authors":null,"version":"2.4.2","repository":"chalk/chalk","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"is-arrayish","authors":"Qix (http://github.com/qix-)","version":"0.2.1","repository":"https://github.com/qix-/node-is-arrayish.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 JD Ballard\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"name":"define-data-property","authors":"Jordan Harband ","version":"1.1.4","repository":"git+https://github.com/ljharb/define-data-property.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2023 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"has-property-descriptors","authors":"Jordan Harband ","version":"1.0.2","repository":"git+https://github.com/inspect-js/has-property-descriptors.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2022 Inspect JS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"internal-slot","authors":"Jordan Harband ","version":"1.0.7","repository":"git+https://github.com/ljharb/internal-slot.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"functions-have-names","authors":"Jordan Harband ","version":"1.2.3","repository":"git+https://github.com/inspect-js/functions-have-names.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"has-bigints","authors":"Jordan Harband ","version":"1.0.2","repository":"git+https://github.com/ljharb/has-bigints.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2019 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"possible-typed-array-names","authors":"Jordan Harband ","version":"1.0.0","repository":"git+https://github.com/ljharb/possible-typed-array-names.git","license":"MIT","licenseText":"MIT License\n\nCopyright (c) 2024 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"name":"is-callable","authors":"Jordan Harband","version":"1.2.7","repository":"git://github.com/inspect-js/is-callable.git","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Jordan Harband\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"},{"name":"ansi-styles","authors":"Sindre Sorhus","version":"3.2.1","repository":"chalk/ansi-styles","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"supports-color","authors":"Sindre Sorhus","version":"5.5.0","repository":"chalk/supports-color","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"color-convert","authors":"Heather Arthur ","version":"1.9.3","repository":"Qix-/color-convert","license":"MIT","licenseText":"Copyright (c) 2011-2016 Heather Arthur \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"},{"name":"has-flag","authors":"Sindre Sorhus","version":"3.0.0","repository":"sindresorhus/has-flag","license":"MIT","licenseText":"MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"name":"color-name","authors":"DY ","version":"1.1.3","repository":"git@github.com:dfcreative/color-name.git","license":"MIT","licenseText":"The MIT License (MIT)\r\nCopyright (c) 2015 Dmitry Ivanov\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."}] \ No newline at end of file diff --git a/frontend/locales/de-backend.json5 b/frontend/locales/de-backend.json5 index d9108ebc..908147de 100644 --- a/frontend/locales/de-backend.json5 +++ b/frontend/locales/de-backend.json5 @@ -276,7 +276,7 @@ }, }, 'scenario-names': { - 'Baseline Scenario': 'Basisszenario', + caseData: 'Geschätzte Fälle', baseline: 'Basisszenario', closed_schools: 'Geschlossene Schulen', remote_work: 'Homeoffice', diff --git a/frontend/locales/de-global.json5 b/frontend/locales/de-global.json5 index 13d03cd1..810fafb9 100644 --- a/frontend/locales/de-global.json5 +++ b/frontend/locales/de-global.json5 @@ -86,4 +86,5 @@ 'no-data': 'Keine Daten', 'loki-logo': 'LOKI-Logo', okay: 'Okay', + yAxisLabel: 'Wert', } diff --git a/frontend/locales/en-backend.json5 b/frontend/locales/en-backend.json5 index e68b8bef..da3f3202 100644 --- a/frontend/locales/en-backend.json5 +++ b/frontend/locales/en-backend.json5 @@ -274,7 +274,7 @@ }, }, 'scenario-names': { - 'Baseline Scenario': 'Baseline Scenario', + caseData: 'Estimated Cases', baseline: 'Baseline Scenario', closed_schools: 'Schools Closed', remote_work: 'Home Office', diff --git a/frontend/locales/en-global.json5 b/frontend/locales/en-global.json5 index 4401deb5..a2556e6e 100644 --- a/frontend/locales/en-global.json5 +++ b/frontend/locales/en-global.json5 @@ -101,4 +101,5 @@ sanctus est Lorem ipsum dolor sit amet.', WIP: 'This functionality is still work in progress.', okay: 'Okay', + yAxisLabel: 'Value', } diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 6b955bcf..5796d039 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -13,10 +13,10 @@ "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", "@mui/icons-material": "^5.15.0", - "@mui/lab": "*", + "@mui/lab": "^5.0.0-alpha.170", "@mui/material": "^5.15.0", "@mui/system": "^5.15.0", - "@mui/x-date-pickers": "^6.19.4", + "@mui/x-date-pickers": "^6.20.0", "@reduxjs/toolkit": "^2.0.1", "@types/geojson": "^7946.0.13", "country-flag-icons": "^1.5.9", @@ -25,8 +25,8 @@ "i18next-browser-languagedetector": "^7.2.0", "i18next-http-backend": "^2.4.2", "json5": "^2.2.3", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", "react-i18next": "^13.5.0", "react-lazyload": "github:twobin/react-lazyload", "react-markdown": "^9.0.1", @@ -54,8 +54,8 @@ "@types/react-lazyload": "^3.2.3", "@types/react-redux": "^7.1.33", "@types/react-scroll-sync": "^0.9.0", - "@typescript-eslint/eslint-plugin": "^7.2.0", - "@typescript-eslint/parser": "^7.2.0", + "@typescript-eslint/eslint-plugin": "^7.12.0", + "@typescript-eslint/parser": "^7.12.0", "@vitejs/plugin-react": "^4.2.1", "@vitest/coverage-v8": "^1.3.1", "eslint": "^8.57.0", @@ -1754,15 +1754,15 @@ } }, "node_modules/@mui/lab": { - "version": "5.0.0-alpha.168", - "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.168.tgz", - "integrity": "sha512-VKLQP5J/SujylvW3/riMtQYTspTluUkKLW/eu48RwuKby583cFCg8p4fWl4PpC3drwq6g9AeJ7DG4w0K+zFbdA==", + "version": "5.0.0-alpha.170", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.170.tgz", + "integrity": "sha512-0bDVECGmrNjd3+bLdcLiwYZ0O4HP5j5WSQm5DV6iA/Z9kr8O6AnvZ1bv9ImQbbX7Gj3pX4o43EKwCutj3EQxQg==", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/base": "5.0.0-beta.39", - "@mui/system": "^5.15.13", - "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.13", + "@mui/base": "5.0.0-beta.40", + "@mui/system": "^5.15.15", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", "clsx": "^2.1.0", "prop-types": "^15.8.1" }, @@ -1793,6 +1793,37 @@ } } }, + "node_modules/@mui/lab/node_modules/@mui/base": { + "version": "5.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz", + "integrity": "sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@floating-ui/react-dom": "^2.0.8", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", + "@popperjs/core": "^2.11.8", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "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/material": { "version": "5.15.13", "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.13.tgz", @@ -1838,12 +1869,12 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.15.13", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.13.tgz", - "integrity": "sha512-j5Z2pRi6talCunIRIzpQERSaHwLd5EPdHMwIKDVCszro1RAzRZl7WmH68IMCgQmJMeglr+FalqNuq048qptGAg==", + "version": "5.15.14", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.14.tgz", + "integrity": "sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.15.13", + "@mui/utils": "^5.15.14", "prop-types": "^15.8.1" }, "engines": { @@ -1864,9 +1895,9 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.15.11", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.11.tgz", - "integrity": "sha512-So21AhAngqo07ces4S/JpX5UaMU2RHXpEA6hNzI6IQjd/1usMPxpgK8wkGgTe3JKmC2KDmH8cvoycq5H3Ii7/w==", + "version": "5.15.14", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.14.tgz", + "integrity": "sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw==", "dependencies": { "@babel/runtime": "^7.23.9", "@emotion/cache": "^11.11.0", @@ -1895,15 +1926,15 @@ } }, "node_modules/@mui/system": { - "version": "5.15.13", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.13.tgz", - "integrity": "sha512-eHaX3sniZXNWkxX0lmcLxROhQ5La0HkOuF7zxbSdAoHUOk07gboQYmF6hSJ/VBFx/GLanIw67FMTn88vc8niLg==", + "version": "5.15.15", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.15.tgz", + "integrity": "sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ==", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.15.13", - "@mui/styled-engine": "^5.15.11", - "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.13", + "@mui/private-theming": "^5.15.14", + "@mui/styled-engine": "^5.15.14", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", "clsx": "^2.1.0", "csstype": "^3.1.3", "prop-types": "^15.8.1" @@ -1934,9 +1965,9 @@ } }, "node_modules/@mui/types": { - "version": "7.2.13", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.13.tgz", - "integrity": "sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==", + "version": "7.2.14", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.14.tgz", + "integrity": "sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==", "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0" }, @@ -1947,9 +1978,9 @@ } }, "node_modules/@mui/utils": { - "version": "5.15.13", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.13.tgz", - "integrity": "sha512-qNlR9FLEhORC4zVZ3fzF48213EhP/92N71AcFbhHN73lPJjAbq9lUv+71P7uEdRHdrrOlm8+1zE8/OBy6MUqdg==", + "version": "5.15.14", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.14.tgz", + "integrity": "sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==", "dependencies": { "@babel/runtime": "^7.23.9", "@types/prop-types": "^15.7.11", @@ -1974,9 +2005,9 @@ } }, "node_modules/@mui/x-date-pickers": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.19.7.tgz", - "integrity": "sha512-BCTOQjAuyU29Ymd2FJrHHdRh0U6Qve7MsthdrD2jjaMaR8ou455JuxsNTQUGSpiMkGHWOMVq+B8N1EBcSYH63g==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.20.0.tgz", + "integrity": "sha512-q/x3rNmPYMXnx75+3s9pQb1YDtws9y5bwxpxeB3EW88oCp33eS7bvJpeuoCA1LzW/PpVfIRhi5RCyAvrEeTL7Q==", "dependencies": { "@babel/runtime": "^7.23.2", "@mui/base": "^5.0.0-beta.22", @@ -3145,12 +3176,6 @@ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, "node_modules/@types/statuses": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.5.tgz", @@ -3179,25 +3204,23 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.2.0.tgz", - "integrity": "sha512-mdekAHOqS9UjlmyF/LSs6AIEvfceV749GFxoBAjwAv0nkevfKHWQFDMcBZWUiIC5ft6ePWivXoS36aKQ0Cy3sw==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.12.0.tgz", + "integrity": "sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.2.0", - "@typescript-eslint/type-utils": "7.2.0", - "@typescript-eslint/utils": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/type-utils": "7.12.0", + "@typescript-eslint/utils": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -3213,53 +3236,20 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/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==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/parser": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.2.0.tgz", - "integrity": "sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.12.0.tgz", + "integrity": "sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.2.0", - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/typescript-estree": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0", + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/typescript-estree": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", "debug": "^4.3.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -3275,16 +3265,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", - "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz", + "integrity": "sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0" + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -3292,18 +3282,18 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.2.0.tgz", - "integrity": "sha512-xHi51adBHo9O9330J8GQYQwrKBqbIPJGZZVQTHHmy200hvkLZFWJIFtAG/7IYTWUyun6DE6w5InDReePJYJlJA==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.12.0.tgz", + "integrity": "sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.2.0", - "@typescript-eslint/utils": "7.2.0", + "@typescript-eslint/typescript-estree": "7.12.0", + "@typescript-eslint/utils": "7.12.0", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -3319,12 +3309,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", - "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.12.0.tgz", + "integrity": "sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==", "dev": true, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -3332,22 +3322,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz", - "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.12.0.tgz", + "integrity": "sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -3359,26 +3349,11 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/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==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -3386,28 +3361,19 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/utils": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.2.0.tgz", - "integrity": "sha512-YfHpnMAGb1Eekpm3XRK8hcMwGLGsnT6L+7b2XyRv6ouDuJU1tZir1GS2i0+VXRatMwSI1/UfcyPe53ADkU+IuA==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.12.0.tgz", + "integrity": "sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.2.0", - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/typescript-estree": "7.2.0", - "semver": "^7.5.4" + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/typescript-estree": "7.12.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -3417,50 +3383,17 @@ "eslint": "^8.56.0" } }, - "node_modules/@typescript-eslint/utils/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==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", - "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz", + "integrity": "sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.2.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.12.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -7794,9 +7727,9 @@ } }, "node_modules/katex": { - "version": "0.16.9", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.9.tgz", - "integrity": "sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.10.tgz", + "integrity": "sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" @@ -8865,9 +8798,9 @@ } }, "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -9556,9 +9489,9 @@ } }, "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "dev": true, "funding": [ { @@ -9577,7 +9510,7 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -9725,9 +9658,9 @@ } }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dependencies": { "loose-envify": "^1.1.0" }, @@ -9736,15 +9669,15 @@ } }, "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==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dependencies": { "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^18.3.1" } }, "node_modules/react-i18next": { @@ -10342,9 +10275,9 @@ } }, "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "dependencies": { "loose-envify": "^1.1.0" } @@ -10496,9 +10429,9 @@ } }, "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==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -11437,14 +11370,14 @@ } }, "node_modules/vite": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz", - "integrity": "sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==", + "version": "5.2.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.12.tgz", + "integrity": "sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==", "dev": true, "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "rollup": "^4.13.0" }, "bin": { "vite": "bin/vite.js" @@ -11532,6 +11465,412 @@ } } }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" + } + }, "node_modules/vitest": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.3.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index dd3666b1..5e3a01e3 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -38,10 +38,10 @@ "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", "@mui/icons-material": "^5.15.0", - "@mui/lab": "*", + "@mui/lab": "^5.0.0-alpha.170", "@mui/material": "^5.15.0", "@mui/system": "^5.15.0", - "@mui/x-date-pickers": "^6.19.4", + "@mui/x-date-pickers": "^6.20.0", "@reduxjs/toolkit": "^2.0.1", "@types/geojson": "^7946.0.13", "country-flag-icons": "^1.5.9", @@ -50,8 +50,8 @@ "i18next-browser-languagedetector": "^7.2.0", "i18next-http-backend": "^2.4.2", "json5": "^2.2.3", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", "react-i18next": "^13.5.0", "react-lazyload": "github:twobin/react-lazyload", "react-markdown": "^9.0.1", @@ -79,8 +79,8 @@ "@types/react-lazyload": "^3.2.3", "@types/react-redux": "^7.1.33", "@types/react-scroll-sync": "^0.9.0", - "@typescript-eslint/eslint-plugin": "^7.2.0", - "@typescript-eslint/parser": "^7.2.0", + "@typescript-eslint/eslint-plugin": "^7.12.0", + "@typescript-eslint/parser": "^7.12.0", "@vitejs/plugin-react": "^4.2.1", "@vitest/coverage-v8": "^1.3.1", "eslint": "^8.57.0", diff --git a/frontend/src/App.scss b/frontend/src/App.scss index 70ebea8c..0fc7a3c0 100644 --- a/frontend/src/App.scss +++ b/frontend/src/App.scss @@ -48,3 +48,29 @@ body { border-radius: 13px; border: 3px solid transparent; } + +/* New CSS class for different heights in Firefox and Edge for the CmpartmentsRow listItem */ +/* Firefox */ +@-moz-document url-prefix() { + .row { + height: 45px; + } +} + +/* Chrome, Edge, and Safari */ +.row { + height: 40px; +} + +/* New CSS class for different PaddingTop in Firefox and Edge for aligning the sync scroling row in all the components */ +/* Firefox */ +@-moz-document url-prefix() { + .datepicker-paddingTop { + padding-top: 24px; + } +} + +/* Chrome, Edge, and Safari */ +.datepicker-paddingTop { + padding-top: 19px; +} diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 3f29be74..88423f38 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -7,7 +7,7 @@ import {Provider} from 'react-redux'; import './App.scss'; import TopBar from './components/TopBar'; -import Sidebar from './components/Sidebar'; +import SidebarContainer from './components/Sidebar/SidebarContainer'; import MainContent from './components/MainContent'; import {Persistor, Store} from './store'; import Box from '@mui/material/Box'; @@ -19,6 +19,8 @@ import {selectDistrict} from './store/DataSelectionSlice'; import {I18nextProvider, useTranslation} from 'react-i18next'; import i18n from './util/i18n'; import {MUILocalization} from './components/shared/MUILocalization'; +import {DataProvider} from 'DataContext'; + import AuthProvider from './components/AuthProvider'; /** * This is the root element of the React application. It divides the main screen area into the three main components. @@ -33,23 +35,25 @@ export default function App(): JSX.Element { - - - - - - + + + + + + + + - + diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx new file mode 100644 index 00000000..56143502 --- /dev/null +++ b/frontend/src/DataContext.tsx @@ -0,0 +1,583 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {useGetSimulationStartValues} from 'components/ScenarioComponents/hooks'; +import React, {createContext, useState, useEffect, useMemo} from 'react'; +import {useAppSelector} from 'store/hooks'; +import { + useGetCaseDataByDateQuery, + useGetCaseDataByDistrictQuery, + useGetCaseDataSingleSimulationEntryQuery, +} from 'store/services/caseDataApi'; +import { + useGetMultipleGroupFilterDataQuery, + useGetGroupCategoriesQuery, + useGetGroupSubcategoriesQuery, + useGetMultipleGroupFilterDataLineChartQuery, + GroupCategories, + GroupSubcategories, +} from 'store/services/groupApi'; +import { + useGetPercentileDataQuery, + useGetSimulationDataByDateQuery, + useGetMultipleSimulationDataByNodeQuery, + useGetSimulationModelQuery, + useGetSimulationModelsQuery, + useGetSimulationsQuery, + useGetMultipleSimulationEntryQuery, +} from 'store/services/scenarioApi'; +import {CaseDataByNode} from 'types/caseData'; +import {Simulations, SimulationModel, SimulationDataByNode, SimulationMetaData} from 'types/scenario'; +import {Dictionary} from 'util/util'; +import data from '../assets/lk_germany_reduced.geojson?url'; +import {GeoJSON, GeoJsonProperties} from 'geojson'; +import cologneDistricts from '../assets/stadtteile_cologne.geojson?url'; +import {District} from 'types/cologneDistricts'; +import searchbarMapData from '../assets/lk_germany_reduced_list.json?url'; +import searchbarCologneData from '../assets/stadtteile_cologne_list.json'; +import {useTranslation} from 'react-i18next'; +import {GroupResponse} from 'types/group'; +import {color} from '@amcharts/amcharts5/.internal/core/util/Color'; +import {getScenarioPrimaryColor} from 'util/Theme'; +import {useTheme} from '@mui/material'; +import {LineChartData} from 'types/lineChart'; + +// Create the context +export const DataContext = createContext<{ + geoData: GeoJSON | undefined; + mapData: {id: string; value: number}[] | undefined; + areMapValuesFetching: boolean; + searchBarData: GeoJsonProperties[] | undefined; + chartData: LineChartData[] | undefined; + isChartDataFetching: boolean; + startValues: Dictionary | null; + groupCategories: GroupCategories | undefined; + groupSubCategories: GroupSubcategories | undefined; + scenarioListData: Simulations | undefined; + caseScenarioSimulationData: CaseDataByNode | undefined; + simulationModelData: SimulationModel | undefined; + caseScenarioData: SimulationDataByNode | undefined; + scenarioSimulationDataForCardFiltersValues: Dictionary[] | undefined; + getId: number[] | undefined; + scenarioSimulationDataForCard: (SimulationDataByNode | undefined)[] | undefined; +}>({ + geoData: undefined, + mapData: undefined, + areMapValuesFetching: false, + searchBarData: undefined, + chartData: undefined, + isChartDataFetching: false, + startValues: null, + groupCategories: undefined, + groupSubCategories: undefined, + scenarioListData: undefined, + caseScenarioSimulationData: undefined, + simulationModelData: undefined, + caseScenarioData: undefined, + scenarioSimulationDataForCardFiltersValues: undefined, + getId: undefined, + scenarioSimulationDataForCard: undefined, +}); + +// Create a provider component +export const DataProvider = ({children}: {children: React.ReactNode}) => { + const {t: defaultT} = useTranslation(); + const {t: backendT} = useTranslation('backend'); + const theme = useTheme(); + + const [geoData, setGeoData] = useState(); + const [mapData, setMapData] = useState<{id: string; value: number}[] | undefined>(undefined); + const [searchBarData, setSearchBarData] = useState(undefined); + const [simulationModelKey, setSimulationModelKey] = useState('unset'); + const [chartData, setChartData] = useState(undefined); + + const selectedDistrict = useAppSelector((state) => state.dataSelection.district.ags); + const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); + const activeScenarios = useAppSelector((state) => state.dataSelection.activeScenarios); + const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); + const selectedDate = useAppSelector((state) => state.dataSelection.date); + const groupFilterList = useAppSelector((state) => state.dataSelection.groupFilters); + const scenarioList = useAppSelector((state) => state.scenarioList); + + const startValues = useGetSimulationStartValues(selectedDistrict); + + const caseScenarioSimulationData = useGetCaseDataByDistrictQuery({ + node: '00000', + groups: null, + compartments: null, + }); + + const {data: groupCategories} = useGetGroupCategoriesQuery(); + + const {data: groupSubCategories} = useGetGroupSubcategoriesQuery(); + + const {data: scenarioListData} = useGetSimulationsQuery(); + + const getId = useMemo(() => { + return scenarioListData?.results.map((simulation: SimulationMetaData) => { + return simulation.id; + }); + }, [scenarioListData?.results]); + + const {data: simulationModelsData} = useGetSimulationModelsQuery(); + + const {data: simulationModelData} = useGetSimulationModelQuery(simulationModelKey, { + skip: simulationModelKey === 'unset', + }); + + const {data: caseScenarioData} = useGetCaseDataSingleSimulationEntryQuery( + { + node: selectedDistrict, + day: selectedDate ?? '', + groups: ['total'], + }, + {skip: selectedDate === null || !selectedDistrict} + ); + + const {data: scenarioSimulationDataForCardFiltersValues} = useGetMultipleGroupFilterDataQuery( + { + ids: getId ?? [], + node: selectedDistrict, + day: selectedDate ?? '', + groupFilterList: groupFilterList, + }, + {skip: !selectedDate || !selectedDistrict} + ); + + const {data: scenarioSimulationDataForCard} = useGetMultipleSimulationEntryQuery( + { + ids: getId ?? [], + node: selectedDistrict, + day: selectedDate ?? '', + groups: ['total'], + }, + {skip: !selectedDate || !selectedDistrict} + ); + + const {currentData: mapSimulationData, isFetching: mapIsSimulationDataFetching} = useGetSimulationDataByDateQuery( + { + id: selectedScenario ?? 0, + day: selectedDate ?? '', + groups: ['total'], + compartments: [selectedCompartment ?? ''], + }, + {skip: selectedScenario == null || selectedScenario === 0 || !selectedCompartment || !selectedDate} + ); + + const {currentData: mapCaseData, isFetching: mapIsCaseDataFetching} = useGetCaseDataByDateQuery( + { + day: selectedDate ?? '', + groups: ['total'], + compartments: [selectedCompartment ?? ''], + }, + {skip: selectedScenario == null || selectedScenario > 0 || !selectedCompartment || !selectedDate} + ); + + const {data: chartSimulationData, isFetching: chartSimulationFetching} = useGetMultipleSimulationDataByNodeQuery( + { + // Filter only scenarios (scenario id 0 is case data) + ids: activeScenarios + ? activeScenarios.filter((s: number) => { + return ( + s !== 0 && + (scenarioList.scenarios[s] as { + id: number; + label: string; + }) + ); + }) + : [], + node: selectedDistrict, + groups: ['total'], + compartments: [selectedCompartment ?? ''], + }, + {skip: !selectedCompartment || !selectedDistrict} + ); + + const {data: chartCaseData, isFetching: chartCaseDataFetching} = useGetCaseDataByDistrictQuery( + { + node: selectedDistrict, + groups: ['total'], + compartments: [selectedCompartment ?? ''], + }, + {skip: !selectedCompartment || !selectedDistrict} + ); + + const {data: chartPercentileData} = useGetPercentileDataQuery( + { + id: selectedScenario as number, + node: selectedDistrict, + groups: ['total'], + compartment: selectedCompartment as string, + }, + { + skip: selectedScenario === null || selectedScenario === 0 || !selectedCompartment || !selectedDistrict, + } + ); + + const {data: chartGroupFilterData} = useGetMultipleGroupFilterDataLineChartQuery( + groupFilterList && selectedScenario && selectedDistrict && selectedCompartment + ? Object.values(groupFilterList) + .filter((groupFilter) => groupFilter.isVisible) + .map((groupFilter) => { + return { + id: selectedScenario, + node: selectedDistrict, + compartment: selectedCompartment, + groupFilter: groupFilter, + }; + }) + : [], + { + skip: !selectedDistrict || selectedScenario === null || selectedScenario === 0, + } + ); + + // Effect to fetch the geoJSON files for the map displays. + useEffect(() => { + /* [CDtemp-begin] */ + // Fetch both in one Promise + Promise.all([ + fetch(data, { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + }).then((result) => result.json()), + fetch(cologneDistricts, { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + }).then((result) => result.json()), + ]).then( + // on promises accept + ([geodata, colognedata]: [GeoJSON.FeatureCollection, GeoJSON.FeatureCollection]) => { + // Remove Cologne from data + geodata.features = geodata.features.filter((feat) => feat.properties!['RS'] !== '05315'); + // Add RS, GEN, BEZ to cologne districts + geodata.features.push( + ...colognedata.features.map((feat) => { + // Append Stadtteil ID to AGS + feat.properties!['RS'] = `05315${feat.properties!['Stadtteil_ID']}`; + // Append Name (e.g. Köln - Braunsfeld (Lindenthal)) + feat.properties!['GEN'] = `Köln - ${feat.properties!['Stadtteil']} (${feat.properties!['Stadtbezirk']})`; + // Use ST for Stadtteil + feat.properties!['BEZ'] = 'ST'; + return feat; + }) + ); + setGeoData(geodata as GeoJSON); + }, + // on promises reject + () => { + console.warn('Failed to fetch geoJSON'); + } + ); + /* [CDtemp-end] */ + fetch(data, { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + }) + .then((response) => response.json()) + .then( + // resolve Promise + (geojson: GeoJSON) => { + setGeoData(geojson); + }, + // reject promise + () => { + console.warn('Failed to fetch geoJSON'); + } + ); + // This should only run once when the page loads + }, []); + + // This effect fetches the list of available districts (nodes) for the search bar. + useEffect(() => { + // get option list from assets + fetch(searchbarMapData, { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + }) + .then((response) => { + // interpret content as JSON + return response.json(); + }) + .then( + // Resolve Promise + (jsonlist: GeoJsonProperties[]) => { + /* [CDtemp-begin] */ + // append germany to list + jsonlist.push({RS: '00000', GEN: defaultT('germany'), BEZ: ''} as unknown as District); + // append city districts + jsonlist.push( + ...(searchbarCologneData as unknown as Array).map((dist) => { + return { + RS: `05315${dist.Stadtteil_ID}`, + GEN: `Köln - ${dist.Stadtteil} (${dist.Stadtbezirk})`, + BEZ: 'ST', + }; + }) + ); + /* [CDtemp-end] */ + // sort list to put germany at the right place (loading and sorting takes 1.5 ~ 2 sec) + jsonlist.sort((a: GeoJsonProperties, b: GeoJsonProperties) => { + return String(a!.GEN).localeCompare(String(b!.GEN)); + }); + // fill countyList state with list + setSearchBarData(jsonlist); + }, + // Reject Promise + () => { + console.warn('Did not receive proper county list'); + } + ); + // this init should only run once on first render + }, [defaultT]); + + // This useEffect is used in order to set the SimulationModelKey + useEffect(() => { + if (simulationModelsData && simulationModelsData.results.length > 0) { + const {key} = simulationModelsData.results[0]; + setSimulationModelKey(key); + } + // This effect should re-run whenever simulationModelsData changes. + }, [simulationModelsData]); + + // This effect sets the data for the map according to the selections. + useEffect(() => { + if (mapSimulationData && selectedCompartment && selectedScenario) { + setMapData( + mapSimulationData.results + .filter((element: {name: string}) => { + return element.name != '00000'; + }) + .map((element: {name: string; compartments: {[key: string]: number}}) => { + return {id: element.name, value: element.compartments[selectedCompartment]} as {id: string; value: number}; + }) + ); + } else if (mapCaseData && selectedCompartment) { + setMapData( + mapCaseData.results + .filter((element: {name: string}) => { + return element.name != '00000'; + }) + .map((element: {name: string; compartments: {[key: string]: number}}) => { + return {id: element.name, value: element.compartments[selectedCompartment]}; + }) + ); + } + // This effect should re-run whenever there is new data or the selected card or compartment changed. + }, [mapSimulationData, selectedCompartment, mapCaseData, selectedScenario]); + + // This effect sets the chart case data based on the selection. + useEffect(() => { + let lineChartData: LineChartData | null = null; + if ( + chartCaseData && + chartCaseData.results && + chartCaseData.results.length > 0 && + selectedCompartment && + activeScenarios && + activeScenarios.includes(0) + ) { + // Process the case data for the selected compartment + const processedChartCaseData = chartCaseData.results.map( + (element: {day: string; compartments: {[key: string]: number}}) => { + return {day: element.day, value: element.compartments[selectedCompartment]} as {day: string; value: number}; + } + ); + // Push the processed case data into the line chart data + lineChartData = { + values: processedChartCaseData, + name: defaultT('chart.caseData'), + valueYField: 0, + stroke: {color: color('#000')}, + serieId: 0, + }; + } + // Update the chart data state with the new line chart data + setChartData((prevData) => { + if (prevData && prevData.length > 0) { + const seriesWithoutCase = prevData.filter((serie) => serie.serieId !== 0); + if (seriesWithoutCase.length > 0 && lineChartData) return [lineChartData, ...seriesWithoutCase]; + else if (seriesWithoutCase.length) return [...seriesWithoutCase]; + } + if (lineChartData) return [lineChartData]; + return []; + }); + // This should re-run whenever the case data changes, or a different compartment is selected. + }, [chartCaseData, selectedCompartment, activeScenarios, defaultT]); + + // This effect sets the chart simulation data based on the selection. + useEffect(() => { + const lineChartData: LineChartData[] = []; + if (chartSimulationData && chartSimulationData.length > 0 && selectedCompartment && activeScenarios) { + // Process the simulation data for the selected compartment + const processedChartSimulationData = chartSimulationData.map((element: SimulationDataByNode | null) => { + if (element && element.results && element.results.length > 0) { + return element.results.map((element: {day: string; compartments: {[key: string]: number}}) => { + return {day: element.day, value: element.compartments[selectedCompartment]} as {day: string; value: number}; + }); + } + return []; + }); + // Define the scenario names for the simulation data + const scenarioNames = Object.values(scenarioList.scenarios) + .filter((scenario) => activeScenarios.includes(scenario.id)) + .map((scenario) => backendT(`scenario-names.${scenario.label}`)); + let scenarioNamesIndex = 0; + // Push the processed simulation data into the line chart data + for (let i = 0; i < processedChartSimulationData.length; i++) { + if (processedChartSimulationData[i] && scenarioNames[scenarioNamesIndex]) { + lineChartData.push({ + values: processedChartSimulationData[i], + name: scenarioNames[scenarioNamesIndex], + stroke: {color: color(getScenarioPrimaryColor(i, theme))}, + serieId: i, + valueYField: i, + tooltipText: `[bold ${getScenarioPrimaryColor(i, theme)}]${scenarioNames[scenarioNamesIndex++]}:[/] {${i}}`, + }); + } + } + } + // Update the chart data state with the new line chart data + setChartData((prevData) => { + if (prevData && prevData.length > 0) { + const seriesWithoutScenarios = prevData.filter( + (serie) => typeof serie.serieId === 'string' || serie.serieId === 0 + ); + if (seriesWithoutScenarios.length > 0) return [...seriesWithoutScenarios, ...lineChartData]; + } + return lineChartData; + }); + // This should re-run whenever the simulation data changes, or a different compartment is selected. + }, [chartSimulationData, selectedCompartment, theme, activeScenarios, scenarioList, backendT]); + + // This effect sets the chart group filter data based on the selection. + useEffect(() => { + const lineChartData: LineChartData[] = []; + if ( + chartGroupFilterData && + Object.keys(chartGroupFilterData).length > 0 && + selectedCompartment && + selectedScenario + ) { + const processedData: Dictionary<{day: string; value: number}[]> = {}; + // Process the group filter data for the selected compartment + Object.keys(chartGroupFilterData).forEach((key) => { + processedData[key] = chartGroupFilterData[key].results.map( + (element: {day: string; compartments: {[key: string]: number}}) => { + return {day: element.day, value: element.compartments[selectedCompartment]} as {day: string; value: number}; + } + ); + }); + // Define stroke styles for different group filters + const groupFilterStrokes = [ + [2, 4], // dotted + [8, 4], // dashed + [8, 4, 2, 4], // dash-dotted + [8, 4, 2, 4, 2, 4], // dash-dot-dotted + ]; + // Push the processed group filter data into the line chart data + for (let i = 0; i < Object.keys(processedData).length; i++) { + lineChartData.push({ + values: processedData[Object.keys(processedData)[i]], + name: Object.keys(processedData)[i], + stroke: { + color: color(getScenarioPrimaryColor(selectedScenario, theme)), + strokeDasharray: groupFilterStrokes[i % groupFilterStrokes.length], + }, + serieId: `group-filter-${Object.keys(processedData)[i]}`, + valueYField: Object.keys(processedData)[i], + tooltipText: `[bold ${getScenarioPrimaryColor(selectedScenario, theme)}]${Object.keys(processedData)[i]}:[/] {${Object.keys(processedData)[i]}}`, + parentId: selectedScenario, + }); + } + } + // Update the chart data state with the new line chart data + setChartData((prevData) => { + if (prevData && prevData.length > 0) { + const seriesWithoutGroup = prevData.filter( + (serie) => typeof serie.serieId === 'number' || !serie.serieId.startsWith('group-filter') + ); + if (seriesWithoutGroup.length > 0) return [...seriesWithoutGroup, ...lineChartData]; + } + return lineChartData; + }); + // This should re-run whenever the group filter data changes, or a different compartment is selected. + }, [chartGroupFilterData, selectedCompartment, selectedScenario, theme, groupFilterList]); + + // This effect sets the chart percentile data based on the selection. + useEffect(() => { + let lineChartData: LineChartData | null = null; + if (chartPercentileData && chartPercentileData.length > 0 && selectedCompartment && selectedScenario) { + const processedPercentileData: Array<{day: string; value: number[]}> = []; + for (let i = 0; chartPercentileData[0]?.results && i < Object.keys(chartPercentileData[0].results).length; i++) { + if ( + chartPercentileData[0].results && + chartPercentileData[1].results && + Object.values(chartPercentileData[0].results)[i].day === Object.values(chartPercentileData[1].results)[i].day + ) + processedPercentileData.push({ + day: Object.values(chartPercentileData[0].results)[i].day, + value: [ + Object.values(chartPercentileData[0].results)[i].compartments[selectedCompartment], + Object.values(chartPercentileData[1].results)[i].compartments[selectedCompartment], + ], + }); + } + lineChartData = { + values: processedPercentileData, + serieId: 'percentiles', + valueYField: 'percentileUp', + openValueYField: 'percentileDown', + visible: true, + fill: color(getScenarioPrimaryColor(selectedScenario, theme)), + fillOpacity: 0.3, + stroke: {strokeWidth: 0}, + parentId: selectedScenario, + }; + } + setChartData((prevData) => { + if (prevData && prevData.length > 0) { + const seriesWithoutPercentiles = prevData.filter((serie) => serie.serieId !== 'percentiles'); + if (seriesWithoutPercentiles.length > 0 && lineChartData) return [...seriesWithoutPercentiles, lineChartData]; + else if (seriesWithoutPercentiles.length > 0) return [...seriesWithoutPercentiles]; + } + if (lineChartData) return [lineChartData]; + return []; + }); + // This should re-run whenever the data changes, or whenever a different scenario or a different compartment is selected. + }, [chartPercentileData, selectedCompartment, selectedScenario, theme]); + + return ( + + {children} + + ); +}; diff --git a/frontend/src/__tests__/components/LineChart.test.tsx b/frontend/src/__tests__/components/LineChart.test.tsx new file mode 100644 index 00000000..eda9e40d --- /dev/null +++ b/frontend/src/__tests__/components/LineChart.test.tsx @@ -0,0 +1,68 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import LineChart from 'components/LineChartComponents/LineChart'; +import React, {useMemo} from 'react'; +import {render, screen} from '@testing-library/react'; +import {describe, test, expect, vi} from 'vitest'; +import {ResizeObserverMock} from '__tests__/mocks/resize'; +import {I18nextProvider} from 'react-i18next'; +import i18n from '../../util/i18nForTests'; +import {color} from '@amcharts/amcharts5/.internal/core/util/Color'; + +const LineChartTest = () => { + const localization = useMemo(() => { + return { + customLang: 'backend', + overrides: { + 'compartment.Infected': 'infection-states.Infected', + }, + }; + }, []); + const caseData = useMemo(() => { + return { + name: 'chart.caseData', + values: [ + { + day: '2021-04-01', + value: 3723.5826785713944, + }, + { + day: '2021-04-02', + value: 3688.2426285714214, + }, + ], + serieId: 0, + valueYField: 0, + stroke: { + color: color('#000'), + strokeWidth: 2, + }, + }; + }, []); + return ( +
+ {}} + minDate={'2020-02-20'} + maxDate={'2020-02-20'} + referenceDay={'2020-02-20'} + localization={localization} + lineChartData={[caseData]} + /> +
+ ); +}; +describe('LineChart', () => { + vi.stubGlobal('ResizeObserver', ResizeObserverMock); + test('renders LineChart', () => { + render( + + + + ); + + expect(screen.getByTestId('chartdiv')).toBeInTheDocument(); + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/CardContainer.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/CardContainer.test.tsx new file mode 100644 index 00000000..61c2724f --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/CardContainer.test.tsx @@ -0,0 +1,140 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import CardContainer from 'components/ScenarioComponents/CardsComponents/CardContainer'; +import React, {useState} from 'react'; +import {FilterValue, CardValue} from 'types/card'; +import {GroupFilter} from 'types/group'; +import {Dictionary} from 'util/util'; +import {describe, test, expect} from 'vitest'; + +import {render, screen} from '@testing-library/react'; +import Theme from 'util/Theme'; +import {ThemeProvider} from '@mui/system'; + +const CardContainerTest = () => { + // Mock data for the props + const compartmentsExpanded = true; + const selectedCompartment = 'Compartment 1'; + const compartments = ['Compartment 1', 'Compartment 2', 'Compartment 3']; + const minCompartmentsRows = 1; + const maxCompartmentsRows = 3; + const filterValues: Dictionary = { + 'Compartment 1': [ + {filteredTitle: 'Title 1', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + ], + 'Compartment 2': [ + {filteredTitle: 'Title 2', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + ], + 'Compartment 3': [ + {filteredTitle: 'Title 3', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + ], + }; + const scenarios = [ + {id: 0, label: 'Scenario 1'}, + {id: 1, label: 'Scenario 2'}, + {id: 2, label: 'Scenario 3'}, + ]; + const cardValues: Dictionary = { + '0': { + compartmentValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}, + startValues: {'Compartment 1': 100, 'Compartment 2': 200, 'Compartment 3': 307}, + }, + '1': { + compartmentValues: {'Compartment 1': 40, 'Compartment 2': 50, 'Compartment 3': 60}, + startValues: {'Compartment 1': 100, 'Compartment 2': 200, 'Compartment 3': 307}, + }, + '2': { + compartmentValues: {'Compartment 1': 70, 'Compartment 2': 80, 'Compartment 3': 90}, + startValues: {'Compartment 1': 100, 'Compartment 2': 200, 'Compartment 3': 307}, + }, + }; + const groupFilters: Dictionary = { + '0': { + id: 'group1', + name: 'Group 1', + isVisible: true, + groups: { + 'Subgroup 1': ['Item 1', 'Item 2'], + 'Subgroup 2': ['Item 3', 'Item 4'], + }, + }, + '1': { + id: 'group2', + name: 'Group 2', + isVisible: false, + groups: { + 'Subgroup 3': ['Item 5', 'Item 6'], + 'Subgroup 4': ['Item 7', 'Item 8'], + }, + }, + }; + + const [activeScenarios, setActiveScenarios] = useState([0, 1, 2, 3]); + const [selectedScenario, setSelectedScenario] = useState(0); + + return ( +
+ + + +
+ ); +}; + +describe('CardContainer', () => { + test('renders data cards correctly', () => { + render(); + expect(screen.getByTestId('card-container')).toBeInTheDocument(); + }); + test('renders filter values correctly', () => { + render(); + + // Check if filter values are rendered correctly for each compartment + expect(screen.getByText('Scenario 1')).toBeInTheDocument(); + expect(screen.getByText('Scenario 2')).toBeInTheDocument(); + expect(screen.getByText('Scenario 3')).toBeInTheDocument(); + }); + const compartments: string[] = ['Compartment 1', 'Compartment 2', 'Compartment 3']; + + const filterValues: Dictionary = { + 'Compartment 1': [ + {filteredTitle: 'Title 1', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + ], + 'Compartment 2': [ + {filteredTitle: 'Title 2', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + ], + 'Compartment 3': [ + {filteredTitle: 'Title 3', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + ], + }; + + test('renders compartments correctly', async () => { + render(); + + // Check if compartment values are rendered correctly + for (const compartment of compartments) { + for (const {filteredValues} of filterValues[compartment]) { + if (filteredValues) { + for (const value of Object.values(filteredValues)) { + expect(await screen.findByText(value.toString())).toBeInTheDocument(); + } + } + } + } + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/DataCard.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/DataCard.test.tsx new file mode 100644 index 00000000..9efe2cff --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/DataCard.test.tsx @@ -0,0 +1,181 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useState} from 'react'; +import {render, screen} from '@testing-library/react'; +import {describe, test, expect} from 'vitest'; +import {Dictionary} from 'util/util'; +import {GroupFilter} from 'types/group'; +import {filterValue} from 'types/card'; +import Theme from 'util/Theme'; +import {ThemeProvider} from '@mui/system'; +import DataCard from 'components/ScenarioComponents/CardsComponents/DataCard'; + +const DataCardTest = () => { + const Index = 0; + const CompartmentValues: Dictionary = { + 'Compartment 1': 10, + 'Compartment 2': 20, + 'Compartment 3': 30, + }; + const StartValues: Dictionary = { + 'Compartment 1': 100, + 'Compartment 2': 200, + 'Compartment 3': 307, + }; + const Label = 'Scenario 1'; + const CompartmentsExpanded = true; + const Compartments = ['Compartment 1', 'Compartment 2', 'Compartment 3']; + const SelectedCompartment = 'Compartment 1'; + const SelectedScenario = true; + const Color = 'primary'; + const ActiveScenarios = [0, 1, 2]; + const FilterValues: Dictionary = { + '0': [ + {filteredTitle: 'Group 1', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + {filteredTitle: 'Group 2', filteredValues: {'Compartment 1': 40, 'Compartment 2': 50, 'Compartment 3': 60}}, + {filteredTitle: 'Group 3', filteredValues: {'Compartment 1': 40, 'Compartment 2': 50, 'Compartment 3': 60}}, + ], + '1': [ + {filteredTitle: 'Group 1', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + {filteredTitle: 'Group 2', filteredValues: {'Compartment 1': 40, 'Compartment 2': 50, 'Compartment 3': 60}}, + {filteredTitle: 'Group 3', filteredValues: {'Compartment 1': 40, 'Compartment 2': 50, 'Compartment 3': 60}}, + ], + '2': [ + {filteredTitle: 'Group 1', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + {filteredTitle: 'Group 2', filteredValues: {'Compartment 1': 40, 'Compartment 2': 50, 'Compartment 3': 60}}, + {filteredTitle: 'Group 3', filteredValues: {'Compartment 1': 40, 'Compartment 2': 50, 'Compartment 3': 60}}, + ], + }; + const MinCompartmentsRows = 1; + const MaxCompartmentsRows = 3; + const GroupFilters: Dictionary = { + '0': { + id: 'group1', + name: 'Group 1', + isVisible: true, + groups: { + 'Subgroup 1': ['Item 1', 'Item 2'], + 'Subgroup 2': ['Item 3', 'Item 4'], + }, + }, + '1': { + id: 'group2', + name: 'Group 2', + isVisible: false, + groups: { + 'Subgroup 1': ['Item 1', 'Item 2'], + 'Subgroup 2': ['Item 3', 'Item 4'], + }, + }, + '2': { + id: 'group3', + name: 'Group 3', + isVisible: true, + groups: { + 'Subgroup 1': ['Item 1', 'Item 2'], + 'Subgroup 2': ['Item 3', 'Item 4'], + }, + }, + }; + + const [activeScenarios, setActiveScenarios] = useState(ActiveScenarios); + const [, setSelectedScenario] = useState(Index); + + return ( + + + + ); +}; + +describe('DataCard', () => { + test('renders DataCard correctly', () => { + render(); + expect(screen.getByText('Scenario 1')).toBeInTheDocument(); + }); + + test('renders compartment values correctly', () => { + render(); + // Verify if compartment values are rendered correctly + const compartments1 = screen.getAllByText('10'); + expect(compartments1).toHaveLength(2); + const compartments2 = screen.getAllByText('20'); + expect(compartments2).toHaveLength(2); + const compartments3 = screen.getAllByText('30'); + expect(compartments3).toHaveLength(2); + }); + + test('renders filter titles correctly', () => { + render(); + // Verify if filter titles are rendered correctly + expect(screen.getByText('Group 1')).toBeInTheDocument(); + // That's works because the element is actually in the dom but the visibility is set to false so it's not render + expect(screen.getByText('Group 2')).toBeInTheDocument(); + expect(screen.getByText('Group 3')).toBeInTheDocument(); + }); + const GroupFilters: Dictionary = { + '0': { + id: 'group1', + name: 'Group 1', + isVisible: true, + groups: { + 'Subgroup 1': ['Item 1', 'Item 2'], + 'Subgroup 2': ['Item 3', 'Item 4'], + }, + }, + '1': { + id: 'group2', + name: 'Group 2', + isVisible: false, + groups: { + 'Subgroup 1': ['Item 1', 'Item 2'], + 'Subgroup 2': ['Item 3', 'Item 4'], + }, + }, + '2': { + id: 'group3', + name: 'Group 3', + isVisible: true, + groups: { + 'Subgroup 1': ['Item 1', 'Item 2'], + 'Subgroup 2': ['Item 3', 'Item 4'], + }, + }, + }; + test('checks visibility based on group filters', () => { + render(); + // Verify visibility based on group filters + const group1 = screen.getByText('Group 1'); + const group2Element = screen.getByText('Group 2'); + if (GroupFilters['0'].isVisible) { + expect(group1).toBeInTheDocument(); + } else { + expect(group1).not.toBeInTheDocument(); + } + + if (GroupFilters['1'].isVisible) { + expect(group2Element).toBeVisible(); + } else { + expect(group2Element).not.toBeVisible(); + } + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardRows.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardRows.test.tsx new file mode 100644 index 00000000..fa2f2e04 --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardRows.test.tsx @@ -0,0 +1,86 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React from 'react'; +import {render, screen} from '@testing-library/react'; +import {describe, test, expect} from 'vitest'; +import {ThemeProvider} from '@mui/material/styles'; +import CardRows from 'components/ScenarioComponents/CardsComponents/MainCard/CardRows'; +import Theme from 'util/Theme'; + +describe('CardRows Component', () => { + const compartments = ['Compartment 1', 'Compartment 2']; + const compartmentValues = { + 'Compartment 1': 100, + 'Compartment 2': 200, + }; + const startValues = { + 'Compartment 1': 50, + 'Compartment 2': 100, + }; + const selectedCompartment = 'Compartment 1'; + const color = '#000000'; + const minCompartmentsRows = 1; + const maxCompartmentsRows = 2; + + test('renders compartment values and rates correctly', () => { + render( + + + + ); + + expect(screen.getByText('100')).toBeInTheDocument(); + expect(screen.getByText('200')).toBeInTheDocument(); + expect(screen.getAllByText('+100%')).toHaveLength(2); + }); + + test('applies the correct styles to selected compartment', () => { + render( + + + + ); + + const selectedElement = screen.getByText('100'); + expect(selectedElement.parentElement).toHaveStyle(`background-color: rgba(0, 0, 0, 0.1)`); + }); + + test('renders with arrows when arrow prop is true', () => { + render( + + + + ); + + expect(screen.getAllByTestId('ArrowDropUpIcon').length).toBe(2); + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTitle.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTitle.test.tsx new file mode 100644 index 00000000..df79e3d7 --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTitle.test.tsx @@ -0,0 +1,22 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React from 'react'; +import {render, screen} from '@testing-library/react'; +import {describe, test, expect} from 'vitest'; +import CardTitle from 'components/ScenarioComponents/CardsComponents/MainCard/CardTitle'; + +describe('CardTitle Component', () => { + test('renders the card title with the correct label', () => { + render(); + expect(screen.getByText('Test Label')).toBeInTheDocument(); + }); + + test('applies the correct color when the color prop is provided', () => { + render(); + const titleElement = screen.getByText('Test Label'); + expect(titleElement).toHaveStyle({ + color: '#00000', + }); + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTooltip.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTooltip.test.tsx new file mode 100644 index 00000000..632395e3 --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTooltip.test.tsx @@ -0,0 +1,53 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useState} from 'react'; +import {render, screen} from '@testing-library/react'; +import CardTooltip from 'components/ScenarioComponents/CardsComponents/MainCard/CardTooltip'; +import Theme from 'util/Theme'; +import {ThemeProvider} from '@mui/material'; +import {describe, test, expect} from 'vitest'; + +interface CardTooltipTestInterface { + hovertest: boolean; + index: number; + activeScenario: boolean; + scenarios: number[]; +} +const CardTooltipTest = ({hovertest, scenarios, index, activeScenario}: CardTooltipTestInterface) => { + const color = '#00000'; + const [activeScenarios, setActiveScenarios] = useState(scenarios); + const [numberSelectedScenario, setSelectedScenario] = useState(index); + + return ( + + + + ); +}; + +describe('CardTooltip', () => { + test('renders the tooltip when hover is true', () => { + render(); + expect(screen.getByRole('button')).toBeInTheDocument(); + expect(screen.getByRole('button')).toHaveAttribute('aria-label', 'scenario.deactivate'); + }); + test('does not render the tooltip when hover is false', () => { + render(); + expect(screen.queryByRole('button')).not.toBeInTheDocument(); + }); + test('renders the tooltip label scenario.activate correctly when hover is true and the scenario is not active', () => { + render(); + expect(screen.getByRole('button')).toBeInTheDocument(); + expect(screen.getByRole('button')).toHaveAttribute('aria-label', 'scenario.activate'); + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/MainCard.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/MainCard.test.tsx new file mode 100644 index 00000000..7fbae0a7 --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/MainCard.test.tsx @@ -0,0 +1,92 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useState} from 'react'; +import {render, screen, fireEvent} from '@testing-library/react'; +import {describe, test, expect} from 'vitest'; +import {ThemeProvider} from '@mui/material'; +import Theme from 'util/Theme'; +import MainCard from 'components/ScenarioComponents/CardsComponents/MainCard/MainCard'; +import {Dictionary} from 'util/util'; + +const MainCardTest = () => { + const Index = 0; + const CompartmentValues: Dictionary = { + 'Compartment 1': 10, + 'Compartment 2': 20, + 'Compartment 3': 30, + }; + const StartValues: Dictionary = { + 'Compartment 1': 100, + 'Compartment 2': 200, + 'Compartment 3': 307, + }; + const Label = 'Scenario 1'; + const CompartmentsExpanded = true; + const Compartments = ['Compartment 1', 'Compartment 2', 'Compartment 3']; + const SelectedCompartment = 'Compartment 1'; + const SelectedScenario = false; + const Hover = false; + const Color = 'primary'; + const ActiveScenarios = [1, 2]; + const MinCompartmentsRows = 1; + const MaxCompartmentsRows = 3; + + const [hover, setHover] = useState(Hover); + const [activeScenarios, setActiveScenarios] = useState(ActiveScenarios); + const [, setSelectedScenario] = useState(Index); + + return ( + + + + ); +}; + +describe('MainCard', () => { + test('renders MainCard correctly', () => { + render(); + expect(screen.getByText('Scenario 1')).toBeInTheDocument(); + }); + + test('renders compartment values correctly', () => { + render(); + // Verify if compartment values are rendered correctly + const compartments1 = screen.getAllByText('10'); + expect(compartments1).toHaveLength(1); + const compartments2 = screen.getAllByText('20'); + expect(compartments2).toHaveLength(1); + const compartments3 = screen.getAllByText('30'); + expect(compartments3).toHaveLength(1); + }); + + test('handles click event to activate and renders tooltip correctly on hover scenario', () => { + render(); + // Verify click event to select scenario + const card = screen.getByText('Scenario 1'); + fireEvent.mouseOver(card); + const tooltip = screen.getByLabelText('scenario.activate'); + fireEvent.click(tooltip); + expect(screen.getByLabelText('scenario.deactivate')).toBeVisible(); + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/CompartmentList.test.tsx b/frontend/src/__tests__/components/Scenario/CompartmentList.test.tsx deleted file mode 100644 index c16ed03c..00000000 --- a/frontend/src/__tests__/components/Scenario/CompartmentList.test.tsx +++ /dev/null @@ -1,93 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React from 'react'; -import {describe, test, vi, afterEach, beforeEach, expect} from 'vitest'; -import {act, cleanup, render, screen} from '@testing-library/react'; - -import i18n from '../../../util/i18nForTests'; - -import {I18nextProvider} from 'react-i18next'; -import {Provider} from 'react-redux'; -import {Store} from '../../../store'; -import {setStartDate} from '../../../store/DataSelectionSlice'; -import CompartmentList from '../../../components/Scenario/CompartmentList'; -import {MUILocalization} from '../../../components/shared/MUILocalization'; -import userEvent from '@testing-library/user-event'; - -describe('CompartmentList', () => { - vi.stubGlobal('fetch', async () => Promise.all([])); - - // Mock the ResizeObserver - const ResizeObserverMock = vi.fn(() => ({ - observe: vi.fn(), - unobserve: vi.fn(), - disconnect: vi.fn(), - })); - - vi.stubGlobal('ResizeObserver', ResizeObserverMock); - - beforeEach(() => { - Store.dispatch(setStartDate('2020-02-20')); - }); - - test('Date Loaded Correctly', () => { - render( - - - - - - - - ); - - screen.getAllByText('scenario.reference-day'); - screen.getByPlaceholderText('MM/DD/YYYY'); - screen.getByDisplayValue('02/20/2020'); - }); - - test('Set Reference Date', async () => { - render( - - - - - - - - ); - - const el = screen.getByPlaceholderText('MM/DD/YYYY'); - await userEvent.click(el); - await userEvent.keyboard('03/23/2023[Enter]'); - - screen.getByDisplayValue('03/23/2023'); - expect(Store.getState().dataSelection.simulationStart).toBe('2023-03-23'); - }); - - test('Update Reference Date', () => { - render( - - - - - - - - ); - - screen.getByDisplayValue('02/20/2020'); - - act(() => { - Store.dispatch(setStartDate('2023-03-23')); - }); - - expect(Store.getState().dataSelection.simulationStart).toBe('2023-03-23'); - screen.getByDisplayValue('03/23/2023'); - }); - - afterEach(() => { - cleanup(); - }); -}); diff --git a/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRow.test.tsx b/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRow.test.tsx new file mode 100644 index 00000000..068ecca6 --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRow.test.tsx @@ -0,0 +1,73 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useState} from 'react'; +import {describe, test, expect} from 'vitest'; +import {ThemeProvider} from '@emotion/react'; +import {render, screen} from '@testing-library/react'; +import Theme from 'util/Theme'; +import CompartmentsRow from 'components/ScenarioComponents/CompartmentsComponents/CompartmentsRow'; +import userEvent from '@testing-library/user-event'; + +const CompartmentsRowTest = () => { + const compartmentsExpanded = true; + const compartments = ['Compartment 1', 'Compartment 2', 'Compartment 3']; + const [selectedCompartment, setSelectedCompartment] = useState('Compartment 1'); + const minCompartmentsRows = 1; + const compartmentValues = { + 'Compartment 1': 10, + 'Compartment 2': 20, + 'Compartment 3': 30, + }; + + return ( +
+ + {compartments.map((compartment, index) => ( + + ))} + +
+ ); +}; + +describe('CompartmentsRows', () => { + test('renders the correct compartment names', async () => { + render(); + + expect(await screen.findByText((content) => content.includes('Compartment 1'))).toBeInTheDocument(); + expect(await screen.findByText((content) => content.includes('Compartment 2'))).toBeInTheDocument(); + expect(await screen.findByText((content) => content.includes('Compartment 3'))).toBeInTheDocument(); + }); + + test('renders the correct compartment values', async () => { + render(); + + expect(await screen.findByText('10')).toBeInTheDocument(); + expect(await screen.findByText('20')).toBeInTheDocument(); + expect(await screen.findByText('30')).toBeInTheDocument(); + }); + + test('selects the correct compartment on click', async () => { + render(); + + const compartment1 = screen.getByText('compartments.Compartment 1').closest('div[role="button"]'); + const compartment2 = screen.getByText('compartments.Compartment 2').closest('div[role="button"]'); + expect(compartment1).toHaveClass('Mui-selected'); + expect(compartment2).not.toHaveClass('Mui-selected'); + if (compartment2) { + await userEvent.click(compartment2); + } + expect(compartment1).not.toHaveClass('Mui-selected'); + expect(compartment2).toHaveClass('Mui-selected'); + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRows.test.tsx b/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRows.test.tsx new file mode 100644 index 00000000..d2dbdef6 --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRows.test.tsx @@ -0,0 +1,56 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import CompartmentsRows from 'components/ScenarioComponents/CompartmentsComponents/CompartmentsRows'; +import React, {useState} from 'react'; +import {describe, test, expect} from 'vitest'; +import {ThemeProvider} from '@emotion/react'; +import {render, screen, waitFor} from '@testing-library/react'; +import Theme from 'util/Theme'; + +const CompartmentsRowsTest = () => { + const compartmentsExpanded = true; + const compartments = ['Compartment 1', 'Compartment 2', 'Compartment 3']; + const [selectedCompartment, setSelectedCompartment] = useState('Compartment 1'); + const minCompartmentsRows = 1; + const maxCompartmentsRows = 3; + const compartmentValues = { + 'Compartment 1': 10, + 'Compartment 2': 20, + 'Compartment 3': 30, + }; + + return ( +
+ + + +
+ ); +}; + +describe('CompartmentsRows', () => { + test('renders the correct number of compartments', async () => { + render(); + await waitFor(() => { + const compartmentsList = screen.getByTestId('compartments-rows'); + expect(compartmentsList).toBeInTheDocument(); + expect(compartmentsList.querySelectorAll('.MuiListItemButton-root').length).toBe(3); + }); + }); + + test('renders the correct compartment names', async () => { + render(); + expect(await screen.findByText('compartments.Compartment 1')).toBeInTheDocument(); + expect(await screen.findByText('compartments.Compartment 2')).toBeInTheDocument(); + expect(await screen.findByText('compartments.Compartment 3')).toBeInTheDocument(); + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/ExpandedButtonComponents/ExpandedButton.test.tsx b/frontend/src/__tests__/components/Scenario/ExpandedButtonComponents/ExpandedButton.test.tsx new file mode 100644 index 00000000..4f6064e4 --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/ExpandedButtonComponents/ExpandedButton.test.tsx @@ -0,0 +1,45 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React from 'react'; +import {render, screen, fireEvent} from '@testing-library/react'; +import {describe, test, expect} from 'vitest'; +import GeneralButton from 'components/ScenarioComponents/ExpandedButtonComponents/ExpandedButton'; +import {ThemeProvider} from '@emotion/react'; + +import Theme from 'util/Theme'; + +const GeneralButtonTest = () => { + const buttonTexts = {clicked: 'Clicked', unclicked: 'Unclicked'}; + const isDisabled = true; + const handleClick = () => {}; + + return ( +
+ + + +
+ ); +}; + +describe('GeneralButtonTest', () => { + test('renders the button with the correct initial text', async () => { + render(); + const button = await screen.findByRole('button'); + expect(button).toHaveTextContent('Unclicked'); + }); + + test('button is not disabled initially', async () => { + render(); + const button = await screen.findByRole('button'); + expect(button).toBeDisabled(); + }); + + test('button does change state when clicked', async () => { + render(); + const button = await screen.findByRole('button'); + fireEvent.click(button); + expect(button).toHaveTextContent('clicked'); + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/ReferenceDatePicker.test.tsx b/frontend/src/__tests__/components/Scenario/ReferenceDatePicker.test.tsx new file mode 100644 index 00000000..790c58aa --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/ReferenceDatePicker.test.tsx @@ -0,0 +1,73 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useState} from 'react'; +import {describe, test, expect} from 'vitest'; +import {render, screen, waitFor} from '@testing-library/react'; +import {I18nextProvider} from 'react-i18next'; +import ReferenceDatePicker from 'components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker'; +import {MUILocalization} from '../../../components/shared/MUILocalization'; +import {ThemeProvider} from '@mui/system'; +import Theme from 'util/Theme'; +import i18n from 'util/i18n'; +import userEvent from '@testing-library/user-event'; + +const ReferenceDatePickerTest = () => { + const [startDate, setStartDate] = useState('2020-02-20'); + const minDate = '2019-02-20'; + const maxDate = '2021-02-20'; + + return ( +
+ +
+ ); +}; + +describe('ReferenceDatePicker', () => { + test('renders ReferenceDatePicker component', async () => { + render( + + + + + + + + ); + + await waitFor(() => { + expect(screen.getByLabelText('scenario.reference-day')).toBeInTheDocument(); + }); + }); + + test('displays the correct initial date', () => { + render( + + + + + + + + ); + + expect(screen.getByDisplayValue('02/20/2020')).toBeInTheDocument(); + }); + + test('updates the date when a new date is selected', async () => { + render( + + + + + + + + ); + + const el = screen.getByPlaceholderText('MM/DD/YYYY'); + await userEvent.type(el, '03/23/2020{enter}'); + expect(screen.getByDisplayValue('03/23/2020')).toBeInTheDocument(); + }); +}); diff --git a/frontend/src/__tests__/components/Sidebar/DistrictMap.test.tsx b/frontend/src/__tests__/components/Sidebar/DistrictMap.test.tsx deleted file mode 100644 index 69780ce8..00000000 --- a/frontend/src/__tests__/components/Sidebar/DistrictMap.test.tsx +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React from 'react'; -import {describe, test, vi} from 'vitest'; -import {render, screen} from '@testing-library/react'; - -import i18n from '../../../util/i18nForTests'; - -import {I18nextProvider} from 'react-i18next'; -import {Provider} from 'react-redux'; -import {Store} from '../../../store'; -import DistrictMap from '../../../components/Sidebar/DistrictMap'; -import Theme from '../../../util/Theme'; -import {ThemeProvider} from '@mui/material/styles'; - -describe('District Map', () => { - vi.stubGlobal('fetch', async () => Promise.all([])); - - test('district map load', () => { - render( - - - - - - - - ); - - screen.getByLabelText('heatlegend.lock'); - }); -}); diff --git a/frontend/src/__tests__/components/Sidebar/HeatLegend.test.tsx b/frontend/src/__tests__/components/Sidebar/HeatLegend.test.tsx new file mode 100644 index 00000000..a9b70bc2 --- /dev/null +++ b/frontend/src/__tests__/components/Sidebar/HeatLegend.test.tsx @@ -0,0 +1,37 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useMemo} from 'react'; +import {describe, test, expect} from 'vitest'; +import {render} from '@testing-library/react'; +import {ThemeProvider} from '@mui/system'; +import Theme from 'util/Theme'; +import HeatLegend from 'components/Sidebar/MapComponents/HeatLegend'; + +const HeatLegendTest = () => { + const legend = useMemo(() => { + return { + name: 'uninitialized', + isNormalized: true, + steps: [ + {color: 'rgb(255,255,255)', value: 0}, + {color: 'rgb(255,255,255)', value: 1}, + ], + }; + }, []); + + return ; +}; + +describe('HeatLegend', () => { + test('renders HeatLegend component', () => { + render( + + + + ); + + const canvasElement = document.querySelector('canvas'); + expect(canvasElement).toBeInTheDocument(); + }); +}); diff --git a/frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx b/frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx new file mode 100644 index 00000000..42c22700 --- /dev/null +++ b/frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx @@ -0,0 +1,121 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useMemo, useRef, useState} from 'react'; +import {describe, test, expect} from 'vitest'; +import {render, screen} from '@testing-library/react'; +import * as am5 from '@amcharts/amcharts5'; +import HeatMap from 'components/Sidebar/MapComponents/HeatMap'; +import {ThemeProvider} from '@mui/system'; +import Theme from 'util/Theme'; +import {FeatureCollection, GeoJsonProperties} from 'geojson'; + +const HeatMapTest = () => { + const geoData = useMemo(() => { + return { + type: 'FeatureCollection', + features: [ + { + type: 'Feature', + properties: { + RS: '09771', + GEN: 'Aichach-Friedberg', + BEZ: 'LK', + }, + geometry: { + type: 'Polygon', + coordinates: [ + [ + [10.0, 50.0], + [11.0, 50.0], + [11.0, 51.0], + [10.0, 51.0], + [10.0, 50.0], + ], + ], + }, + }, + { + type: 'Feature', + properties: { + RS: '12345', + GEN: 'Test District', + BEZ: 'Test Type', + }, + geometry: { + type: 'Polygon', + coordinates: [ + [ + [12.0, 52.0], + [13.0, 52.0], + [13.0, 53.0], + [12.0, 53.0], + [12.0, 52.0], + ], + ], + }, + }, + ], + }; + }, []); + const values = useMemo(() => { + return [ + {id: '09771', value: 1}, + {id: '12345', value: 2}, + ]; + }, []); + + const defaultValue = useMemo( + () => ({ + RS: '00000', + GEN: 'germany', + BEZ: '', + id: -1, + }), + [] + ); + + const [selectedArea, setSelectedArea] = useState(defaultValue); + const [aggregatedMax, setAggregatedMax] = useState(1); + const legend = useMemo(() => { + return { + name: 'uninitialized', + isNormalized: true, + steps: [ + {color: 'rgb(255,255,255)', value: 0}, + {color: 'rgb(255,255,255)', value: 1}, + ], + }; + }, []); + + const legendRef = useRef(null); + + return ( +
+ +
+ ); +}; + +describe('HeatMap', () => { + test('renders HeatMap component', () => { + render( + + + + ); + + expect(screen.getByTestId('map')).toBeInTheDocument(); + }); +}); diff --git a/frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx b/frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx new file mode 100644 index 00000000..4f3800a8 --- /dev/null +++ b/frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx @@ -0,0 +1,46 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import Theme from 'util/Theme'; +import {ThemeProvider} from '@mui/system'; +import LockMaxValue from 'components/Sidebar/MapComponents/LockMaxValue'; +import {fireEvent, render, screen} from '@testing-library/react'; +import React from 'react'; +import {describe, test, vi, expect} from 'vitest'; + +describe('LockMaxValue', () => { + test('renders LockMaxValue component', () => { + render( + + {}} fixedLegendMaxValue={null} aggregatedMax={0} /> + + ); + + screen.getByLabelText('heatlegend.lock'); + }); + + test('calls setFixedLegendMaxValue when lock is clicked', () => { + const setFixedLegendMaxValueMock = vi.fn(); + render( + + + + ); + + const lock = screen.getByRole('button'); + + const openLock = screen.getByTestId('LockOpenIcon'); + const closedLock = screen.queryByTestId('LockIcon'); + + expect(openLock).toBeInTheDocument(); + expect(closedLock).not.toBeInTheDocument(); + + fireEvent.click(lock); + + expect(setFixedLegendMaxValueMock).toHaveBeenCalledWith(10); + }); +}); diff --git a/frontend/src/__tests__/components/Sidebar/SearchBar.test.tsx b/frontend/src/__tests__/components/Sidebar/SearchBar.test.tsx index 5ee6c65c..c434a7ce 100644 --- a/frontend/src/__tests__/components/Sidebar/SearchBar.test.tsx +++ b/frontend/src/__tests__/components/Sidebar/SearchBar.test.tsx @@ -1,32 +1,84 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import React from 'react'; -import {describe, test, expect, afterEach} from 'vitest'; -import {act, cleanup, render, screen} from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; - +import React, {useState, useMemo} from 'react'; +import {describe, test, afterEach} from 'vitest'; +import {render, screen, cleanup} from '@testing-library/react'; import i18n from '../../../util/i18nForTests'; - -import SearchBar from '../../../components/Sidebar/SearchBar'; import {I18nextProvider} from 'react-i18next'; -import {Provider} from 'react-redux'; -import {Store} from '../../../store'; -import {selectDistrict} from '../../../store/DataSelectionSlice'; - -describe('SearchBar', () => { +import SearchBar from 'components/Sidebar/MapComponents/SearchBar'; +import userEvent from '@testing-library/user-event'; +import {GeoJsonProperties} from 'geojson'; + +const SearchBarTest = () => { + const geoData = [ + { + RS: '12345', + GEN: 'Test District', + BEZ: 'Test Type', + }, + { + RS: '09771', + GEN: 'Aichach-Friedberg', + BEZ: 'LK', + }, + { + RS: '00000', + GEN: 'germany', + BEZ: '', + }, + { + RS: '05315103', + GEN: 'Köln - Altstadt/Nord (Innenstadt)', + BEZ: 'ST', + }, + ]; + + const defaultValue = useMemo( + () => ({ + RS: '00000', + GEN: 'germany', + BEZ: '', + id: -1, + }), + [] + ); + + const [selectedArea, setSelectedArea] = useState(defaultValue); + + return ( + `${option!.GEN}${option!.BEZ ? ` (BEZ.${option!.BEZ})` : ''}`} + autoCompleteValue={{ + RS: selectedArea!['RS' as keyof GeoJsonProperties] as string, + GEN: selectedArea!['GEN' as keyof GeoJsonProperties] as string, + BEZ: selectedArea!['BEZ' as keyof GeoJsonProperties] as string, + }} + onChange={(_event, option) => { + if (option) { + setSelectedArea(option); + } + }} + placeholder={`${selectedArea!['GEN' as keyof GeoJsonProperties]}${selectedArea!['BEZ' as keyof GeoJsonProperties] ? ` (BEZ.${selectedArea!['BEZ' as keyof GeoJsonProperties]})` : ''}`} + optionEqualProperty='RS' + valueEqualProperty='RS' + /> + ); +}; + +describe('Searchbar', () => { test('countyList loaded correctly', async () => { render( - - - + ); - await screen.findByPlaceholderText('germany'); + const searchbar = await screen.findByPlaceholderText('germany'); - await userEvent.click(screen.getByPlaceholderText('germany')); + await userEvent.click(searchbar); await screen.findByText('A'); await screen.findByText('Aichach-Friedberg (BEZ.LK)'); @@ -36,47 +88,22 @@ describe('SearchBar', () => { await screen.findByText('Test District (BEZ.Test Type)'); }); - test('district changed by store', async () => { - render( - - - - - - ); - - act(() => { - Store.dispatch(selectDistrict({ags: '12345', name: 'Test District', type: 'Test Type'})); - }); - - await screen.findByDisplayValue('Test District (BEZ.Test Type)'); - }); - test('select district by dropdown selection partial name (autocomplete)', async () => { render( - - - + ); await userEvent.type(screen.getByPlaceholderText('germany'), 'Aic{Enter}'); await screen.findByDisplayValue('Aichach-Friedberg (BEZ.LK)'); - expect(Store.getState().dataSelection.district).toStrictEqual({ - ags: '09771', - name: 'Aichach-Friedberg', - type: 'LK', - }); }); test('select district by dropdown selection with keyboard (Arrow-Down)', async () => { render( - - - + ); @@ -84,11 +111,6 @@ describe('SearchBar', () => { /* [CDtemp-begin] */ await screen.findByDisplayValue('Köln - Altstadt/Nord (Innenstadt) (BEZ.ST)'); - expect(Store.getState().dataSelection.district).toStrictEqual({ - ags: '05315103', - name: 'Köln - Altstadt/Nord (Innenstadt)', - type: 'ST', - }); // [CDtemp] await screen.findByDisplayValue('Test District (BEZ.Test Type)'); // [CDtemp] expect(Store.getState().dataSelection.district).toStrictEqual({ // [CDtemp] ags: '12345', @@ -99,6 +121,5 @@ describe('SearchBar', () => { afterEach(() => { cleanup(); - Store.dispatch(selectDistrict({ags: '00000', name: '', type: ''})); }); }); diff --git a/frontend/src/__tests__/components/shared/ConfirmDialog.test.tsx b/frontend/src/__tests__/components/shared/ConfirmDialog.test.tsx index e936ea1c..7302338d 100644 --- a/frontend/src/__tests__/components/shared/ConfirmDialog.test.tsx +++ b/frontend/src/__tests__/components/shared/ConfirmDialog.test.tsx @@ -4,8 +4,7 @@ import React from 'react'; import {describe, expect, it, vi} from 'vitest'; import {render, fireEvent, screen} from '@testing-library/react'; - -import ConfirmDialog from '../../../components/shared/ConfirmDialog'; +import ConfirmDialog from 'components/shared/ConfirmDialog'; describe('ConfirmDialog', () => { it('renders the correct title and text', () => { diff --git a/frontend/src/__tests__/mocks/handlers.ts b/frontend/src/__tests__/mocks/handlers.ts index ae5512ce..e2835e27 100644 --- a/frontend/src/__tests__/mocks/handlers.ts +++ b/frontend/src/__tests__/mocks/handlers.ts @@ -104,18 +104,391 @@ export default [ ], }); }), - http.get('/assets/lk_germany_reduced_list.json', () => { - return HttpResponse.json([ - { - RS: '09771', - GEN: 'Aichach-Friedberg', - BEZ: 'LK', - }, - { - RS: '12345', - GEN: 'Test District', - BEZ: 'Test Type', + http.get('/assets/lk_germany_reduced.geojson', () => { + return HttpResponse.json({ + features: [ + { + type: 'Feature', + properties: { + RS: '09771', + GEN: 'Aichach-Friedberg', + BEZ: 'LK', + }, + geometry: { + type: 'Polygon', + coordinates: [ + [ + [10.0, 50.0], + [11.0, 50.0], + [11.0, 51.0], + [10.0, 51.0], + [10.0, 50.0], + ], + ], + }, + }, + { + type: 'Feature', + properties: { + RS: '12345', + GEN: 'Test District', + BEZ: 'Test Type', + }, + geometry: { + type: 'Polygon', + coordinates: [ + [ + [12.0, 52.0], + [13.0, 52.0], + [13.0, 53.0], + [12.0, 53.0], + [12.0, 52.0], + ], + ], + }, + }, + ], + }); + }), + http.get('*/api/v1/rki/00000/', () => { + return HttpResponse.json({ + count: 1470, + next: 'http://localhost:8000/api/v1/rki/00000/?limit=100&offset=100', + previous: null, + results: [ + { + name: '00000', + day: '2021-04-01', + compartments: { + ICU: 7544.857142857809, + Dead: 156795.99999999697, + Carrier: 52067.7571428504, + Exposed: 101406.62857143072, + Infected: 168094.29660715, + Recovered: 5280718.971428579, + Susceptible: 160551069.35357141, + Hospitalized: 15692.13553571458, + }, + }, + { + name: '00000', + day: '2021-04-02', + compartments: { + ICU: 7714.285714286607, + Dead: 157107.71428571496, + Carrier: 51337.04285714539, + Exposed: 103249.0428571395, + Infected: 166189.1675285677, + Recovered: 5312479.899999999, + Susceptible: 160519367.40999994, + Hospitalized: 15945.436757141902, + }, + }, + { + name: '00000', + day: '2021-04-03', + compartments: { + ICU: 7930.857142856603, + Dead: 157423.14285714203, + Carrier: 51261.157142856624, + Exposed: 106423.34285714672, + Infected: 164094.96752857446, + Recovered: 5342113.514285708, + Susceptible: 160487980.86714286, + Hospitalized: 16162.151042857242, + }, + }, + { + name: '00000', + day: '2021-04-04', + compartments: { + ICU: 8148.857142856805, + Dead: 157749.71428571548, + Carrier: 51630.6571428576, + Exposed: 109818.47142856922, + Infected: 162393.1123714261, + Recovered: 5371056.657142856, + Susceptible: 160456237.09714285, + Hospitalized: 16355.433342857074, + }, + }, + { + name: '00000', + day: '2021-04-05', + compartments: { + ICU: 8362.285714286003, + Dead: 158082.28571428862, + Carrier: 52664.57142856877, + Exposed: 113461.10000000132, + Infected: 161169.5783571417, + Recovered: 5399324.814285714, + Susceptible: 160423849.1278571, + Hospitalized: 16476.23664285755, + }, + }, + { + name: '00000', + day: '2021-04-06', + compartments: { + ICU: 8552.285714284408, + Dead: 158415.9999999995, + Carrier: 54239.42857143352, + Exposed: 117375.74285714087, + Infected: 161690.77971428438, + Recovered: 5426469.928571427, + Susceptible: 160390125.1229999, + Hospitalized: 16520.711571428492, + }, + }, + { + name: '00000', + day: '2021-04-07', + compartments: { + ICU: 8728.857142857009, + Dead: 158750.57142857276, + Carrier: 55384.49999999517, + Exposed: 121601.44285714524, + Infected: 163949.66373571547, + Recovered: 5453513.657142862, + Susceptible: 160354926.29742852, + Hospitalized: 16535.010264286728, + }, + }, + { + name: '00000', + day: '2021-04-08', + compartments: { + ICU: 8878.857142855804, + Dead: 159085.99999999817, + Carrier: 57499.98571428868, + Exposed: 124315.85714286129, + Infected: 166509.81105713488, + Recovered: 5481310.299999999, + Susceptible: 160319304.17585713, + Hospitalized: 16485.013085713865, + }, + }, + { + name: '00000', + day: '2021-04-09', + compartments: { + ICU: 9021.142857142608, + Dead: 159427.7142857186, + Carrier: 59761.78571428676, + Exposed: 125970.94285714577, + Infected: 171028.8283928595, + Recovered: 5509727.542857129, + Susceptible: 160282056.87185714, + Hospitalized: 16395.17117857133, + }, + }, + { + name: '00000', + day: '2021-04-10', + compartments: { + ICU: 9116.857142855602, + Dead: 159776.28571428475, + Carrier: 61451.28571428486, + Exposed: 126800.9571428575, + Infected: 177047.54667857205, + Recovered: 5539581.642857144, + Susceptible: 160243294.2361428, + Hospitalized: 16321.18860714271, + }, + }, + { + name: '00000', + day: '2021-04-11', + compartments: { + ICU: 9184.571428571602, + Dead: 160143.42857143076, + Carrier: 62311.871428577084, + Exposed: 127704.51428570943, + Infected: 183369.32055000018, + Recovered: 5570634.44285714, + Susceptible: 160203770.56014282, + Hospitalized: 16271.290735714018, + }, + }, + { + name: '00000', + day: '2021-04-12', + compartments: { + ICU: 9243.71428571581, + Dead: 160522.8571428556, + Carrier: 63431.999999998545, + Exposed: 128420.1857142863, + Infected: 189044.42254286224, + Recovered: 5602114.657142864, + Susceptible: 160164342.75499997, + Hospitalized: 16269.408171428533, + }, + }, + { + name: '00000', + day: '2021-04-13', + compartments: { + ICU: 9308.000000001206, + Dead: 160909.42857142855, + Carrier: 64058.8999999981, + Exposed: 129532.2428571452, + Infected: 193832.27605000173, + Recovered: 5634843.257142854, + Susceptible: 160124551.4699999, + Hospitalized: 16354.425378572192, + }, + }, + { + name: '00000', + day: '2021-04-14', + compartments: { + ICU: 9379.714285713007, + Dead: 161309.42857142715, + Carrier: 64628.75714285903, + Exposed: 130531.58571428382, + Infected: 197472.17099285405, + Recovered: 5668918.428571431, + Susceptible: 160084681.55571425, + Hospitalized: 16468.35900714228, + }, + }, + { + name: '00000', + day: '2021-04-15', + compartments: { + ICU: 332.7782420852289, + Dead: 2986.714285714101, + Carrier: 22402.74285714291, + Exposed: 45451.11428571386, + Infected: 73505.4394464306, + Recovered: 1971724.4285714272, + Susceptible: 47131432.6027103, + Hospitalized: 3628.846267857133, + }, + }, + ], + }); + }), + http.get('*/api/v1/groupcategories/', () => { + return HttpResponse.json({ + count: 2, + next: null, + previous: null, + results: [ + { + key: 'age', + name: 'age', + description: 'Age groups', + }, + { + key: 'gender', + name: 'gender', + description: 'Gender', + }, + ], + }); + }), + http.get('*/api/v1/simulations/', () => { + return HttpResponse.json({ + count: 2, + next: null, + previous: null, + results: [ + { + id: 1, + name: 'summer_2021_sim1', + description: 'Summer 2021 Simulation 1', + startDay: '2021-06-06', + numberOfDays: 90, + scenario: 'http://localhost:8000/api/v1/scenarios/1/', + percentiles: [25, 50, 75], + }, + { + id: 2, + name: 'summer_2021_sim2', + description: 'Summer 2021 Simulation 2', + startDay: '2021-06-06', + numberOfDays: 90, + scenario: 'http://localhost:8000/api/v1/scenarios/1/', + percentiles: [25, 50, 75], + }, + ], + }); + }), + http.get('*/api/v1/simulationmodels/', () => { + return HttpResponse.json({ + count: 1, + next: null, + previous: null, + results: [ + { + key: 'secihurd', + name: 'secihurd', + }, + ], + }); + }), + http.get('*/api/v1/simulationmodels/secihurd/', () => { + return HttpResponse.json({ + results: { + key: 'secihurd', + name: 'secihurd', + description: '', + parameters: [ + 'AsymptoticCasesPerInfectious', + 'DeathsPerHospitalized', + 'HomeToHospitalizedTime', + 'HospitalizedCasesPerInfectious', + 'HospitalizedToHomeTime', + 'HospitalizedToICUTime', + 'ICUCasesPerHospitalized', + 'ICUToDeathTime', + 'ICUToHomeTime', + 'IncubationTime', + 'InfectionProbabilityFromContact', + 'InfectiousTimeMild', + 'MaxRiskOfInfectionFromSympomatic', + 'ReducExpInf', + 'ReducImmuneExp', + 'ReducImmuneExpInf', + 'ReducImmuneInfHosp', + 'ReducInfHosp', + 'ReducTime', + 'ReducVaccExp', + 'RelativeCarrierInfectability', + 'RiskOfInfectionFromSympomatic', + 'Seasonality', + 'SerialInterval', + 'VaccinationGap', + ], + compartments: [ + 'Carrier', + 'CarrierT', + 'CarrierTV1', + 'CarrierTV2', + 'CarrierV1', + 'CarrierV2', + 'Dead', + 'Exposed', + 'ExposedV1', + 'ExposedV2', + 'Hospitalized', + 'HospitalizedV1', + 'HospitalizedV2', + 'ICU', + 'ICUV1', + 'ICUV2', + 'Infected', + 'InfectedT', + 'InfectedTV1', + 'InfectedTV2', + 'InfectedV1', + 'InfectedV2', + 'Recovered', + 'Susceptible', + 'SusceptibleV1', + ], }, - ]); + }); }), ]; diff --git a/frontend/src/__tests__/mocks/resize.ts b/frontend/src/__tests__/mocks/resize.ts new file mode 100644 index 00000000..0a004332 --- /dev/null +++ b/frontend/src/__tests__/mocks/resize.ts @@ -0,0 +1,10 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {vi} from 'vitest'; + +export const ResizeObserverMock = vi.fn(() => ({ + observe: vi.fn(), + unobserve: vi.fn(), + disconnect: vi.fn(), +})); diff --git a/frontend/src/__tests__/store/DataSelectionSlice.test.ts b/frontend/src/__tests__/store/DataSelectionSlice.test.ts index 31446be4..84909545 100644 --- a/frontend/src/__tests__/store/DataSelectionSlice.test.ts +++ b/frontend/src/__tests__/store/DataSelectionSlice.test.ts @@ -9,14 +9,13 @@ import reducer, { selectDate, selectDistrict, selectScenario, - toggleScenario, } from '../../store/DataSelectionSlice'; describe('DataSelectionSlice', () => { const initialState = { district: {ags: '00000', name: '', type: ''}, date: null, - scenario: null, + scenario: 0, compartment: null, compartmentsExpanded: null, activeScenarios: [0], @@ -54,19 +53,6 @@ describe('DataSelectionSlice', () => { ); }); - test('Toggle Scenario', () => { - const scenario = 2; - expect(reducer(initialState, toggleScenario(scenario))).toEqual( - Object.assign(initialState, {activeScenarios: [0, 2]}) - ); - - const state = Object.assign(initialState, { - activeScenarios: [0, 1, 2, 4], - }); - - expect(reducer(state, toggleScenario(2))).toEqual(Object.assign(initialState, {activeScenarios: [0, 1, 4]})); - }); - test('Add Group Filter', () => { const newFilter = { id: 'c9c241fb-c0bd-4710-94b9-f4c9ad98072b', diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx new file mode 100644 index 00000000..4dbdab11 --- /dev/null +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -0,0 +1,654 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useCallback, useEffect, useLayoutEffect, useMemo} from 'react'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; +import {Tooltip} from '@amcharts/amcharts5/.internal/core/render/Tooltip'; +import {RoundedRectangle} from '@amcharts/amcharts5/.internal/core/render/RoundedRectangle'; +import {Color, color} from '@amcharts/amcharts5/.internal/core/util/Color'; +import {DataProcessor} from '@amcharts/amcharts5/.internal/core/util/DataProcessor'; +import {IXYChartSettings, XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; +import {IDateAxisSettings} from '@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis'; +import {AxisRendererX} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererX'; +import {AxisRendererY} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererY'; +import {XYCursor} from '@amcharts/amcharts5/.internal/charts/xy/XYCursor'; +import am5locales_en_US from '@amcharts/amcharts5/locales/en_US'; +import am5locales_de_DE from '@amcharts/amcharts5/locales/de_DE'; +import {darken, useTheme} from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import {useTranslation} from 'react-i18next'; +import {Localization} from 'types/localization'; +import useRoot from 'components/shared/Root'; +import {useConst} from 'util/hooks'; +import useXYChart from 'components/shared/LineChart/Chart'; +import useDateAxis from 'components/shared/LineChart/DateAxis'; +import useValueAxis from 'components/shared/LineChart/ValueAxis'; +import {useDateSelectorFilter} from 'components/shared/LineChart/Filter'; +import useDateAxisRange from 'components/shared/LineChart/AxisRange'; +import {useLineSeriesList} from 'components/shared/LineChart/LineSeries'; +import {LineSeries} from '@amcharts/amcharts5/.internal/charts/xy/series/LineSeries'; +import {LineChartData} from 'types/lineChart'; + +interface LineChartProps { + /** Optional unique identifier for the chart. Defaults to 'chartdiv'. */ + chartId?: string; + + /** Array of line chart data points to be plotted on the chart. */ + lineChartData: LineChartData[] | undefined; + + /** The currently selected date in the chart in ISO format (YYYY-MM-DD). */ + selectedDate: string; + + /** Callback function to update the selected date in the chart. */ + setSelectedDate: (date: string) => void; + + /** + * Optional callback function to get the x-coordinate position of the reference date in the chart. + * This can be used for positioning elements in relation to the reference date. + */ + setReferenceDayBottom?: (docPos: number) => void; + + /** Optional minimum date for the chart in ISO format (YYYY-MM-DD). */ + minDate?: string | null; + + /** Optional maximum date for the chart in ISO format (YYYY-MM-DD). */ + maxDate?: string | null; + + /** Optional reference day for the chart in ISO format (YYYY-MM-DD). */ + referenceDay?: string | null; + + /** Optional label for the LineChart. Used when label needs to be changed. To use a static label overrides yAxisLabel */ + yAxisLabel?: string; + + /** Optional name for the exported file when the chart data is downloaded. Defaults to 'Data'. */ + exportedFileName?: string; + + /** Optional localization settings for the chart, including number formatting and language overrides. */ + localization?: Localization; +} +/** + * React Component to render the Linechart Section + * @returns {JSX.Element} JSX Element to render the linechart container and the graphs within. + */ +export default function LineChart({ + chartId = 'chartdiv', + lineChartData, + selectedDate, + setSelectedDate, + setReferenceDayBottom = () => {}, + minDate = null, + maxDate = null, + referenceDay = null, + exportedFileName = 'Data', + yAxisLabel, + localization, +}: LineChartProps): JSX.Element { + const {t: defaultT, i18n} = useTranslation(); + + const memoizedLocalization = useMemo(() => { + return ( + localization || { + formatNumber: (value) => value.toLocaleString(), + customLang: 'global', + overrides: {}, + } + ); + }, [localization]); + + const {t: customT} = useTranslation(memoizedLocalization.customLang); + const theme = useTheme(); + + const root = useRoot( + chartId, + undefined, + useConst((root) => { + root.numberFormatter.set('numberFormat', '#,###.'); + }) + ); + + const chartSettings = useConst({ + panX: false, + panY: false, + wheelX: 'panX', + wheelY: 'zoomX', + maxTooltipDistance: -1, + }); + + const chart = useXYChart( + root, + chartSettings, + useCallback( + (chart: XYChart) => { + if (root) { + chart.leftAxesContainer.set('layout', root.verticalLayout); + } + }, + [root] + ) + ); + + const xAxisSettings = useMemo(() => { + if (!root || !chart) { + return null; + } + + return { + renderer: AxisRendererX.new(root, {}), + // Set base interval and aggregated intervals when the chart is zoomed out + baseInterval: {timeUnit: 'day', count: 1}, + gridIntervals: [ + {timeUnit: 'day', count: 1}, + {timeUnit: 'day', count: 3}, + {timeUnit: 'day', count: 7}, + {timeUnit: 'month', count: 1}, + {timeUnit: 'month', count: 3}, + {timeUnit: 'year', count: 1}, + ], + // Add tooltip instance so cursor can display value + tooltip: Tooltip.new(root, {}), + } as IDateAxisSettings; + }, [root, chart]); + + const xAxis = useDateAxis( + root, + chart, + xAxisSettings, + useConst((axis) => { + axis.get('renderer').ticks.template.setAll({location: 0.5}); + }) + ); + + const yAxisSettings = useMemo(() => { + if (!root || !chart) { + return null; + } + return { + renderer: AxisRendererY.new(root, {}), + // Fix lower end to 0 + min: 0, + // Add tooltip instance so cursor can display value + tooltip: Tooltip.new(root, {}), + }; + }, [root, chart]); + + const yAxis = useValueAxis(root, chart, yAxisSettings); + + // Effect to add cursor to chart + useLayoutEffect(() => { + if (!chart || !root || !xAxis || chart.isDisposed() || root.isDisposed() || xAxis.isDisposed()) { + return; + } + + // Add cursor + chart.set( + 'cursor', + XYCursor.new(root, { + // Only allow zooming along x-axis + behavior: 'zoomX', + // Snap cursor to xAxis ticks + xAxis: xAxis, + }) + ); + // This effect should re-run when chart, root and xAxis are initialized + }, [chart, root, xAxis]); + + // Effect to add date selector filter to chart + useDateSelectorFilter(chart, xAxis, setSelectedDate); + + const selectedDateRangeSettings = useMemo(() => { + if (!root || !selectedDate) { + return {}; + } + + return { + data: { + value: new Date(selectedDate).setHours(0, 0, 0), + endValue: new Date(selectedDate).setHours(23, 59, 59), + above: true, + }, + grid: { + stroke: color(theme.palette.primary.main), + strokeOpacity: 1, + strokeWidth: 2, + location: 0.5, + visible: true, + }, + axisFill: { + fill: color(theme.palette.primary.main), + fillOpacity: 0.3, + visible: true, + }, + label: { + fill: color(theme.palette.primary.contrastText), + text: new Date(selectedDate).toLocaleDateString(i18n.language, { + year: 'numeric', + month: 'short', + day: '2-digit', + }), + location: 0.5, + background: RoundedRectangle.new(root, { + fill: color(theme.palette.primary.main), + }), + // Put Label to the topmost layer to make sure it is drawn on top of the axis tick labels + layer: Number.MAX_VALUE, + }, + }; + }, [i18n.language, root, selectedDate, theme.palette.primary.contrastText, theme.palette.primary.main]); + + useDateAxisRange(selectedDateRangeSettings, root, chart, xAxis); + + // Effect to change localization of chart if language changes + useLayoutEffect( + () => { + // Skip if root or chart or xAxis is not initialized + if (!root || !chart || !xAxis || chart.isDisposed() || root.isDisposed() || xAxis.isDisposed()) { + return; + } + + // Set localization + root.locale = i18n.language === 'de' ? am5locales_de_DE : am5locales_en_US; + + xAxis.get('dateFormats', {day: ''})['day'] = memoizedLocalization.overrides?.['dayFormat'] + ? customT(memoizedLocalization.overrides['dayFormat']) + : defaultT('dayFormat'); + xAxis.get('tooltipDateFormats', {day: ''})['day'] = memoizedLocalization.overrides?.['dayFormat'] + ? customT(memoizedLocalization.overrides['dayFormat']) + : defaultT('dayFormat'); + // Fix first date of the month falling back to wrong format (also with fallback object) + xAxis.get('periodChangeDateFormats', {day: ''})['day'] = memoizedLocalization.overrides?.['dayFormat'] + ? customT(memoizedLocalization.overrides['dayFormat']) + : defaultT('dayFormat'); + }, + // Re-run effect if language changes + [i18n.language, root, chart, xAxis, defaultT, customT, memoizedLocalization.overrides] + ); + + // Effect to update min/max date. + useLayoutEffect(() => { + // Skip if root or chart or xAxis is not initialized + if (!xAxis || !minDate || !maxDate || xAxis.isDisposed()) { + return; + } + + xAxis.set('min', new Date(minDate).setHours(0)); + xAxis.set('max', new Date(maxDate).setHours(23, 59, 59)); + // This effect should re-run when xAxis, minDate or maxDate changes + }, [minDate, maxDate, xAxis]); + + const referenceDateRangeSettings = useMemo(() => { + if (!root || !referenceDay) { + return {}; + } + + return { + data: { + value: new Date(referenceDay).setHours(12, 0, 0), + endValue: new Date(referenceDay).setHours(12, 0, 1), + above: true, + }, + grid: { + stroke: color(darken(theme.palette.divider, 0.25)), + strokeOpacity: 1, + strokeWidth: 2, + strokeDasharray: [6, 4], + }, + }; + }, [root, referenceDay, theme.palette.divider]); + + useDateAxisRange(referenceDateRangeSettings, root, chart, xAxis); + + const setReferenceDayX = useCallback(() => { + if (!chart || !root || !xAxis || !referenceDay) { + return; + } + + const midday = new Date(referenceDay).setHours(12, 0, 0); + + const xAxisPosition = xAxis.width() * xAxis.toGlobalPosition(xAxis.dateToPosition(new Date(midday))); + const globalPosition = xAxis.toGlobal({x: xAxisPosition, y: 0}); + const docPosition = root.rootPointToDocument(globalPosition).x; + setReferenceDayBottom(docPosition); + }, [chart, root, xAxis, referenceDay, setReferenceDayBottom]); + + // Effect to update reference day position + useLayoutEffect(() => { + if (!root || !chart || !xAxis || chart.isDisposed() || root.isDisposed() || xAxis.isDisposed()) { + return; + } + + setReferenceDayX(); + const minEvent = xAxis.onPrivate('selectionMin', setReferenceDayX); + const maxEvent = xAxis.onPrivate('selectionMax', setReferenceDayX); + const seriesEvent = chart.series.events.on('push', (ev) => { + ev.newValue.events.on('boundschanged', setReferenceDayX); + }); + + const resizeObserver = new ResizeObserver(setReferenceDayX); + resizeObserver.observe(root.dom); + + return () => { + resizeObserver.disconnect(); + minEvent.dispose(); + maxEvent.dispose(); + seriesEvent.dispose(); + }; + // This effect should re-run when root, chart and xAxis are initialized + }, [root, chart, xAxis, setReferenceDayX]); + + const lineChartDataSettings = useMemo(() => { + if (!root || !xAxis || !yAxis || !lineChartData) { + return []; + } + return lineChartData.map((line) => { + return { + xAxis: xAxis, + yAxis: yAxis, + id: `${chartId}_${line.serieId}`, + name: line.name ?? '', + valueXField: 'date', + valueYField: String(line.valueYField), + openValueYField: line.openValueYField ? String(line.openValueYField) : undefined, + connect: false, + visible: line.visible ?? true, + tooltip: Tooltip.new(root, { + labelText: line.tooltipText, + }), + stroke: line.stroke.color, + fill: line.fill ?? undefined, + }; + }); + }, [lineChartData, root, xAxis, yAxis, chartId]); + + useLineSeriesList( + root, + chart, + lineChartDataSettings, + useCallback( + (series: LineSeries) => { + if (!lineChartData) return; + const seriesSettings = lineChartData.find((line) => line.serieId === series.get('id')?.split('_')[1]); + series.strokes.template.setAll({ + strokeWidth: seriesSettings?.stroke.strokeWidth ?? 2, + strokeDasharray: seriesSettings?.stroke.strokeDasharray ?? undefined, + }); + if (seriesSettings?.fill) { + series.fills.template.setAll({ + fillOpacity: seriesSettings.fillOpacity ?? 1, + visible: true, + }); + } + }, + [lineChartData] + ) + ); + + // Effect to update data in series + useEffect(() => { + // Skip effect if chart is not initialized yet + if (!chart || chart.isDisposed()) return; + // Also skip if there is no data + if (!lineChartData || lineChartData.length == 0) return; + + // Create empty map to match dates + const dataMap = new Map(); + + lineChartData.forEach((serie) => { + const id = serie.serieId; + if (typeof id === 'string' && id.startsWith('group-filter-')) { + serie.values.forEach((entry) => { + dataMap.set(entry.day, {...dataMap.get(entry.day), [serie.name!]: entry.value as number}); + }); + } else if (serie.openValueYField) { + serie.values.forEach((entry) => { + dataMap.set(entry.day, {...dataMap.get(entry.day), [serie.valueYField]: (entry.value as number[])[1]}); + dataMap.set(entry.day, { + ...dataMap.get(entry.day), + [String(serie.openValueYField)]: (entry.value as number[])[0], + }); + }); + } else { + serie.values.forEach((entry) => { + dataMap.set(entry.day, {...dataMap.get(entry.day), [serie.valueYField]: entry.value as number}); + }); + } + }); + + // Sort map by date + const dataMapSorted = new Map(Array.from(dataMap).sort(([a], [b]) => String(a).localeCompare(b))); + const data = Array.from(dataMapSorted).map(([day, data]) => { + return {date: day, ...data}; + }); + + // Put data into series + chart.series.each((series, i) => { + // Set-up data processors for first series (not needed for others since all use the same data) + if (i === 0) { + series.data.processor = DataProcessor.new(root as Root, { + // Define date fields and their format (incoming format from API) + dateFields: ['date'], + dateFormat: 'yyyy-MM-dd', + }); + } + // Link each series to data + series.data.setAll(data); + }); + + // Set up HTML tooltip + const tooltipHTML = ` + ${'' /* Current Date and selected compartment name */} + {date.formatDate("${ + memoizedLocalization.overrides?.['dateFormat'] + ? customT(memoizedLocalization.overrides['dateFormat']) + : defaultT('dateFormat') + }")} (${ + yAxisLabel ?? + (memoizedLocalization.overrides?.[`yAxisLabel`] + ? customT(memoizedLocalization.overrides[`yAxisLabel`]) + : defaultT(`yAxisLabel`)) + }) + + ${ + // Table row for each series of an active scenario + chart.series.values + .map((series): string => { + /* Skip if series: + * - is hidden + * - is percentile series (which is added to the active scenario series) + * - is group filter series + */ + let seriesID = series.get('id'); + if (seriesID) seriesID = seriesID?.split('_')[1]; + if (seriesID === 'percentiles' || seriesID?.startsWith('group-filter-')) { + return ''; + } + /* Skip with error if series does not have property: + * - id + * - name + * - valueYField + * - stroke + */ + if ( + seriesID == null || + !series.get('name') || + series.get('valueYField') == null || + !series.get('stroke') + ) { + console.error( + 'ERROR: missing series property: ', + seriesID, + series.get('name'), + series.get('valueYField'), + series.get('stroke') + ); + return ''; + } + // Handle series normally + return ` + + + + ${ + // Skip percentiles if this series is not the selected scenario or case data + lineChartData.find((serie) => serie.parentId == seriesID) + ? ` + + ` + : '' + } + + ${ + // Add group filters if this series is the selected scenario + lineChartData.find((serie) => serie.parentId == seriesID) + ? // Add table row for each active group filter + chart.series.values + .filter((series) => { + let seriesID = series.get('id'); + if (seriesID) seriesID = seriesID.split('_')[1]; + return seriesID?.startsWith('group-filter-'); + }) + .map((groupFilterSeries) => { + return ` + + + + + `; + }) + .join('') + : '' + } + `; + }) + .join('') + } +
+ ${series.get('name') as string} + + {${series.get('valueYField') as string}} + + [{percentileDown} - {percentileUp}] +
+ ${groupFilterSeries.get('name') as string} + + {${groupFilterSeries.get('valueYField') as string}} +
+ `; + + // Attach tooltip to series + chart.series.each((series) => { + const tooltip = Tooltip.new(root as Root, { + labelHTML: tooltipHTML, + getFillFromSprite: false, + autoTextColor: false, + pointerOrientation: 'horizontal', + }); + + // Set tooltip default text color to theme primary text color + tooltip.label.setAll({ + fill: color(theme.palette.text.primary), + }); + + // Set tooltip background to theme paper + tooltip.get('background')?.setAll({ + fill: color(theme.palette.background.paper), + }); + + // Set tooltip + series.set('tooltip', tooltip); + }); + + // Collect data field names & order for data export + // Always export date and case data (and percentiles of selected scenario) + let dataFields = { + date: `${ + memoizedLocalization.overrides?.['chart.date'] + ? customT(memoizedLocalization.overrides['chart.date']) + : defaultT('chart.date') + }`, + percentileUp: `${ + memoizedLocalization.overrides?.['chart.percentileUp'] + ? customT(memoizedLocalization.overrides['chart.percentileUp']) + : defaultT('chart.percentileUp') + }`, + percentileDown: `${ + memoizedLocalization.overrides?.['chart.percentileDown'] + ? customT(memoizedLocalization.overrides['chart.percentileDown']) + : defaultT('chart.percentileDown') + }`, + }; + // Always put date first, 0 second + const dataFieldsOrder = ['date', '0']; + + if (lineChartData) { + lineChartData.forEach((serie) => { + if (serie.serieId === 'percentiles' || serie.serieId.toString().startsWith('group-filter-')) return; + + // Add scenario label to export data field names + dataFields = { + ...dataFields, + [String(serie.serieId)]: serie.name ?? '', + }; + // Add scenario id to export data field order (for sorted export like csv) + dataFieldsOrder.push(`${serie.serieId}`); + // If this is the selected scenario also add percentiles after it + if (lineChartData.find((line) => line.openValueYField && line.parentId == serie.serieId)) { + dataFieldsOrder.push('percentileDown', 'percentileUp'); + } + }); + } + + // Let's import this lazily, since it contains a lot of code. + import('@amcharts/amcharts5/plugins/exporting') + .then((module) => { + // Update export menu + module.Exporting.new(root as Root, { + menu: module.ExportingMenu.new(root as Root, {}), + filePrefix: exportedFileName, + dataSource: data, + dateFields: ['date'], + dateFormat: `${ + memoizedLocalization.overrides?.['dateFormat'] + ? customT(memoizedLocalization.overrides['dateFormat']) + : defaultT('dateFormat') + }`, + dataFields: dataFields, + dataFieldsOrder: dataFieldsOrder, + }); + }) + .catch(() => console.warn("Couldn't load exporting functionality!")); + + setReferenceDayX(); + // Re-run this effect whenever the data itself changes (or any variable the effect uses) + }, [ + theme, + defaultT, + customT, + setReferenceDayX, + chartId, + memoizedLocalization.overrides, + exportedFileName, + chart, + root, + lineChartData, + yAxisLabel, + ]); + + return ( + + ); +} diff --git a/frontend/src/components/LineChartContainer.tsx b/frontend/src/components/LineChartContainer.tsx new file mode 100644 index 00000000..b53e725c --- /dev/null +++ b/frontend/src/components/LineChartContainer.tsx @@ -0,0 +1,72 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useContext, useEffect, useMemo, useState} from 'react'; +import LineChart from './LineChartComponents/LineChart'; +import LoadingContainer from './shared/LoadingContainer'; +import {useTheme} from '@mui/material'; +import {DataContext} from '../DataContext'; +import {useAppDispatch, useAppSelector} from 'store/hooks'; +import {selectDate} from 'store/DataSelectionSlice'; +import {setReferenceDayBottom} from 'store/LayoutSlice'; +import {useTranslation} from 'react-i18next'; + +export default function LineChartContainer() { + const {t} = useTranslation('backend'); + const theme = useTheme(); + const dispatch = useAppDispatch(); + + const {isChartDataFetching, chartData} = useContext(DataContext); + + const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); + const selectedDateInStore = useAppSelector((state) => state.dataSelection.date); + const referenceDay = useAppSelector((state) => state.dataSelection.simulationStart); + const minDate = useAppSelector((state) => state.dataSelection.minDate); + const maxDate = useAppSelector((state) => state.dataSelection.maxDate); + + const [selectedDate, setSelectedDate] = useState(selectedDateInStore ?? '2024-08-07'); + const [referenceDayBottomPosition, setReferenceDayBottomPosition] = useState(0); + + const yAxisLabel = useMemo(() => { + return t(`infection-states.${selectedCompartment}`); + }, [selectedCompartment, t]); + + // Set selected date in store + useEffect(() => { + dispatch(selectDate(selectedDate)); + // This effect should only run when the selectedDate changes + }, [selectedDate, dispatch]); + + // Set selected date in state when it changes in store + useEffect(() => { + if (selectedDateInStore) { + setSelectedDate(selectedDateInStore); + } + // This effect should only run when the selectedDateInStore changes + }, [selectedDateInStore]); + + // Set reference day in store + useEffect(() => { + dispatch(setReferenceDayBottom(referenceDayBottomPosition)); + // This effect should only run when the referenceDay changes + }, [referenceDayBottomPosition, dispatch]); + + return ( + + + + ); +} diff --git a/frontend/src/components/MainContent.tsx b/frontend/src/components/MainContent.tsx index 31c2b81a..09e431ff 100644 --- a/frontend/src/components/MainContent.tsx +++ b/frontend/src/components/MainContent.tsx @@ -2,13 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 import React from 'react'; -import Scenario from './Scenario'; import IconBar from './IconBar'; - import Grid from '@mui/material/Grid'; import {useTheme} from '@mui/material/styles'; import MainContentTabs from './MainContentTabs'; import {ReferenceDayConnector} from './ReferenceDayConnector'; +import ScenarioContainer from './ScenarioComponents/ScenarioContainer'; export default function MainContent(): JSX.Element { const theme = useTheme(); @@ -35,7 +34,7 @@ export default function MainContent(): JSX.Element { - + diff --git a/frontend/src/components/MainContentTabs.tsx b/frontend/src/components/MainContentTabs.tsx index b2b5c5d5..756452ed 100644 --- a/frontend/src/components/MainContentTabs.tsx +++ b/frontend/src/components/MainContentTabs.tsx @@ -17,9 +17,8 @@ import {useAppDispatch, useAppSelector} from '../store/hooks'; import {selectTab} from '../store/UserPreferenceSlice'; import {useTheme} from '@mui/material/styles'; -// Lazily load the tab contents to enable code splitting. +const SimulationChart = React.lazy(() => import('./LineChartContainer')); const ParameterEditor = React.lazy(() => import('./ParameterEditor')); -const SimulationChart = React.lazy(() => import('./SimulationChart')); /** * This component manages the main content, which is a collection of tabs that the user can navigate through. By default diff --git a/frontend/src/components/ManageGroupDialog.tsx b/frontend/src/components/ManageGroupDialog.tsx deleted file mode 100644 index 2b9617c6..00000000 --- a/frontend/src/components/ManageGroupDialog.tsx +++ /dev/null @@ -1,474 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useCallback, useEffect, useState} from 'react'; -import {useAppDispatch, useAppSelector} from '../store/hooks'; -import {useTranslation} from 'react-i18next'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import Card from '@mui/material/Card'; -import CardActionArea from '@mui/material/CardActionArea'; -import CardActions from '@mui/material/CardActions'; -import CardContent from '@mui/material/CardContent'; -import Checkbox from '@mui/material/Checkbox'; -import Divider from '@mui/material/Divider'; -import FormControlLabel from '@mui/material/FormControlLabel'; -import FormGroup from '@mui/material/FormGroup'; -import IconButton from '@mui/material/IconButton'; -import TextField from '@mui/material/TextField'; -import Typography from '@mui/material/Typography'; -import Close from '@mui/icons-material/Close'; -import DeleteForever from '@mui/icons-material/DeleteForever'; -import GroupAdd from '@mui/icons-material/GroupAdd'; -import Visibility from '@mui/icons-material/Visibility'; -import VisibilityOffOutlined from '@mui/icons-material/VisibilityOffOutlined'; -import {useTheme} from '@mui/material/styles'; -import {GroupFilter} from '../types/group'; -import {GroupSubcategory, useGetGroupCategoriesQuery, useGetGroupSubcategoriesQuery} from '../store/services/groupApi'; -import {setGroupFilter, deleteGroupFilter, toggleGroupFilter} from '../store/DataSelectionSlice'; -import {Dictionary} from '../util/util'; -import ConfirmDialog from './shared/ConfirmDialog'; - -/** - * This dialog provides an editor to create, edit, toggle and delete group filters. It uses a classic master detail view - * with the available filters on the left and the filter configuration on the right. - * - * @param props Contains an onCloseRequest function, which is called, when the close button is called. So please handle - * it and allow the dialog to close. Additionally, an unsavedChangesCallback gives info, if the dialog currently contains - * changes that weren't saved. - */ -export default function ManageGroupDialog(props: { - onCloseRequest: () => void; - unsavedChangesCallback: (unsavedChanges: boolean) => void; -}): JSX.Element { - const {t} = useTranslation(); - const theme = useTheme(); - - const {data: groupCategories} = useGetGroupCategoriesQuery(); - - const groupFilterList = useAppSelector((state) => state.dataSelection.groupFilters); - - // The currently selected filter. - const [selectedGroupFilter, setSelectedGroupFilter] = useState(null); - - // A filter the user might open. It will first be checked, if unsaved changes are present. - const [nextSelectedGroupFilter, setNextSelectedGroupFilter] = useState(null); - - const [confirmDialogOpen, setConfirmDialogOpen] = useState(false); - const [unsavedChanges, setUnsavedChanges] = useState(false); - - // This effect ensures that the user doesn't discard unsaved changes without confirming it first. - useEffect(() => { - if (nextSelectedGroupFilter && nextSelectedGroupFilter.id !== selectedGroupFilter?.id) { - // A new group filter has been selected. - - if (selectedGroupFilter && unsavedChanges) { - // There are unsaved changes. Ask for confirmation first! - setConfirmDialogOpen(true); - } else { - // Everything is saved. Change the selected filter. - setSelectedGroupFilter(nextSelectedGroupFilter); - } - } else if (!nextSelectedGroupFilter && !unsavedChanges) { - // This case is handled, when the user presses the 'abort' button. - setSelectedGroupFilter(null); - } - props.unsavedChangesCallback(unsavedChanges); - }, [unsavedChanges, nextSelectedGroupFilter, selectedGroupFilter, props]); - - return ( - - -
- {t('group-filters.title')} - - - - - - - - {Object.values(groupFilterList || {})?.map((item) => ( - setNextSelectedGroupFilter(groupFilter)} - /> - ))} - - { - const groups: Dictionary> = {}; - groupCategories?.results?.forEach((group) => (groups[group.key] = [])); - setNextSelectedGroupFilter({id: crypto.randomUUID(), name: '', isVisible: false, groups: groups}); - }} - > - - - {t('group-filters.add-group')} - - - - - - - - {selectedGroupFilter ? ( - setNextSelectedGroupFilter(groupFilter)} - unsavedChangesCallback={(edited) => setUnsavedChanges(edited)} - /> - ) : ( - - {t('group-filters.nothing-selected')} - - - )} - - { - if (answer) { - setSelectedGroupFilter(nextSelectedGroupFilter); - } else { - setNextSelectedGroupFilter(null); - } - setConfirmDialogOpen(false); - }} - /> - - ); -} - -interface GroupFilterCardProps { - /** The GroupFilter item to be displayed. */ - item: GroupFilter; - - /** Whether the filter is selected or not. If it is selected, the detail view is displaying this filter's config. */ - selected: boolean; - - /** - * Callback function that is called when the filter is selected or unselected. - * - * @param groupFilter - Either this filter, if it was selected or null, if it was unselected. - */ - selectFilterCallback: (groupFilter: GroupFilter | null) => void; -} - -/** - * GroupFilterCard component displays a card that represents a single filter for the group filter list. The card shows - * the filter name, a toggle switch to turn on or off the filter, and a delete button to remove the filter. - */ -function GroupFilterCard(props: GroupFilterCardProps) { - const theme = useTheme(); - const {t} = useTranslation(); - const dispatch = useAppDispatch(); - - const [confirmDialogOpen, setConfirmDialogOpen] = useState(false); - - return ( - - { - props.selectFilterCallback(props.selected ? null : props.item); - }} - > - - - {props.item.name} - - - - - - } - icon={} - checked={props.item.isVisible} - onClick={() => { - dispatch(toggleGroupFilter(props.item.id)); - }} - /> - { - if (answer) { - dispatch(deleteGroupFilter(props.item.id)); - props.selectFilterCallback(null); - } - setConfirmDialogOpen(false); - }} - /> - setConfirmDialogOpen(true)}> - - - - - ); -} - -interface GroupFilterEditorProps { - /** The GroupFilter item to be edited. */ - groupFilter: GroupFilter; - - /** - * Callback function that is called, when a new filter is created, so it will be selected immediately or when the user - * wants to close the editor. - * - * @param groupFilter - Either the current filter or null when the user wants to close the current filter's editor. - */ - selectGroupFilterCallback: (groupFilter: GroupFilter | null) => void; - - /** - * A callback that notifies the parent, if there are currently unsaved changes for this group filter. - * - * @param unsavedChanges - If the group filter has been modified without saving. - */ - unsavedChangesCallback: (unsavedChanges: boolean) => void; -} - -/** - * This is the detail view of the GroupFilter dialog. It allows to edit and create groups. It has a text field for the - * name at the top and columns of checkboxes for groups in the center. It requires that at least one checkbox of each - * group is selected before the apply button becomes available. It is also possible to discard changes by clicking the - * abort button before applying the changes. - * - * @param props - */ -function GroupFilterEditor(props: GroupFilterEditorProps): JSX.Element { - const {t} = useTranslation(); - const {t: tBackend} = useTranslation('backend'); - const theme = useTheme(); - const dispatch = useAppDispatch(); - - const {data: groupCategories} = useGetGroupCategoriesQuery(); - const {data: groupSubCategories} = useGetGroupSubcategoriesQuery(); - - const [name, setName] = useState(props.groupFilter.name); - const [groups, setGroups] = useState(props.groupFilter.groups); - - // Every group must have at least one element selected to be valid. - const [valid, setValid] = useState(name.length > 0 && Object.values(groups).every((group) => group.length > 0)); - const [unsavedChanges, setUnsavedChanges] = useState(false); - - // Checks if the group filer is in a valid state. - useEffect(() => { - setValid(name.length > 0 && Object.values(groups).every((group) => group.length > 0)); - }, [name, groups, props]); - - // Updates the parent about the current save state of the group filter. - useEffect(() => { - props.unsavedChangesCallback(unsavedChanges); - }, [props, unsavedChanges]); - - const toggleGroup = useCallback( - (subGroup: GroupSubcategory) => { - // We need to make a copy before we modify the entry. - let category = [...groups[subGroup.category]]; - - if (category.includes(subGroup.key)) { - category = category.filter((key) => key !== subGroup.key); - } else { - category.push(subGroup.key); - } - - setGroups({ - ...groups, - [subGroup.category]: category, - }); - setUnsavedChanges(true); - }, - [groups, setGroups] - ); - - return ( - - e.target.select()} - onChange={(e) => { - setUnsavedChanges(true); - setName(e.target.value); - }} - /> - - {groupCategories?.results?.map((group) => ( - - 0 ? theme.palette.text.primary : theme.palette.error.main} - variant='h2' - > - {tBackend(`group-filters.categories.${group.key}`)} - - - {groupSubCategories?.results - ?.filter((subCategory) => subCategory.category === group.key) - .filter((subGroup) => subGroup.key !== 'total') // TODO: We filter out the total group for now. - .map((subGroup) => ( - toggleGroup(subGroup)} - /> - } - /> - ))} - - - ))} - - - - - - - ); -} diff --git a/frontend/src/components/Scenario/CaseDataCard.tsx b/frontend/src/components/Scenario/CaseDataCard.tsx deleted file mode 100644 index 032e6c8a..00000000 --- a/frontend/src/components/Scenario/CaseDataCard.tsx +++ /dev/null @@ -1,67 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import {Dictionary} from '../../util/util'; -import {useTranslation} from 'react-i18next'; -import React, {useMemo} from 'react'; -import {useAppSelector} from '../../store/hooks'; -import {useGetCaseDataSingleSimulationEntryQuery} from '../../store/services/caseDataApi'; -import {DataCard} from './DataCard'; - -interface CaseDataCardProps { - /** If the card is currently selected. */ - selected: boolean; - - /** If the card is active or flipped over. */ - active: boolean; - - /** The simulation start values for all compartments. */ - startValues: Dictionary | null; - - /** A callback for when the card is being selected. */ - onClick: () => void; - - /** A callback for when the card is being activated or deactivated. */ - onToggle: () => void; -} - -/** - * This component renders a list of values and rates for each compartment for case data inside a black card. - */ -export function CaseDataCard(props: CaseDataCardProps): JSX.Element { - const {t} = useTranslation(); - - const node = useAppSelector((state) => state.dataSelection.district?.ags); - const day = useAppSelector((state) => state.dataSelection.date); - - const {data} = useGetCaseDataSingleSimulationEntryQuery( - { - node: node, - day: day ?? '', - groups: ['total'], - }, - {skip: !day} - ); - - const compartmentValues = useMemo(() => { - if (data && data.results.length > 0) { - return data.results[0].compartments; - } - - return null; - }, [data]); - - return ( - - ); -} diff --git a/frontend/src/components/Scenario/CompartmentList.tsx b/frontend/src/components/Scenario/CompartmentList.tsx deleted file mode 100644 index 3906430a..00000000 --- a/frontend/src/components/Scenario/CompartmentList.tsx +++ /dev/null @@ -1,293 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import Box from '@mui/material/Box'; -import {ScrollSyncPane} from 'react-scroll-sync'; -import List from '@mui/material/List'; -import ListItemButton from '@mui/material/ListItemButton'; -import {selectCompartment, setStartDate, toggleCompartmentExpansion} from '../../store/DataSelectionSlice'; -import ListItemText from '@mui/material/ListItemText'; -import Button from '@mui/material/Button'; -import React, {MouseEvent, useEffect, useMemo, useState} from 'react'; -import {darken, useTheme} from '@mui/material/styles'; -import {useTranslation} from 'react-i18next'; -import {useAppDispatch, useAppSelector} from '../../store/hooks'; -import {NumberFormatter} from '../../util/hooks'; -import {useGetSimulationStartValues} from './hooks'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import ClickAwayListener from '@mui/material/ClickAwayListener'; -import InfoOutlined from '@mui/icons-material/InfoOutlined'; -import Tooltip from '@mui/material/Tooltip'; -import {DatePicker} from '@mui/x-date-pickers/DatePicker'; -import dayjs, {Dayjs} from 'dayjs'; -import {dateToISOString} from '../../util/util'; -import {setReferenceDayTop} from '../../store/LayoutSlice'; -import {useBoundingclientrectRef} from 'rooks'; - -/** - * The component renders a list of compartments with their name on the left and the case data values at simulation start - * at the right. The user can select a compartment by clicking on one in the list. The list shows by default four - * compartments, but can be expanded by clicking on the more button. The extended list can be scrolled and is - * synchronized with the compartment lists of the data cards to the right. - */ -export default function CompartmentList(): JSX.Element { - const theme = useTheme(); - const {t, i18n} = useTranslation(); - const dispatch = useAppDispatch(); - const {formatNumber} = NumberFormatter(i18n.language, 1, 0); - - const compartments = useAppSelector((state) => state.scenarioList.compartments); - const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - const compartmentsExpanded = useAppSelector((state) => state.dataSelection.compartmentsExpanded); - const compartmentValues = useGetSimulationStartValues(); - - const [resizeRef, resizeBoundingRect] = useBoundingclientrectRef(); - - useEffect(() => { - const x = resizeBoundingRect?.x ?? 0; - const w = resizeBoundingRect?.width ?? 0; - dispatch(setReferenceDayTop(x + w)); - }, [dispatch, resizeBoundingRect]); - - /** This function either returns the value at simulation start of a compartment or 'no data'. */ - const getCompartmentValue = (compartment: string): string => { - if (compartmentValues && compartment in compartmentValues) { - return formatNumber(compartmentValues[compartment]); - } - return t('no-data'); - }; - - // This effect sets the selected compartment to the first one if no compartment is initially selected. - useEffect(() => { - if (!selectedCompartment && compartments.length > 0) { - dispatch(selectCompartment(compartments[0])); - } - }, [dispatch, compartments, selectedCompartment]); - - return ( - - - - - {compartments.map((compartment, i) => ( - - ))} - - - - - ); -} - -/** This component renders the simulation start date together with a descriptive label. */ -function SimulationStartTitle(): JSX.Element { - const theme = useTheme(); - const {t} = useTranslation(); - const dispatch = useAppDispatch(); - - const startDay = useAppSelector((state) => state.dataSelection.simulationStart); - const minDate = useAppSelector((state) => state.dataSelection.minDate); - const maxDate = useAppSelector((state) => state.dataSelection.maxDate); - - function updateDate(newDate: Dayjs | null) { - if (newDate) { - dispatch(setStartDate(dateToISOString(newDate.toDate()))); - } - } - - return ( - - - label={t('scenario.reference-day')} - value={dayjs(startDay)} - minDate={dayjs(minDate)} - maxDate={dayjs(maxDate)} - onChange={updateDate} - slotProps={{textField: {size: 'small'}}} - /> - - ); -} - -interface CompartmentRowProps { - /** The name of the compartment. */ - compartment: string; - - /** The value of the compartment at simulation start. */ - value: string; - - /** The index of the compartment. */ - index: number; -} - -/** - * This component renders a single row of the compartment list. To the left the name will be displayed and to the right - * the value at simulation start. If the index of the compartment is greater than three and the compartment list is not - * in the expanded mode this component will be hidden. - */ -function CompartmentRow(props: CompartmentRowProps): JSX.Element { - const {t: tBackend} = useTranslation('backend'); - const theme = useTheme(); - - const dispatch = useAppDispatch(); - const compartmentsExpanded = useAppSelector((state) => state.dataSelection.compartmentsExpanded); - const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - - const selected = useMemo(() => props.compartment === selectedCompartment, [props.compartment, selectedCompartment]); - - const [tooltipOpen, setTooltipOpen] = useState(false); - - const openTooltip = (e: MouseEvent) => { - e.stopPropagation(); - setTooltipOpen(true); - }; - - const closeTooltip = () => setTooltipOpen(false); - - return ( - { - // dispatch new compartment name - dispatch(selectCompartment(props.compartment)); - }} - > - - - - - - - - - - - ); -} diff --git a/frontend/src/components/Scenario/DataCard.tsx b/frontend/src/components/Scenario/DataCard.tsx deleted file mode 100644 index 40700c9c..00000000 --- a/frontend/src/components/Scenario/DataCard.tsx +++ /dev/null @@ -1,398 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import {Dictionary} from '../../util/util'; -import {useTheme} from '@mui/material/styles'; -import {useTranslation} from 'react-i18next'; -import {NumberFormatter} from '../../util/hooks'; -import {useAppSelector} from '../../store/hooks'; -import React, {useState} from 'react'; -import Box from '@mui/material/Box'; -import Tooltip from '@mui/material/Tooltip'; -import IconButton from '@mui/material/IconButton'; -import CheckBox from '@mui/icons-material/CheckBox'; -import CheckBoxOutlineBlank from '@mui/icons-material/CheckBoxOutlineBlank'; -import Typography from '@mui/material/Typography'; -import {ScrollSyncPane} from 'react-scroll-sync'; -import List from '@mui/material/List'; -import ListItem from '@mui/material/ListItem'; -import ListItemText from '@mui/material/ListItemText'; -import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'; -import ArrowDropUpIcon from '@mui/icons-material/ArrowDropUp'; -import ArrowRightIcon from '@mui/icons-material/ArrowRight'; -import {GroupFilterAppendage} from './GroupFilterAppendage'; - -interface DataCardProps { - /** The scenario id of the card. Note that id 0 is reserved for case data. */ - id: number; - - /** This is the title of the card. */ - label: string; - - /** The color of the scenario that the card should be highlighted in. */ - color: string; - - /** If the card is the selected one. Only one card can be selected at the same time. */ - selected: boolean; - - /** If this card is active. If not the card is flipped and only the title is shown. */ - active: boolean; - - /** All the values that correspond to this card. */ - compartmentValues: Dictionary | null; - - /** The simulation start values. They are used for calculating the rate. */ - startValues: Dictionary | null; - - /** Callback for when the card is selected. */ - onClick: () => void; - - /** Callback for when the card is activated or deactivated. */ - onToggle: () => void; -} - -/** - * This component renders a card for either the case data card or the scenario cards. It contains a title and a list of - * compartment values and change rates relative to the simulation start. - */ -export function DataCard(props: DataCardProps): JSX.Element { - const theme = useTheme(); - const {t, i18n} = useTranslation(); - - const {formatNumber} = NumberFormatter(i18n.language, 1, 0); - - const compartments = useAppSelector((state) => state.scenarioList.compartments); - const compartmentsExpanded = useAppSelector((state) => state.dataSelection.compartmentsExpanded); - - const [hover, setHover] = useState(false); - - /** This function either returns the value at simulation start of a compartment or 'no data'. */ - const getCompartmentValue = (compartment: string): string => { - if (props.compartmentValues && compartment in props.compartmentValues) { - return formatNumber(props.compartmentValues[compartment]); - } - return t('no-data'); - }; - - /** - * This function returns one of the following things: - * - The relative increase of a compartment value preceded by a plus sign - * - The relative decrease of a compartment value preceded by a minus sign - * - A zero preceded by a plus-minus sign - * - A dash, when no rate of change can be calculated - */ - const getCompartmentRate = (compartment: string): string => { - if ( - !props.compartmentValues || - !(compartment in props.compartmentValues) || - !props.startValues || - !(compartment in props.startValues) - ) { - // Return a Figure Dash (‒) where a rate cannot be calculated. - return '\u2012'; - } - - const value = props.compartmentValues[compartment]; - const startValue = props.startValues[compartment]; - const result = Math.round(100 * (value / startValue) - 100); - - if (!isFinite(result)) { - // Return a Figure Dash (‒) where a rate cannot be calculated. - return '\u2012'; - } - - let sign: string; - if (result > 0) { - sign = '+'; - } else if (result < 0) { - sign = '-'; - } else { - // Return a Plus Minus sign (±) where a rate cannot be calculated. - sign = '\u00B1'; - } - - return sign + Math.abs(result).toFixed() + '%'; - }; - - return ( - - setHover(false)} - > - {/*hover-state*/} - - - props.onToggle()} - aria-label={props.active ? t('scenario.deactivate') : t('scenario.activate')} - > - {props.active ? : } - - - - props.onClick() : () => true} - onMouseEnter={() => setHover(true)} - > - - - - - - - - {compartments.map((compartment, i) => ( - - ))} - - - - - - {props.active && props.id !== 0 ? : null} - - ); -} - -interface CardTitleProps { - /** The id of the card. Either zero for the case data or the scenario id. */ - id: number; - - /** The title of the card. */ - title: string; - - /** If the card is front facing or flipped. */ - isFront: boolean; -} - -/** Renders the card title. Depending, if the card is flipped or not the title will be left or right aligned. */ -function CardTitle(props: CardTitleProps): JSX.Element { - const theme = useTheme(); - - return ( - - - {props.title} - - - ); -} - -interface CompartmentRowProps { - /** The name of the compartment. */ - compartment: string; - - /** The compartment value to display. */ - value: string; - - /** The rate of change to display. */ - rate: string; - - /** The corresponding scenario color. */ - color: string; - - /** The index of the compartment. */ - index: number; -} - -/** - * This component renders a single row of the data card. To the left the value will be displayed and to the right the - * rate is displayed. If the index of the compartment is greater than three and the compartment list is not in the - * expanded mode this component will be hidden. - */ -function CompartmentRow(props: CompartmentRowProps): JSX.Element { - const theme = useTheme(); - - const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - const compartmentsExpanded = useAppSelector((state) => state.dataSelection.compartmentsExpanded); - - return ( - 4 - // highlight compartment if selectedCompartment === compartment - display: compartmentsExpanded || props.index < 4 ? 'flex' : 'none', - color: selectedCompartment === props.compartment ? theme.palette.text.primary : theme.palette.text.disabled, - backgroundColor: selectedCompartment === props.compartment ? hexToRGB(props.color, 0.1) : 'transparent', - padding: theme.spacing(1), - margin: theme.spacing(0), - marginTop: theme.spacing(1), - paddingLeft: theme.spacing(3), - paddingRight: theme.spacing(3), - borderTop: '2px solid transparent', - borderBottom: '2px solid transparent', - }} - > - - - - - ); -} - -interface TrendArrowProps { - /** The value. */ - value: number; - - /** The rate of change relative to scenario start. */ - rate: string; -} - -/** - * Renders an arrow depending on value and rate. When the rate is negative a green downwards arrow is rendered, when the - * rate is between zero and three percent a grey sidewards arrow is rendered and when the rate is greater than three - * percent a red upwards arrow is being rendered. - */ -function TrendArrow(props: TrendArrowProps): JSX.Element { - // Shows downwards green arrows if getCompartmentRate < 0%. - if (parseFloat(props.rate) < 0) { - return ; - } - // Shows upwards red arrows if getCompartmentRate > 3%. If there is no RKI value for that compartment i.e., getCompartmentRate is Null, then it will check the getCompartmentValue (scenario values only) which will always be positive. - else if (parseFloat(props.rate) > 3 || (props.value > 0 && props.rate === '\u2012')) { - return ; - } - // Shows grey arrows (stagnation) if getCompartmentRate is between 0 and 3 % or if there is no RKI value. - else { - return ; - } -} - -/** Takes a three component hex string and an alpha value and transforms it into an rgba css string. */ -function hexToRGB(hex: string, alpha: number): string { - const r = parseInt(hex.slice(1, 3), 16), - g = parseInt(hex.slice(3, 5), 16), - b = parseInt(hex.slice(5, 7), 16); - - if (alpha) { - return 'rgba(' + r.toString() + ', ' + g.toString() + ', ' + b.toString() + ', ' + alpha.toString() + ')'; - } else { - return 'rgb(' + r.toString() + ', ' + g.toString() + ', ' + b.toString() + ')'; - } -} diff --git a/frontend/src/components/Scenario/DataCardList.tsx b/frontend/src/components/Scenario/DataCardList.tsx deleted file mode 100644 index d6bf4c17..00000000 --- a/frontend/src/components/Scenario/DataCardList.tsx +++ /dev/null @@ -1,162 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import Box from '@mui/material/Box'; -import {CaseDataCard} from './CaseDataCard'; -import {selectScenario, setMinMaxDates, setStartDate, toggleScenario} from '../../store/DataSelectionSlice'; -import {ScenarioCard} from './ScenarioCard'; -import React, {useEffect, useState} from 'react'; -import {dateToISOString} from '../../util/util'; -import {useAppDispatch, useAppSelector} from '../../store/hooks'; -import {useTheme} from '@mui/material/styles'; -import { - useGetSimulationModelQuery, - useGetSimulationModelsQuery, - useGetSimulationsQuery, -} from '../../store/services/scenarioApi'; -import {setCompartments, setScenarios} from '../../store/ScenarioSlice'; -import {useGetSimulationStartValues} from './hooks'; -import {useGetCaseDataByDistrictQuery} from '../../store/services/caseDataApi'; -import {getScenarioPrimaryColor} from '../../util/Theme'; - -export default function DataCardList(): JSX.Element { - const theme = useTheme(); - const dispatch = useAppDispatch(); - - const scenarioList = useAppSelector((state) => state.scenarioList); - const activeScenarios = useAppSelector((state) => state.dataSelection.activeScenarios); - const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); - - const [simulationModelKey, setSimulationModelKey] = useState('unset'); - - const {data: scenarioListData} = useGetSimulationsQuery(); - const {data: simulationModelsData} = useGetSimulationModelsQuery(); - const {data: simulationModelData} = useGetSimulationModelQuery(simulationModelKey, { - skip: simulationModelKey === 'unset', - }); - - // This is a temporary solution to get the start and end day of the case data. - const caseData = useGetCaseDataByDistrictQuery({node: '00000', groups: null, compartments: null}); - - const startValues = useGetSimulationStartValues(); - - useEffect(() => { - if (simulationModelsData && simulationModelsData.results.length > 0) { - const {key} = simulationModelsData.results[0]; - setSimulationModelKey(key); - } - }, [simulationModelsData]); - - useEffect(() => { - if (simulationModelData) { - const {compartments} = simulationModelData.results; - dispatch(setCompartments(compartments)); - } - }, [simulationModelData, dispatch]); - - // This effect calculates the start and end days from the case and scenario data. - useEffect(() => { - let minDate: string | null = null; - let maxDate: string | null = null; - - if (scenarioListData) { - const scenarios = scenarioListData.results.map((scenario) => ({id: scenario.id, label: scenario.description})); - dispatch(setScenarios(scenarios)); - - //activate all scenarios initially - if (!activeScenarios) { - scenarios.forEach((scenario) => { - dispatch(toggleScenario(scenario.id)); - }); - } - - if (scenarios.length > 0) { - // The simulation data (results) are only available one day after the start day onward. - const startDay = new Date(scenarioListData.results[0].startDay); - startDay.setUTCDate(startDay.getUTCDate() + 1); - - const endDay = new Date(startDay); - endDay.setDate(endDay.getDate() + scenarioListData.results[0].numberOfDays - 1); - - minDate = dateToISOString(startDay); - maxDate = dateToISOString(endDay); - - dispatch(setStartDate(minDate)); - } - } - - if (caseData?.data) { - const entries = caseData.data.results.map((entry) => entry.day).sort((a, b) => a.localeCompare(b)); - - const firstCaseDataDay = entries[0]; - if (!minDate) { - minDate = firstCaseDataDay; - dispatch(setStartDate(minDate)); - } else { - minDate = minDate.localeCompare(firstCaseDataDay) < 0 ? minDate : firstCaseDataDay; - } - - const lastCaseDataDay = entries.slice(-1)[0]; - if (!maxDate) { - maxDate = lastCaseDataDay; - } else { - maxDate = maxDate.localeCompare(lastCaseDataDay) > 0 ? maxDate : lastCaseDataDay; - } - } - - if (minDate && maxDate) { - dispatch(setMinMaxDates({minDate, maxDate})); - } - }, [activeScenarios, scenarioListData, dispatch, caseData]); - - //effect to switch active scenario - useEffect(() => { - if (activeScenarios) { - if (activeScenarios.length == 0) { - dispatch(selectScenario(null)); - } else if (selectedScenario === null || !activeScenarios.includes(selectedScenario)) { - dispatch(selectScenario(activeScenarios[0])); - } - } - }, [activeScenarios, selectedScenario, dispatch]); - - return ( - - dispatch(selectScenario(0))} - onToggle={() => dispatch(toggleScenario(0))} - /> - {Object.entries(scenarioList.scenarios).map(([, scenario]) => ( - { - // set active scenario to this one and send dispatches - dispatch(selectScenario(scenario.id)); - }} - onToggle={() => { - dispatch(toggleScenario(scenario.id)); - }} - /> - ))} - - ); -} diff --git a/frontend/src/components/Scenario/GroupFilterAppendage.tsx b/frontend/src/components/Scenario/GroupFilterAppendage.tsx deleted file mode 100644 index dcda66c2..00000000 --- a/frontend/src/components/Scenario/GroupFilterAppendage.tsx +++ /dev/null @@ -1,93 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import {useTheme} from '@mui/material/styles'; -import {useAppSelector} from '../../store/hooks'; -import React, {useState} from 'react'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import ChevronLeft from '@mui/icons-material/ChevronLeft'; -import ChevronRight from '@mui/icons-material/ChevronRight'; -import Collapse from '@mui/material/Collapse'; -import {GroupFilterCard} from './GroupFilterCard'; - -interface GroupFilterAppendageProps { - /** The scenario id. */ - scenarioId: number; - - /** The scenario color. */ - color: string; -} - -/** - * This component is placed on the right side of the scenario cards, if at least one group filter is active. It contains - * a button to open and close the card appendage for the active group filters. - */ -export function GroupFilterAppendage(props: GroupFilterAppendageProps): JSX.Element | null { - const theme = useTheme(); - const groupFilterList = useAppSelector((state) => state.dataSelection.groupFilters); - - const [folded, setFolded] = useState(true); - - if (!groupFilterList) { - return null; - } - - const groupFilterArray = Object.values(groupFilterList); - - // If no group filter is visible this will be hidden. - if (!groupFilterArray.some((groupFilter) => groupFilter.isVisible)) { - return null; - } - - return ( - - - - - {groupFilterArray - .filter((groupFilter) => groupFilter.isVisible) - .map((groupFilter, i) => { - return ( - - ); - })} - - - - ); -} diff --git a/frontend/src/components/Scenario/GroupFilterCard.tsx b/frontend/src/components/Scenario/GroupFilterCard.tsx deleted file mode 100644 index 43a940cc..00000000 --- a/frontend/src/components/Scenario/GroupFilterCard.tsx +++ /dev/null @@ -1,161 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import {useTheme} from '@mui/material/styles'; -import {useAppSelector} from '../../store/hooks'; -import React from 'react'; -import Box from '@mui/material/Box'; -import {useGetSingleGroupFilterDataQuery} from '../../store/services/groupApi'; -import Typography from '@mui/material/Typography'; -import {useTranslation} from 'react-i18next'; -import {NumberFormatter} from '../../util/hooks'; -import {ScrollSyncPane} from 'react-scroll-sync'; -import List from '@mui/material/List'; -import ListItem from '@mui/material/ListItem'; -import ListItemText from '@mui/material/ListItemText'; -import {GroupFilter} from '../../types/group'; - -/** - * This is responsible for displaying an active group filter. - */ -export function GroupFilterCard(props: GroupFilterCardProps): JSX.Element | null { - const theme = useTheme(); - - return ( - - - - {props.groupFilter.name} - - - - - ); -} - -/** - * This component renders all compartment values of a group filter in one column. - */ -function GroupFilterCardCompartmentValues(props: GroupFilterCardProps): JSX.Element | null { - const {t, i18n} = useTranslation(); - const theme = useTheme(); - - const {formatNumber} = NumberFormatter(i18n.language, 1, 0); - - const day = useAppSelector((state) => state.dataSelection.date); - const node = useAppSelector((state) => state.dataSelection.district?.ags); - const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - const compartmentsExpanded = useAppSelector((state) => state.dataSelection.compartmentsExpanded); - const compartments = useAppSelector((state) => state.scenarioList.compartments); - - const {data: groupFilterData} = useGetSingleGroupFilterDataQuery( - { - id: props.scenarioId, - node: node, - day: day ?? '', - groupFilter: props.groupFilter, - }, - {skip: !day || props.scenarioId === 0} - ); - - const getGroupValue = (compartment: string): string => { - if (!groupFilterData) { - return t('no-data'); - } - - const groupFilterResults = groupFilterData.results; - if (groupFilterResults.length === 0 || !(compartment in groupFilterResults[0].compartments)) { - return t('no-data'); - } - - return formatNumber(groupFilterResults[0].compartments[compartment]); - }; - - return ( - - - {compartments.map((compartment, i) => { - return ( - 4 - display: compartmentsExpanded || i < 4 ? 'flex' : 'none', - // highlight compartment if selectedCompartment === compartment - color: selectedCompartment === compartment ? theme.palette.text.primary : theme.palette.text.disabled, - alignContent: 'center', - padding: theme.spacing(1), - margin: theme.spacing(0), - marginTop: theme.spacing(1), - borderTop: '2px solid transparent', - borderBottom: '2px solid transparent', - }} - > - - - ); - })} - - - ); -} - -interface GroupFilterCardProps { - /** The group filter the cards belongs to. */ - groupFilter: GroupFilter; - - /** The index in the list of group filters. */ - groupFilterIndex: number; - - /** The scenario id. */ - scenarioId: number; -} diff --git a/frontend/src/components/Scenario/ScenarioCard.tsx b/frontend/src/components/Scenario/ScenarioCard.tsx deleted file mode 100644 index 1f83eb56..00000000 --- a/frontend/src/components/Scenario/ScenarioCard.tsx +++ /dev/null @@ -1,88 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useMemo} from 'react'; -import {useTheme} from '@mui/material/styles'; -import {useAppSelector} from 'store/hooks'; -import {useGetSingleSimulationEntryQuery} from 'store/services/scenarioApi'; -import {Dictionary} from '../../util/util'; -import {useTranslation} from 'react-i18next'; -import {DataCard} from './DataCard'; -import {getScenarioPrimaryColor} from '../../util/Theme'; - -/** Type definition for the ScenarioCard props */ -interface ScenarioCardProps { - /** The scenario this card is displaying. */ - scenario: { - /** The identifier for the scenario. */ - id: number; - - /** The label for the scenario displayed to the user. */ - label: string; - }; - - /** The key for this scenario (index from the map function for the scenario list). */ - key: number; - - /** Boolean value whether the scenario is the selected scenario. */ - selected: boolean; - - /** Boolean value whether the scenario is active (not flipped). */ - active: boolean; - - /** The color of the card. */ - color: string; - - startValues: Dictionary | null; - - /** The function that is executed when the scenario card is clicked. */ - onClick: () => void; - - /** The function that is executed when the disable toggle is clicked. */ - onToggle: () => void; -} - -/** - * React Component to render an individual Scenario Card. - * @prop {ScenarioCardProps} props - The props for the component. - * @returns {JSX.Element} JSX Element to render the scenario card. - */ -export function ScenarioCard(props: ScenarioCardProps): JSX.Element { - const {t: tBackend} = useTranslation('backend'); - const theme = useTheme(); - - const node = useAppSelector((state) => state.dataSelection.district?.ags); - const day = useAppSelector((state) => state.dataSelection.date); - - const {data} = useGetSingleSimulationEntryQuery( - { - id: props.scenario.id, - node: node, - day: day ?? '', - groups: ['total'], - }, - {skip: !day} - ); - - const compartmentValues = useMemo(() => { - if (data && data.results.length > 0) { - return data.results[0].compartments; - } - - return null; - }, [data]); - - return ( - - ); -} diff --git a/frontend/src/components/Scenario/index.tsx b/frontend/src/components/Scenario/index.tsx deleted file mode 100644 index 5d11a977..00000000 --- a/frontend/src/components/Scenario/index.tsx +++ /dev/null @@ -1,144 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useState} from 'react'; -import {useAppSelector} from '../../store/hooks'; -import {useTheme} from '@mui/material/styles'; -import {useTranslation} from 'react-i18next'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import {ScrollSync} from 'react-scroll-sync'; -import ConfirmDialog from '../shared/ConfirmDialog'; -import CompartmentList from './CompartmentList'; -import DataCardList from './DataCardList'; - -// Let's import pop-ups only once they are opened. -const ManageGroupDialog = React.lazy(() => import('../ManageGroupDialog')); - -/** - * React Component to render the Scenario Cards Section - * @returns {JSX.Element} JSX Element to render the scenario card container and the scenario cards within. - * @see ScenarioCard - */ -export default function Scenario(): JSX.Element { - // State for the groups management dialog - const [open, setOpen] = React.useState(false); - - const {t} = useTranslation(); - const theme = useTheme(); - - const compartmentsExpanded = useAppSelector((state) => state.dataSelection.compartmentsExpanded); - - const [groupEditorUnsavedChanges, setGroupEditorUnsavedChanges] = useState(false); - const [closeDialogOpen, setCloseDialogOpen] = useState(false); - - return ( - - - - - - - - - - { - if (groupEditorUnsavedChanges) { - setCloseDialogOpen(true); - } else { - setOpen(false); - } - }} - > - { - if (groupEditorUnsavedChanges) { - setCloseDialogOpen(true); - } else { - setOpen(false); - } - }} - unsavedChangesCallback={(unsavedChanges) => setGroupEditorUnsavedChanges(unsavedChanges)} - /> - { - if (answer) { - setOpen(false); - } - setCloseDialogOpen(false); - }} - /> - - - - ); -} diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx new file mode 100644 index 00000000..2ce4595a --- /dev/null +++ b/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx @@ -0,0 +1,158 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import DataCard from './DataCard'; +import {Dispatch, SetStateAction} from 'react'; +import React, {useMemo} from 'react'; +import {useTheme} from '@mui/material/styles'; +import Box from '@mui/material/Box/Box'; +import {Scenario} from 'store/ScenarioSlice'; +import {CardValue, FilterValue} from 'types/card'; +import {GroupFilter} from 'types/group'; +import {Localization} from 'types/localization'; +import {getScenarioPrimaryColor} from 'util/Theme'; +import {Dictionary} from 'util/util'; + +interface CardContainerProps { + /** A boolean indicating whether the compartments are expanded. */ + compartmentsExpanded: boolean; + + /** A dictionary of card values. Each value is an object containing 'startValues', a dictionary used for rate calculation, and 'compartmentValues' for each card. + *'startValues' help determine whether the values have increased, decreased, or remained the same. */ + cardValues: Dictionary | undefined; + + /** A dictionary of filter values. This is an array of objects, each containing a title and a dictionary of numbers representing + * the filtered information to be displayed, it's used a disctionary because each card has to have the same amount of filter. */ + filterValues?: Dictionary | null; + + /** The compartment that is currently selected. */ + selectedCompartment: string; + + /** An array of scenarios. */ + scenarios: Scenario[]; + + /** An array of compartments. */ + compartments: string[]; + + /** An array of active scenarios. */ + activeScenarios: number[] | null; + + /** A function to set the active scenarios. */ + setActiveScenarios: React.Dispatch>; + + /** The selected scenario. */ + selectedScenario: number | null; + + /** A function to set the selected scenario. */ + setSelectedScenario: Dispatch>; + + /** The minimum number of compartment rows. */ + minCompartmentsRows: number; + + /** The maximum number of compartment rows. */ + maxCompartmentsRows: number; + + /** An object containing localization information (translation & number formattation). */ + localization?: Localization; + + /** A dictionary of group filters. */ + groupFilters: Dictionary | undefined; + + /** Boolean to determine if the arrow is displayed */ + arrow?: boolean; +} + +/** + * This component renders a container for data cards. Each card represents a scenario and contains a title, a list of + * compartment values, and change rates relative to the simulation start. + */ +export default function CardContainer({ + compartmentsExpanded, + filterValues, + selectedCompartment, + compartments, + scenarios, + activeScenarios, + cardValues, + minCompartmentsRows, + maxCompartmentsRows, + setActiveScenarios, + localization = { + formatNumber: (value: number) => value.toString(), + customLang: 'global', + overrides: {}, + }, + selectedScenario, + setSelectedScenario, + groupFilters, + arrow = true, +}: CardContainerProps) { + const theme = useTheme(); + const minHeight = useMemo(() => { + let height; + if (compartmentsExpanded) { + if (maxCompartmentsRows > 5) { + height = (390 / 6) * maxCompartmentsRows; + } else { + height = (660 / 6) * maxCompartmentsRows; + } + } else { + if (minCompartmentsRows < 4) { + height = (480 / 4) * minCompartmentsRows; + } else { + height = (325 / 4) * minCompartmentsRows; + } + } + return `${height}px`; + }, [compartmentsExpanded, maxCompartmentsRows, minCompartmentsRows]); + + const dataCards = scenarios.map((scenario) => { + const cardValue = cardValues ? cardValues[scenario.id.toString()] : null; + if (!cardValue) { + return null; + } + return ( + + ); + }); + + return ( + + {dataCards} + + ); +} diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/DataCard.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/DataCard.tsx new file mode 100644 index 00000000..2a6af27f --- /dev/null +++ b/frontend/src/components/ScenarioComponents/CardsComponents/DataCard.tsx @@ -0,0 +1,189 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import Box from '@mui/material/Box'; +import React, {useEffect, useMemo, useState} from 'react'; +import MainCard from './MainCard/MainCard'; +import FiltersContainer from './GroupFilter/FiltersContainer'; +import {FilterValue} from 'types/card'; +import {GroupFilter} from 'types/group'; +import {Localization} from 'types/localization'; +import {Dictionary} from 'util/util'; + +interface DataCardProps { + /** A unique identifier for the card.*/ + index: number; + + /** A dictionary of compartment values associated with the card.*/ + compartmentValues: Dictionary | null; + + /** A dictionary of start values used for calculating the rate. This determines whether the values have increased, decreased, or remained the same. */ + startValues: Dictionary | null; + + /** The title of the card.*/ + label: string; + + /** A boolean indicating whether the compartments are expanded.*/ + compartmentsExpanded: boolean; + + /** An array of compartments.*/ + compartments: string[]; + + /** The compartment that is currently selected.*/ + selectedCompartment: string; + + /** A boolean indicating whether the scenario is selected.*/ + selectedScenario: boolean; + + /** The color of the card.*/ + color: string; + + /** An array of active scenarios.*/ + activeScenarios: number[] | null; + + /** A dictionary of filter values. This is an array of objects, each containing a title and a dictionary of numbers representing + * the filtered information to be displayed, it's used a disctionary because each card has to have the same amount of filter. */ + filterValues?: Dictionary | null; + + /** A function to set the selected scenario.*/ + setSelectedScenario: React.Dispatch>; + + /** A function to set the active scenarios.*/ + setActiveScenarios: React.Dispatch>; + + /** The number of the selected scenario.*/ + numberSelectedScenario: number | null; + + /** The minimum number of compartment rows.*/ + minCompartmentsRows: number; + + /** The maximum number of compartment rows.*/ + maxCompartmentsRows: number; + + /** An object containing localization information (translation & number formattation).*/ + localization?: Localization; + + /** A dictionary of group filters.*/ + groupFilters: Dictionary | undefined; + + /** Boolean to determine if the arrow is displayed */ + arrow?: boolean; +} + +/** + * This component renders a card for either the case data or the scenario cards. Each card contains a title, a list of + * compartment values, and change rates relative to the simulation start. Additionally, the component includes a filter container. + * The filter container renders a button and generates the necessary number of cards based on the presence of any filters. + */ +export default function DataCard({ + index, + compartmentValues, + startValues, + label, + compartmentsExpanded, + compartments, + selectedCompartment, + filterValues, + color, + activeScenarios, + selectedScenario, + numberSelectedScenario, + minCompartmentsRows, + maxCompartmentsRows, + setSelectedScenario, + setActiveScenarios, + localization = { + formatNumber: (value: number) => value.toString(), + customLang: 'global', + overrides: {}, + }, + groupFilters, + arrow = true, +}: DataCardProps) { + const [hover, setHover] = useState(false); + const [folded, setFolded] = useState(false); + const [visibility, setVisibility] = useState(true); + + const filteredTitles: string[] = useMemo(() => { + if (activeScenarios?.includes(index) && filterValues?.[index.toString()]) { + return filterValues[index.toString()].map((filterValue: FilterValue) => filterValue.filteredTitle); + } + return []; + }, [activeScenarios, filterValues, index]); + + const filteredValues: Array | null> = useMemo(() => { + if (activeScenarios?.includes(index) && filterValues?.[index.toString()]) { + return filterValues[index.toString()].map((filterValue: FilterValue) => filterValue.filteredValues); + } + return []; + }, [activeScenarios, filterValues, index]); + + /* + * This useEffect hook updates the visibility of the component based on groupFilters and filteredTitles. + * It checks if the first title in filteredTitles matches any filter name in groupFilters and if that filter is visible. + * If at least one matching filter is visible, the component becomes visible; otherwise, it remains hidden. + */ + useEffect(() => { + function checkVisibility(): boolean { + if (groupFilters) { + return Object.values(groupFilters) + .map((filter) => (filter.name == filteredTitles[0] ? filter.isVisible : false)) + .includes(true); + } + return false; + } + setVisibility(checkVisibility); + }, [filteredTitles, groupFilters]); + + return ( + + + {activeScenarios?.includes(index) && + filterValues?.[index.toString()] && + Object.keys(groupFilters || {}).length !== 0 && + visibility && ( + + )} + + ); +} diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterButton.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterButton.tsx new file mode 100644 index 00000000..43023f09 --- /dev/null +++ b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterButton.tsx @@ -0,0 +1,71 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 +import React from 'react'; +import ChevronLeft from '@mui/icons-material/ChevronLeft'; +import ChevronRight from '@mui/icons-material/ChevronRight'; +import Button from '@mui/material/Button/Button'; + +interface FilterButtonProps { + /** Boolean to determine if the filter button is folded */ + folded: boolean; + + /** Function to set the folded state */ + setFolded: (value: boolean) => void; + + /** Color of the button border */ + borderColor: string; + + /** Background color of the button */ + backgroundColor: string; + + /** ID number of the button */ + idNumber: number; + + /** Maximum number of compartment rows */ + maxCompartmentsRows: number; + + /** Minimum number of compartment rows */ + minCompartmentsRows: number; + + /** Boolean to determine if the compartments are expanded */ + compartmentsExpanded: boolean; +} + +/** + * This component renders the filter button which open or close the container of filter cards. + * The button displays a left or right chevron icon depending on the folded state. + */ +export default function FilterButton({ + folded, + setFolded, + borderColor, + idNumber, + backgroundColor, + maxCompartmentsRows, + compartmentsExpanded, + minCompartmentsRows, +}: FilterButtonProps) { + return ( + + ); +} diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterCard.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterCard.tsx new file mode 100644 index 00000000..ca81a389 --- /dev/null +++ b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterCard.tsx @@ -0,0 +1,140 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 +import React, {useMemo} from 'react'; +import {Box, useTheme} from '@mui/material'; +import Divider from '@mui/material/Divider'; +import FilterRows from './FilterRows'; +import CardTitle from '../MainCard/CardTitle'; +import {Localization} from 'types/localization'; +import {Dictionary} from 'util/util'; + +interface FilterCardProps { + /** Title of the filter card */ + title: string; + + /** Color of the filter card */ + color: string; + + /** Array of compartments */ + compartments: string[]; + + /** Dictionary of filtered values */ + filteredValues: Dictionary | null; + + /** Index of the group filter */ + groupFilterIndex: number; + + /** Total number of cards */ + totalCardNumber: number; + + /** Boolean to determine if the compartment is expanded */ + compartmentExpanded?: boolean; + + /** Selected compartment */ + selectedCompartment: string; + + /** Minimum number of compartment rows */ + minCompartmentsRows: number; + + /** Maximum number of compartment rows */ + maxCompartmentsRows: number; + + /** A boolean indicating whether the compartments are expanded. */ + compartmentsExpanded: boolean; + + /** An object containing localization information (translation & number formattation).*/ + localization?: Localization; +} + +/** + * This component renders a filter card with a title, and a list of values that are the filtered values. + * It also supports localization. + */ +export default function FilterCard({ + title, + color, + compartments, + filteredValues, + groupFilterIndex, + totalCardNumber, + compartmentExpanded, + selectedCompartment, + maxCompartmentsRows, + minCompartmentsRows, + compartmentsExpanded, + localization = { + formatNumber: (value: number) => value.toString(), + customLang: 'global', + overrides: {}, + }, +}: FilterCardProps) { + const theme = useTheme(); + + const maxHeight = useMemo(() => { + let height; + if (compartmentsExpanded) { + if (maxCompartmentsRows > 5) { + height = (390 / 6) * maxCompartmentsRows; + } else { + height = (480 / 6) * maxCompartmentsRows; + } + } else { + if (minCompartmentsRows < 4) { + height = (365 / 4) * minCompartmentsRows; + } else { + height = (325 / 4) * minCompartmentsRows; + } + } + return `${height}px`; + }, [compartmentsExpanded, maxCompartmentsRows, minCompartmentsRows]); + + return ( + + + + + + + + {groupFilterIndex != totalCardNumber - 1 && } + + ); +} diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterRows.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterRows.tsx new file mode 100644 index 00000000..98dfd900 --- /dev/null +++ b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterRows.tsx @@ -0,0 +1,125 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React from 'react'; +import {Box, List, ListItem, ListItemText, useTheme} from '@mui/material'; +import {ScrollSyncPane} from 'react-scroll-sync'; +import {useTranslation} from 'react-i18next'; +import {Localization} from 'types/localization'; +import {Dictionary} from 'util/util'; + +interface FilterRowsProps { + /** Array of compartments */ + compartments: string[]; + + /** Dictionary of filtered values */ + filteredValues: Dictionary | null; + + /** Boolean to determine if the rows are flipped */ + isFlipped?: boolean; + + /** Boolean to determine if the compartment is expanded */ + compartmentExpanded?: boolean; + + /** Selected compartment */ + selectedCompartment: string; + + /** Minimum number of compartment rows */ + minCompartmentsRows: number; + + /** Maximum number of compartment rows */ + maxCompartmentsRows: number; + + /** An object containing localization information (translation & number formattation).*/ + localization?: Localization; +} + +/** + * This component renders rows of filter values. + * It also supports localization. + */ +export default function FilterRows({ + compartments, + filteredValues, + isFlipped = true, + compartmentExpanded = true, + selectedCompartment, + minCompartmentsRows, + maxCompartmentsRows, + localization = { + formatNumber: (value: number) => value.toString(), + customLang: 'global', + overrides: {}, + }, +}: FilterRowsProps) { + const {t: defaultT} = useTranslation(); + const {t: customT} = useTranslation(localization.customLang); + const theme = useTheme(); + + // Function to get formatted and translated values + function GetFormattedAndTranslatedValues(filteredValues: number | null): string { + if (filteredValues) + return localization.formatNumber ? localization.formatNumber(filteredValues) : filteredValues.toString(); + else + return localization.overrides && localization.overrides['no-data'] + ? customT(localization.overrides['no-data']) + : defaultT('no-data'); + } + return ( + +
+ +
+ + {compartments.map((comp: string, id: number) => { + const compartmentId = `compartment-${id}`; + return ( + + + + ); + })} + +
+
+
+
+ ); +} diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FiltersContainer.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FiltersContainer.tsx new file mode 100644 index 00000000..76734c99 --- /dev/null +++ b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FiltersContainer.tsx @@ -0,0 +1,139 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {Box, Collapse, useTheme} from '@mui/material'; +import FilterButton from './FilterButton'; +import FilterCard from './FilterCard'; +import React from 'react'; +import {Localization} from 'types/localization'; +import {getScenarioPrimaryColor} from 'util/Theme'; +import {Dictionary} from 'util/util'; + +interface FiltersContainerProps { + /** Array of filtered titles */ + filteredTitles: string[]; + + /** Index of the filter container */ + index: number; + + /** Boolean to determine if the filter container is folded */ + folded: boolean; + + /** Function to set the folded state */ + setFolded: (folded: boolean) => void; + + /** Boolean to determine if the compartments are expanded */ + compartmentsExpanded: boolean; + + /** Selected compartment */ + selectedCompartment: string; + + /** Array of compartments */ + compartments: string[]; + + /** Array of filtered values */ + filteredValues: Array | null>; + + /** Minimum number of compartment rows */ + minCompartmentsRows: number; + + /** Maximum number of compartment rows */ + maxCompartmentsRows: number; + + /** An object containing localization information (translation & number formattation).*/ + localization?: Localization; +} + +/** + * This component renders a container for filter cards. The container can be opened by clicking a button, which triggers a collapsing animation. + * It also supports localization. + */ +export default function FiltersContainer({ + index, + folded, + setFolded, + compartmentsExpanded, + selectedCompartment, + compartments, + filteredValues, + filteredTitles, + maxCompartmentsRows, + minCompartmentsRows, + localization = { + formatNumber: (value: number) => value.toString(), + customLang: 'global', + overrides: {}, + }, +}: FiltersContainerProps) { + const theme = useTheme(); + return ( + 5 + ? `${(390 / 6) * maxCompartmentsRows}px` + : `${(480 / 6) * maxCompartmentsRows}px` + : minCompartmentsRows < 4 + ? `${(365 / 4) * minCompartmentsRows}px` + : `${(325 / 4) * minCompartmentsRows}px`, + boxSizing: 'border-box', + border: 1, + borderColor: getScenarioPrimaryColor(index, theme), + borderRadius: 1, + bgcolor: theme.palette.background.paper, + zIndex: 2, + }} + > + + + 5 + ? `${(390 / 6) * maxCompartmentsRows}px` + : `${(480 / 6) * maxCompartmentsRows}px` + : minCompartmentsRows < 4 + ? `${(365 / 4) * minCompartmentsRows}px` + : `${(325 / 4) * minCompartmentsRows}px`, + }} + > + {filteredValues.map((_, id: number) => ( + + ))} + + + + ); +} diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardRows.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardRows.tsx new file mode 100644 index 00000000..7c14c575 --- /dev/null +++ b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardRows.tsx @@ -0,0 +1,193 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {Box, List, ListItem, ListItemText, useTheme} from '@mui/material'; +import TrendArrow from './TrendArrow'; +import {ScrollSyncPane} from 'react-scroll-sync'; +import {useTranslation} from 'react-i18next'; +import React from 'react'; +import {Localization} from 'types/localization'; +import {Dictionary, hexToRGB} from 'util/util'; + +interface CardRowsProps { + /** Array of compartments */ + compartments: string[]; + + /** Dictionary of compartment values */ + compartmentValues: Dictionary | null; + + /** Dictionary of start values */ + startValues: Dictionary | null; + + /** Boolean to determine if the card is flipped */ + isFlipped?: boolean; + + /** Boolean to determine if the arrow is displayed */ + arrow?: boolean; + + /** Boolean to determine if the compartment is expanded */ + compartmentExpanded?: boolean; + + /** Selected compartment */ + selectedCompartment: string; + + /** Color of the card row */ + color: string; + + /** Minimum number of compartment rows */ + minCompartmentsRows: number; + + /** Maximum number of compartment rows */ + maxCompartmentsRows: number; + + /** Localization object for custom language and overrides */ + localization?: Localization; +} + +/** + * This component renders the rows which containing the compartment values, and change rates relative to the simulation start. + * It also supports localization. + */ +export default function CardRows({ + compartments, + isFlipped = true, + arrow = true, + compartmentValues, + startValues, + compartmentExpanded, + selectedCompartment, + color, + minCompartmentsRows, + maxCompartmentsRows, + localization = { + formatNumber: (value: number) => value.toString(), + customLang: 'global', + overrides: {}, + }, +}: CardRowsProps) { + const {t: defaultT} = useTranslation(); + const {t: customT} = useTranslation(localization.customLang); + const theme = useTheme(); + // Function to get formatted and translated values + function GetFormattedAndTranslatedValues(filteredValues: number | null): string { + if (filteredValues) { + return localization.formatNumber ? localization.formatNumber(filteredValues) : filteredValues.toString(); + } + + if (compartmentValues && Object.keys(compartmentValues).length !== 0) { + return '0'; + } + + const noDataText = localization.overrides?.['no-data'] + ? customT(localization.overrides['no-data']) + : defaultT('no-data'); + + return noDataText; + } + + // Function to get compartment rate + const getCompartmentRate = (compartment: string): string => { + if (!compartmentValues || !(compartment in compartmentValues) || !startValues || !(compartment in startValues)) { + // Return a Figure Dash (‒) where a rate cannot be calculated. + return '\u2012'; + } + + const value = compartmentValues[compartment]; + const startValue = startValues[compartment]; + const result = Math.round(100 * (value / startValue) - 100); + + if (!isFinite(result)) { + // Return a Figure Dash (‒) where a rate cannot be calculated. + return '\u2012'; + } + + let sign: string; + if (result > 0) { + sign = '+'; + } else if (result < 0) { + sign = '-'; + } else { + // Return a Plus Minus sign (±) where a rate cannot be calculated. + sign = '\u00B1'; + } + + return sign + Math.abs(result).toFixed() + '%'; + }; + + return ( + +
+ +
+ + {compartments.map((comp: string, id: number) => { + return ( + + + + {arrow && ( + + )} + + ); + })} + +
+
+
+
+ ); +} diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTitle.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTitle.tsx new file mode 100644 index 00000000..51df65ee --- /dev/null +++ b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTitle.tsx @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 +import Typography from '@mui/material/Typography'; +import React from 'react'; + +interface CardTitleProps { + /** Label for the card title */ + label: string; + + /** Color of the card title */ + color?: string; +} + +/** + * This component renders the title of a card with optional flipping and color customization. + */ +export default function CardTitle({label, color}: CardTitleProps) { + return ( + + {label} + + ); +} diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTooltip.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTooltip.tsx new file mode 100644 index 00000000..45e77c2a --- /dev/null +++ b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTooltip.tsx @@ -0,0 +1,135 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {Box, Tooltip, IconButton} from '@mui/material'; +import {CheckBox, CheckBoxOutlineBlank} from '@mui/icons-material'; +import {useTranslation} from 'react-i18next'; +import React from 'react'; +import {Localization} from 'types/localization'; +import {hexToRGB} from 'util/util'; + +interface CardTooltipProps { + /** A boolean indicating whether the user is hovering over the card. */ + hover: boolean; + + /** The color of the card. */ + color: string; + + /** The title of the card. */ + index: number; + + /** A boolean indicating whether the scenario is active. */ + activeScenario: boolean; + + /** An array of active scenarios. */ + activeScenarios: number[] | null; + + /** The number of the selected scenario. */ + numberSelectedScenario: number | null; + + /** The number of the selected scenario. */ + setSelectedScenario: React.Dispatch>; + + /** A function to set the active scenarios. */ + setActiveScenarios: React.Dispatch>; + + /** An object containing localization information (translation & number formattation).*/ + localization?: Localization; +} + +/** + * This component renders a tooltip which is used to set whether the card is active or not. + */ +export default function CardTooltip({ + index, + hover, + color, + activeScenario, + activeScenarios, + numberSelectedScenario, + setActiveScenarios, + setSelectedScenario, + localization = { + formatNumber: (value: number) => value.toString(), + customLang: 'global', + overrides: {}, + }, +}: CardTooltipProps) { + const {t: defaultT} = useTranslation(); + const {t: customT} = useTranslation(localization.customLang); + + /** + * Manages the scenario based on the given index. + * If the scenario is active and there are no other active scenarios, it clears the active scenarios and selected scenario. + * Otherwise, it adds or removes the index from the active scenarios list and updates the selected scenario accordingly. + * @param index - The index of the scenario to manage. + */ + const manageScenario = (index: number) => { + const isActive = activeScenarios?.includes(index); + if (isActive && activeScenarios?.length === 1) { + setActiveScenarios(null); + setSelectedScenario(null); + } + const newActiveScenarios = isActive + ? activeScenarios!.filter((id) => id !== index) + : [...(activeScenarios || []), index]; + + newActiveScenarios.sort(); + setActiveScenarios(newActiveScenarios); + + setSelectedScenario( + newActiveScenarios.length === 1 + ? newActiveScenarios[0] + : numberSelectedScenario === index + ? newActiveScenarios[newActiveScenarios.length - 1] + : numberSelectedScenario + ); + }; + + return hover ? ( + + + { + event.stopPropagation(); // Used in order to avoid triggering the click event on the card and only allow triggering the event that handles adding the card to the active scenarios. + manageScenario(index); + }} + aria-label={ + activeScenario + ? localization.overrides && localization.overrides['scenario.deactivate'] + ? customT(localization.overrides['scenario.deactivate']) + : defaultT('scenario.deactivate') + : localization.overrides && localization.overrides['scenario.activate'] + ? customT(localization.overrides['scenario.activate']) + : defaultT('scenario.activate') + } + > + {activeScenario ? : } + + + + ) : null; +} diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/MainCard.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/MainCard.tsx new file mode 100644 index 00000000..e52ae014 --- /dev/null +++ b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/MainCard.tsx @@ -0,0 +1,196 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React from 'react'; +import {Box, useTheme} from '@mui/material'; +import CardTitle from './CardTitle'; +import CardTooltip from './CardTooltip'; +import CardRows from './CardRows'; +import {Localization} from 'types/localization'; +import {Dictionary, hexToRGB} from 'util/util'; + +interface MainCardProps { + /** A unique identifier for the card. */ + index: number; + + /** The title of the card. */ + label: string; + + /** The color of the card. */ + color: string; + + /** A dictionary of compartment values associated with the card. */ + compartmentValues: Dictionary | null; + + /** A dictionary of start values used for calculating the rate. This determines whether the values have increased, decreased, or remained the same. */ + startValues: Dictionary | null; + + /** An array of compartment names. */ + compartments: string[]; + + /** A boolean indicating whether the compartments are expanded. */ + compartmentsExpanded: boolean; + + /** The compartment that is currently selected. */ + selectedCompartment: string; + + /** A boolean indicating whether the user is hovering over the card. */ + hover: boolean; + + /** A function to set the hover state of the card. */ + setHover: React.Dispatch>; + + /** A boolean indicating whether the scenario is selected. */ + selectedScenario: boolean; + + /** A function to set the selected scenario. */ + setSelectedScenario: React.Dispatch>; + + /** The number of the selected scenario. */ + numberSelectedScenario: number | null; + + /** A boolean indicating whether the scenario is active. */ + activeScenario: boolean; + + /** A function to set the active scenarios. */ + setActiveScenarios: React.Dispatch>; + + /** An array of active scenarios. */ + activeScenarios: number[] | null; + + /** The minimum number of compartment rows. */ + minCompartmentsRows: number; + + /** The maximum number of compartment rows. */ + maxCompartmentsRows: number; + + /** An object containing localization information (translation & number formattation).*/ + localization?: Localization; + + /** Boolean to determine if the arrow is displayed */ + arrow?: boolean; +} + +/** + * This component renders a card for either the case data or the scenario cards. Each card contains a title, + * a list of compartment values, and change rates relative to the simulation start. Additionally, a tooltip is used to set whether the card is active or not. + * Furthermore, the card is clickable, and if clicked, it will become the selected scenario. + */ +function MainCard({ + index, + label, + hover, + compartmentValues, + startValues, + setHover, + compartments, + compartmentsExpanded, + selectedCompartment, + color, + selectedScenario, + activeScenario, + numberSelectedScenario, + minCompartmentsRows, + setSelectedScenario, + setActiveScenarios, + activeScenarios, + maxCompartmentsRows, + localization = { + formatNumber: (value: number) => value.toString(), + customLang: 'global', + overrides: {}, + }, + arrow = true, +}: MainCardProps) { + const theme = useTheme(); + return ( + setHover(true)} + onMouseLeave={() => setHover(false)} + onClick={() => { + if (activeScenario) { + setSelectedScenario(index); + } + }} + > + 5 + ? `${(340 / 6) * maxCompartmentsRows}px` + : `${(480 / 6) * maxCompartmentsRows}px` + : 'auto', + paddingBottom: '9px', + boxSizing: 'border-box', + width: '200px', + bgcolor: theme.palette.background.paper, + zIndex: 0, + display: 'flex', + flexDirection: 'column', + border: 2, + borderRadius: 1, + borderColor: color, + transition: 'transform 0.5s', + transformStyle: 'preserve-3d', + transform: activeScenario ? 'none' : 'rotateY(180deg)', + }} + > + + + + + + + + ); +} + +export default MainCard; diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/TrendArrow.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/TrendArrow.tsx new file mode 100644 index 00000000..c87a8d6e --- /dev/null +++ b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/TrendArrow.tsx @@ -0,0 +1,35 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'; +import ArrowDropUpIcon from '@mui/icons-material/ArrowDropUp'; +import ArrowRightIcon from '@mui/icons-material/ArrowRight'; +import React from 'react'; + +interface TrendArrowProps { + /** The value. */ + value: number; + + /** The rate of change relative to scenario start. */ + rate: string; +} + +/** + * Renders an arrow depending on value and rate. When the rate is negative a green downwards arrow is rendered, when the + * rate is between zero and three percent a grey sidewards arrow is rendered and when the rate is greater than three + * percent a red upwards arrow is being rendered. + */ +export default function TrendArrow(props: TrendArrowProps) { + // Shows downwards green arrows if getCompartmentRate < 0%. + if (parseFloat(props.rate) < 0) { + return ; + } + // Shows upwards red arrows if getCompartmentRate > 3%. If there is no RKI value for that compartment i.e., getCompartmentRate is Null, then it will check the getCompartmentValue (scenario values only) which will always be positive. + else if (parseFloat(props.rate) > 3 || (props.value > 0 && props.rate === '\u2012')) { + return ; + } + // Shows grey arrows (stagnation) if getCompartmentRate is between 0 and 3 % or if there is no RKI value. + else { + return ; + } +} diff --git a/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRow.tsx b/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRow.tsx new file mode 100644 index 00000000..39217fad --- /dev/null +++ b/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRow.tsx @@ -0,0 +1,138 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {ListItemButton, ListItemText, ListItemIcon, ClickAwayListener, Tooltip, useTheme} from '@mui/material'; +import {InfoOutlined} from '@mui/icons-material'; +import {Dispatch, SetStateAction, useState} from 'react'; +import {useTranslation} from 'react-i18next'; +import React from 'react'; +import {Localization} from 'types/localization'; + +interface CompartmentsRowProps { + /** Unique identifier for the row */ + id: number; + + /** Boolean to determine if the row is selected */ + selected: boolean; + + /** Name of the compartment */ + compartment: string; + + /** Value of the compartment */ + value: string; + + /** Boolean to determine if the compartments are expanded */ + compartmentsExpanded: boolean; + + /** Function to set the selected compartment */ + setSelectedCompartment: Dispatch>; + + /** Minimum number of compartment rows */ + minCompartmentsRows: number; + + /** Localization object for custom language and overrides */ + localization?: Localization; +} + +/** + * This component renders a single row from the compartment List offering also localization support. + */ +export default function CompartmentsRow({ + id, + selected, + compartment, + value, + compartmentsExpanded, + setSelectedCompartment, + minCompartmentsRows, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'backend', overrides: {}}, +}: CompartmentsRowProps) { + const {t: defaultT} = useTranslation(); + const {t: customT} = useTranslation(localization.customLang); + const theme = useTheme(); + const [tooltipOpen, setTooltipOpen] = useState(false); + const openTooltip = (event: React.MouseEvent) => { + event.stopPropagation(); + setTooltipOpen(true); + }; + const closeTooltip = () => setTooltipOpen(false); + return ( + { + setSelectedCompartment(compartment); + }} + > + + + + + + + + + + + ); +} diff --git a/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRows.tsx b/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRows.tsx new file mode 100644 index 00000000..cdf584d4 --- /dev/null +++ b/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRows.tsx @@ -0,0 +1,107 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {List} from '@mui/material'; +import {ScrollSyncPane} from 'react-scroll-sync'; +import {Dispatch, SetStateAction} from 'react'; +import CompartmentsRow from './CompartmentsRow'; +import React from 'react'; +import {Localization} from 'types/localization'; +import {Dictionary} from 'util/util'; +import {useTranslation} from 'react-i18next'; + +interface CompartmentsRowsProps { + /** Boolean to determine if the compartments are expanded */ + compartmentsExpanded: boolean; + + /** Array of compartment names */ + compartments: string[]; + + /** Currently selected compartment */ + selectedCompartment: string; + + /** Function to set the selected compartment */ + setSelectedCompartment: Dispatch>; + + /** Minimum number of compartment rows */ + minCompartmentsRows: number; + + /** Maximum number of compartment rows */ + maxCompartmentsRows: number; + + /** Values for each compartment */ + compartmentValues: Dictionary | null; + + /** An object containing localization information (translation & number formattation). */ + localization?: Localization; +} + +/** + * This component renders a list of compartments with synchronized scrolling, + * expand/collapse functionality, and localization support. + */ +export default function CompartmentsRows({ + compartmentsExpanded, + compartments, + selectedCompartment, + minCompartmentsRows, + maxCompartmentsRows, + setSelectedCompartment, + compartmentValues, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, +}: CompartmentsRowsProps) { + const {t: defaultT} = useTranslation(); + const {t: customT} = useTranslation(localization.customLang); + + function GetFormattedAndTranslatedValues(filteredValues: number | null): string { + if ((compartmentValues && filteredValues) || (compartmentValues && !filteredValues)) + return filteredValues + ? localization.formatNumber + ? localization.formatNumber(filteredValues) + : filteredValues.toString() + : '0'; + const noDataText = localization.overrides?.['no-data'] + ? customT(localization.overrides['no-data']) + : defaultT('no-data'); + return noDataText; + } + return ( +
+ +
+ + {compartments.map((comp: string, id: number) => { + const selected = comp === selectedCompartment; + return ( + + ); + })} + +
+
+
+ ); +} diff --git a/frontend/src/components/ScenarioComponents/ExpandedButtonComponents/ExpandedButton.tsx b/frontend/src/components/ScenarioComponents/ExpandedButtonComponents/ExpandedButton.tsx new file mode 100644 index 00000000..67085577 --- /dev/null +++ b/frontend/src/components/ScenarioComponents/ExpandedButtonComponents/ExpandedButton.tsx @@ -0,0 +1,56 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import Button from '@mui/material/Button'; +import {useTranslation} from 'react-i18next'; +import React from 'react'; +import {Localization} from 'types/localization'; + +interface GeneralButtonProps { + /** Texts for the button in both states: clicked and unclicked */ + buttonTexts: {clicked: string; unclicked: string}; + + /** boolean to determine if the button is disabled */ + isDisabled: boolean; + + /** Function to handle the button click event */ + handleClick: () => void; + + /** Boolean to determine if the button is in expanded state */ + isExpanded: boolean; + + /** An object containing localization information (translation & number formattation).*/ + localization?: Localization; +} + +/** + * This component renders a general button with clicked/unclicked texts, + * disabled state, click handler, and localization support. + */ +export default function GeneralButton({ + buttonTexts, + isDisabled, + handleClick, + isExpanded, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, +}: GeneralButtonProps) { + const {t: defaultT} = useTranslation(); + const {t: customT} = useTranslation(localization.customLang); + return ( + + ); +} diff --git a/frontend/src/components/ScenarioComponents/FilterComponents/FilterDialogContainer.tsx b/frontend/src/components/ScenarioComponents/FilterComponents/FilterDialogContainer.tsx new file mode 100644 index 00000000..73f40a2d --- /dev/null +++ b/frontend/src/components/ScenarioComponents/FilterComponents/FilterDialogContainer.tsx @@ -0,0 +1,170 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {Box, Button, Dialog, useTheme} from '@mui/material'; +import ConfirmDialog from '../../shared/ConfirmDialog'; +import {useState} from 'react'; +import ManageGroupDialog from './ManageGroupDialog'; +import {useTranslation} from 'react-i18next'; +import React from 'react'; +import {GroupCategory, GroupSubcategory} from 'store/services/groupApi'; +import {GroupFilter} from 'types/group'; +import {Dictionary} from 'util/util'; +import {Localization} from 'types/localization'; + +export interface FilterDialogContainerProps { + /** A dictionary of group filters.*/ + groupFilters: Dictionary; + + /** An array of group category.*/ + groupCategories: GroupCategory[]; + + /** An array of group subcategory.*/ + groupSubCategories: GroupSubcategory[]; + + /** A function that allows setting the groupFilter state so that if the user adds a filter, the new filter will be visible */ + setGroupFilters: React.Dispatch>>; + + /** An object containing localization information (translation & number formattation).*/ + localization?: Localization; +} + +/** + * This component renders a the container for the filters dialog. + */ +export default function FilterDialogContainer({ + groupFilters, + setGroupFilters, + groupCategories, + groupSubCategories, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, +}: FilterDialogContainerProps) { + const [open, setOpen] = useState(false); + const [closeDialogOpen, setCloseDialogOpen] = useState(false); + const [groupEditorUnsavedChanges, setGroupEditorUnsavedChanges] = useState(false); + const {t: defaultT} = useTranslation(); + const {t: customT} = useTranslation(localization.customLang); + const theme = useTheme(); + return ( + <> + + + + + { + if (groupEditorUnsavedChanges) { + setCloseDialogOpen(true); + } else { + setOpen(false); + } + }} + > + { + if (groupEditorUnsavedChanges) { + setCloseDialogOpen(true); + } else { + setOpen(false); + } + }} + unsavedChangesCallback={(unsavedChanges) => setGroupEditorUnsavedChanges(unsavedChanges)} + localization={localization} + /> + { + if (answer) { + setOpen(false); + } + setCloseDialogOpen(false); + }} + /> + + + ); +} diff --git a/frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterCard.tsx b/frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterCard.tsx new file mode 100644 index 00000000..f20e0688 --- /dev/null +++ b/frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterCard.tsx @@ -0,0 +1,165 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {Visibility, VisibilityOffOutlined, DeleteForever} from '@mui/icons-material'; +import { + Card, + CardActionArea, + CardContent, + Typography, + Divider, + CardActions, + Checkbox, + IconButton, + useTheme, +} from '@mui/material'; +import {useState} from 'react'; +import ConfirmDialog from '../../shared/ConfirmDialog'; +import {useTranslation} from 'react-i18next'; +import React from 'react'; +import {GroupFilter} from 'types/group'; +import {Dictionary} from 'util/util'; +import {Localization} from 'types/localization'; + +interface GroupFilterCardProps { + /** The GroupFilter item to be displayed. */ + item: GroupFilter; + + /** A dictionary of group filters.*/ + groupFilters: Dictionary; + + /** A function that allows setting the groupFilter state so that if the user adds a filter, the new filter will be visible */ + setGroupFilters: React.Dispatch>>; + + /** Whether the filter is selected or not. If it is selected, the detail view is displaying this filter's config. */ + selected: boolean; + + /** + * Callback function that is called when the filter is selected or unselected. + * @param groupFilter - Either this filter, if it was selected or null, if it was unselected. + */ + selectFilterCallback: (groupFilter: GroupFilter | null) => void; + + /** An object containing localization information (translation & number formattation).*/ + localization?: Localization; +} + +/** + * GroupFilterCard component displays a card that represents a single filter for the group filter list. The card shows + * the filter name, a toggle switch to turn on or off the filter, and a delete button to remove the filter. + */ +export default function GroupFilterCard({ + item, + groupFilters, + setGroupFilters, + selected, + selectFilterCallback, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, +}: GroupFilterCardProps) { + const [confirmDialogOpen, setConfirmDialogOpen] = useState(false); + const {t: defaultT} = useTranslation(); + const {t: customT} = useTranslation(localization.customLang); + const theme = useTheme(); + + //Function used to change the visibility of the filter + const ChangeVisibility = (id: string) => { + // Find the filter with the specific id + const filterToChange = groupFilters[id]; + + // Check if the filter exists + if (filterToChange) { + // Create a new copy of groupFilters with the updated filter + const newGroupFilters = { + ...groupFilters, + [id]: { + ...filterToChange, + isVisible: !filterToChange.isVisible, + }, + }; + + // Update the state with the new copy of groupFilters + setGroupFilters(newGroupFilters); + } + }; + + // Function used to delete filters + const DeleteFilter = (id: string) => { + // Create a new copy of groupFilters without the filter with the specific id + const newGroupFilters = {...groupFilters}; + delete newGroupFilters[id]; + + // Update the state with the new copy of groupFilters + setGroupFilters(newGroupFilters); + }; + + return ( + + { + selectFilterCallback(selected ? null : item); + }} + > + + + {item.name} + + + + + + } + icon={} + checked={item.isVisible} + onClick={() => { + ChangeVisibility(item.id); + }} + /> + { + if (answer) { + DeleteFilter(item.id); + } + setConfirmDialogOpen(false); + }} + /> + setConfirmDialogOpen(true)}> + + + + + ); +} diff --git a/frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterEditor.tsx b/frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterEditor.tsx new file mode 100644 index 00000000..ad46f274 --- /dev/null +++ b/frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterEditor.tsx @@ -0,0 +1,222 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {Box, TextField, Typography, FormGroup, FormControlLabel, Checkbox, Button, useTheme} from '@mui/material'; +import {useState, useEffect, useCallback} from 'react'; +import {useTranslation} from 'react-i18next'; +import React from 'react'; +import {GroupCategory, GroupSubcategory} from 'store/services/groupApi'; +import {GroupFilter} from 'types/group'; +import {Dictionary} from 'util/util'; +import {Localization} from 'types/localization'; + +interface GroupFilterEditorProps { + /** The GroupFilter item to be edited. */ + groupFilter: GroupFilter; + + /** A dictionary of group filters.*/ + groupFilters: Dictionary; + + /** An array of group category.*/ + groupCategories: GroupCategory[]; + + /** An array of group subcategory.*/ + groupSubCategories: GroupSubcategory[]; + + /** A function that allows setting the groupFilter state so that if the user adds a filter, the new filter will be visible */ + setGroupFilters: React.Dispatch>>; + + /** + * Callback function that is called, when a new filter is created, so it will be selected immediately or when the user + * wants to close the editor. + * @param groupFilter - Either the current filter or null when the user wants to close the current filter's editor. + */ + selectGroupFilterCallback: (groupFilter: GroupFilter | null) => void; + + /** + * A callback that notifies the parent, if there are currently unsaved changes for this group filter. + * @param unsavedChanges - If the group filter has been modified without saving. + */ + unsavedChangesCallback: (unsavedChanges: boolean) => void; + + /** An object containing localization information (translation & number formattation).*/ + localization?: Localization; +} + +/** + * This is the detail view of the GroupFilter dialog. It allows to edit and create groups. It has a text field for the + * name at the top and columns of checkboxes for groups in the center. It requires that at least one checkbox of each + * group is selected before the apply button becomes available. It is also possible to discard changes by clicking the + * abort button before applying the changes. + */ +export default function GroupFilterEditor({ + groupFilter, + groupFilters, + groupCategories, + groupSubCategories, + setGroupFilters, + selectGroupFilterCallback, + unsavedChangesCallback, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, +}: GroupFilterEditorProps) { + const {t: defaultT} = useTranslation(); + const {t: customT} = useTranslation(localization.customLang); + const theme = useTheme(); + const [name, setName] = useState(groupFilter.name); + const [groups, setGroups] = useState(groupFilter.groups); + + // Every group must have at least one element selected to be valid. + const [valid, setValid] = useState(name.length > 0 && Object.values(groups).every((group) => group.length > 0)); + const [unsavedChanges, setUnsavedChanges] = useState(false); + + // Checks if the group filer is in a valid state. + useEffect(() => { + setValid(name.length > 0 && Object.values(groups).every((group) => group.length > 0)); + }, [name, groups]); + + // Updates the parent about the current save state of the group filter. + useEffect(() => { + unsavedChangesCallback(unsavedChanges); + }, [unsavedChanges, unsavedChangesCallback]); + + const toggleGroup = useCallback( + (subGroup: GroupSubcategory) => { + let category = [...groups[subGroup.category]]; + + if (category.includes(subGroup.key)) { + category = category.filter((key) => key !== subGroup.key); + } else { + category.push(subGroup.key); + } + + setGroups({ + ...groups, + [subGroup.category]: category, + }); + setUnsavedChanges(true); + }, + [groups, setGroups] + ); + + return ( + + e.target.select()} + onChange={(e) => { + setUnsavedChanges(true); + setName(e.target.value); + }} + /> + + {groupCategories.map((group) => ( + + 0 ? theme.palette.text.primary : theme.palette.error.main} + variant='h2' + > + {localization.overrides && localization.overrides[`group-filters.categories.${group.key}`] + ? customT(localization.overrides[`group-filters.categories.${group.key}`]) + : defaultT(`group-filters.categories.${group.key}`)} + + + {groupSubCategories + ?.filter((subCategory) => subCategory.category === group.key) + .filter((subGroup) => subGroup.key !== 'total') // TODO: We filter out the total group for now. + .map((subGroup) => ( + toggleGroup(subGroup)} + /> + } + /> + ))} + + + ))} + + + + + + + ); +} diff --git a/frontend/src/components/ScenarioComponents/FilterComponents/ManageGroupDialog.tsx b/frontend/src/components/ScenarioComponents/FilterComponents/ManageGroupDialog.tsx new file mode 100644 index 00000000..bbc658ed --- /dev/null +++ b/frontend/src/components/ScenarioComponents/FilterComponents/ManageGroupDialog.tsx @@ -0,0 +1,279 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {Close, GroupAdd} from '@mui/icons-material'; +import {Box, Typography, IconButton, Divider, Card, CardActionArea, CardContent, Button, useTheme} from '@mui/material'; +import {useState, useEffect} from 'react'; +import ConfirmDialog from '../../shared/ConfirmDialog'; +import GroupFilterCard from './GroupFilterCard'; +import GroupFilterEditor from './GroupFilterEditor'; +import {useTranslation} from 'react-i18next'; +import React from 'react'; +import {GroupCategory, GroupSubcategory} from 'store/services/groupApi'; +import {GroupFilter} from 'types/group'; +import {Dictionary} from 'util/util'; +import {Localization} from 'types/localization'; + +export interface ManageGroupDialogProps { + /** A dictionary of group filters.*/ + groupFilters: Dictionary; + + /** An array of group category.*/ + groupCategories: GroupCategory[]; + + /** An array of group subcategory.*/ + groupSubCategories: GroupSubcategory[]; + + /** Callback function, which is called, when the close button is called.*/ + onCloseRequest: () => void; + + /** + * A callback that notifies the parent, if there are currently unsaved changes for this group filter. + * @param unsavedChanges - If the group filter has been modified without saving. + */ + unsavedChangesCallback: (unsavedChanges: boolean) => void; + + /** A function that allows setting the groupFilter state so that if the user adds a filter, the new filter will be visible.*/ + setGroupFilters: React.Dispatch>>; + + /** An object containing localization information (translation & number formattation).*/ + localization?: Localization; +} + +/** + * This dialog provides an editor to create, edit, toggle and delete group filters. It uses a classic master detail view + * with the available filters on the left and the filter configuration on the right. + */ +export default function ManageGroupDialog({ + groupFilters, + groupCategories, + groupSubCategories, + onCloseRequest, + unsavedChangesCallback, + setGroupFilters, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, +}: ManageGroupDialogProps) { + const {t: defaultT} = useTranslation(); + const {t: customT} = useTranslation(localization.customLang); + // The currently selected filter. + const [selectedGroupFilter, setSelectedGroupFilter] = useState(null); + + // A filter the user might open. It will first be checked, if unsaved changes are present. + const [nextSelectedGroupFilter, setNextSelectedGroupFilter] = useState(null); + + const [confirmDialogOpen, setConfirmDialogOpen] = useState(false); + const [unsavedChanges, setUnsavedChanges] = useState(false); + + // This effect ensures that the user doesn't discard unsaved changes without confirming it first. + useEffect(() => { + if (nextSelectedGroupFilter && nextSelectedGroupFilter.id !== selectedGroupFilter?.id) { + // A new group filter has been selected. + + if (selectedGroupFilter && unsavedChanges) { + // There are unsaved changes. Ask for confirmation first! + setConfirmDialogOpen(true); + } else { + // Everything is saved. Change the selected filter. + setSelectedGroupFilter(nextSelectedGroupFilter); + } + } else if (!nextSelectedGroupFilter && !unsavedChanges) { + // This case is handled, when the user presses the 'abort' button. + setSelectedGroupFilter(null); + } + unsavedChangesCallback(unsavedChanges); + }, [unsavedChanges, nextSelectedGroupFilter, selectedGroupFilter, unsavedChangesCallback, onCloseRequest]); + + const theme = useTheme(); + return ( + + +
+ + {localization.overrides && localization.overrides['group-filters.title'] + ? customT(localization.overrides['group-filters.title']) + : defaultT('group-filters.title')} + + + + + + + + + {Object.values(groupFilters || {})?.map((item) => ( + setNextSelectedGroupFilter(groupFilter)} + localization={localization} + /> + ))} + + { + const groups: Dictionary> = {}; + groupCategories.forEach((group) => (groups[group.key] = [])); + setNextSelectedGroupFilter({ + id: crypto.randomUUID(), + name: '', + isVisible: false, + groups: groups, + }); + }} + > + + + {localization.overrides && localization.overrides['group-filters.add-group'] + ? customT(localization.overrides['group-filters.add-group']) + : defaultT('group-filters.add-group')} + + + + + + + + {selectedGroupFilter ? ( + setNextSelectedGroupFilter(groupFilter)} + unsavedChangesCallback={(edited) => setUnsavedChanges(edited)} + groupCategories={groupCategories} + groupSubCategories={groupSubCategories} + localization={localization} + /> + ) : ( + + + {localization.overrides && localization.overrides['group-filters.nothing-selected'] + ? customT(localization.overrides['group-filters.nothing-selected']) + : defaultT('group-filters.nothing-selected')} + + + + )} + + { + if (answer) { + setSelectedGroupFilter(nextSelectedGroupFilter); + } else { + setNextSelectedGroupFilter(null); + } + setConfirmDialogOpen(false); + }} + /> + + ); +} diff --git a/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx b/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx new file mode 100644 index 00000000..f836027a --- /dev/null +++ b/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx @@ -0,0 +1,75 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import Box from '@mui/material/Box'; +import {Dispatch, SetStateAction} from 'react'; +import dayjs, {Dayjs} from 'dayjs'; +import {DatePicker} from '@mui/x-date-pickers'; +import {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider'; +import {AdapterDayjs} from '@mui/x-date-pickers/AdapterDayjs'; +import React from 'react'; +import {Localization} from 'types/localization'; +import {useTranslation} from 'react-i18next'; +import {dateToISOString} from 'util/util'; + +interface DatePickerProps { + /** Start day, the one displayed with a dashed line in the line chart */ + startDay: string | null; + + /** Function used to set the new start date */ + setStartDay: Dispatch>; + + /** Minimum date pickable for which some data are provided */ + minDate: string | null; + + /** Maximum date pickable for which some data are provided */ + maxDate: string | null; + + /** An object containing localization information (translation & number formattation).*/ + localization?: Localization; +} + +/** + * This component renders the MUI date picker + */ +export default function ReferenceDatePicker({ + startDay, + setStartDay, + minDate, + maxDate, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, +}: DatePickerProps) { + // Function used to update the starting date + const {t: defaultT} = useTranslation(); + const {t: customT} = useTranslation(localization.customLang); + const updateDate = (newDate: Dayjs | null): void => { + if (newDate) setStartDay(dateToISOString(newDate.toDate())); + }; + return ( + + + + label={ + localization.overrides && localization.overrides['scenario.reference-day'] + ? customT(localization.overrides['scenario.reference-day']) + : defaultT('scenario.reference-day') + } + value={dayjs(startDay)} + minDate={dayjs(minDate)} + maxDate={dayjs(maxDate)} + onChange={updateDate} + slotProps={{textField: {size: 'small'}}} + /> + + + ); +} diff --git a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx new file mode 100644 index 00000000..581da5f5 --- /dev/null +++ b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx @@ -0,0 +1,450 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {Box, darken, useTheme} from '@mui/material'; +import {useContext, useEffect, useMemo, useState} from 'react'; +import {NumberFormatter} from 'util/hooks'; +import {useTranslation} from 'react-i18next'; +import { + selectCompartment, + selectScenario, + setActiveScenario, + setGroupFilters, + setMinMaxDates, + setStartDate, + toggleCompartmentExpansion, +} from 'store/DataSelectionSlice'; +import {Dictionary, dateToISOString} from 'util/util'; +import {DataContext} from 'DataContext'; +import {ScrollSync} from 'react-scroll-sync'; +import {Scenario, setCompartments, setScenarios} from 'store/ScenarioSlice'; +import {useBoundingclientrectRef} from 'rooks'; +import {setReferenceDayTop} from 'store/LayoutSlice'; +import React from 'react'; +import CardContainer from './CardsComponents/CardContainer'; +import CompartmentsRows from './CompartmentsComponents/CompartmentsRows'; +import FilterDialogContainer from './FilterComponents/FilterDialogContainer'; +import GeneralButton from './ExpandedButtonComponents/ExpandedButton'; +import ReferenceDatePicker from './ReferenceDatePickerComponents.tsx/ReferenceDatePicker'; +import {GroupFilter, GroupResponse} from 'types/group'; +import {SimulationModel, SimulationDataByNode, Simulations} from 'types/scenario'; +import {CaseDataByNode} from 'types/caseData'; +import {useAppDispatch, useAppSelector} from 'store/hooks'; +import {GroupCategories, GroupSubcategories} from 'store/services/groupApi'; +import {CardValue, FilterValue} from 'types/card'; + +interface ScenarioContainerProps { + /** The minimum number of compartment rows.*/ + minCompartmentsRows?: number; + + /** The maximum number of compartment rows.*/ + maxCompartmentsRows?: number; +} + +/** + * Renders the ScenarioContainer component. + */ +export default function ScenarioContainer({minCompartmentsRows = 4, maxCompartmentsRows = 6}: ScenarioContainerProps) { + const {t} = useTranslation('backend'); + const dispatch = useAppDispatch(); + const {i18n} = useTranslation(); + const {formatNumber} = NumberFormatter(i18n.language, 1, 0); + const theme = useTheme(); + + const { + simulationModelData, + caseScenarioData, + startValues, + scenarioListData, + caseScenarioSimulationData, + groupCategories, + groupSubCategories, + scenarioSimulationDataForCardFiltersValues, + scenarioSimulationDataForCard, + getId, + }: { + simulationModelData: SimulationModel | undefined; + caseScenarioData: SimulationDataByNode | undefined; + startValues: Dictionary | null; + scenarioSimulationDataForCardFiltersValues: Dictionary[] | undefined; + scenarioListData: Simulations | undefined; + caseScenarioSimulationData: CaseDataByNode | undefined; + groupCategories: GroupCategories | undefined; + groupSubCategories: GroupSubcategories | undefined; + scenarioSimulationDataForCard: (SimulationDataByNode | undefined)[] | undefined; + getId: number[] | undefined; + } = useContext(DataContext) || { + simulationModelData: undefined, + caseScenarioData: undefined, + startValues: null, + scenarioListData: [], + scenarioSimulationDataForCardFiltersValues: undefined, + caseScenarioSimulationData: undefined, + groupCategories: undefined, + groupSubCategories: undefined, + scenarioSimulationDataForCard: undefined, + getId: undefined, + }; + + const storeGroupFilters = useAppSelector((state) => state.dataSelection.groupFilters); + const storeCompartmentsExpanded = useAppSelector((state) => state.dataSelection.compartmentsExpanded); + const storeActiveScenarios = useAppSelector((state) => state.dataSelection.activeScenarios); + const storeSelectedScenario = useAppSelector((state) => state.dataSelection.scenario); + const scenariosState = useAppSelector((state) => state.scenarioList.scenarios); + const compartments = useAppSelector((state) => state.scenarioList.compartments); + const storeSelectedCompartment = useAppSelector((state) => state.dataSelection.compartment); + const storeStartDay = useAppSelector((state) => state.dataSelection.simulationStart); + + const [cardValues, setCardValues] = useState | undefined>(); + const [filterValues, setFilterValues] = useState | undefined>(); + const [groupFilters, setgroupFilters] = useState>(storeGroupFilters); + const [compartmentsExpanded, setCompartmentsExpanded] = useState(storeCompartmentsExpanded ?? false); + const [activeScenarios, setActiveScenarios] = useState(storeActiveScenarios); + const [selectedScenario, setSelectedScenario] = useState(storeSelectedScenario); + const [selectedCompartment, setSelectedCompartment] = useState(storeSelectedCompartment ?? 'MildInfections'); + const [startDay, setStartDay] = useState(storeStartDay ?? '2024-07-08'); + const [resizeRef, resizeBoundingRect] = useBoundingclientrectRef(); + + const scenarios: Scenario[] = useMemo(() => { + const aux: Scenario[] = [{id: 0, label: t('scenario-names.caseData')}]; + + for (const scenarioKey in scenariosState) { + const {id, label}: Scenario = scenariosState[scenarioKey]; + aux.push({id, label: t(`scenario-names.${label}`)}); + } + + return aux; + }, [scenariosState, t]); + + const compartmentsMemo = useMemo(() => { + return compartments; + }, [compartments]); + + const localization = useMemo(() => { + return { + formatNumber: formatNumber, + customLang: 'backend', + overrides: { + ['compartments.Infected']: 'infection-states.Infected', + ['compartments.MildInfections']: 'infection-states.MildInfections', + ['compartments.Hospitalized']: 'infection-states.Hospitalized', + ['compartments.ICU']: 'infection-states.ICU', + ['compartments.Dead']: 'infection-states.Dead', + ['compartments.DeadV1']: 'infection-states.DeadV1', + ['compartments.DeadV2']: 'infection-states.DeadV2', + ['compartments.Exposed']: 'infection-states.Exposed', + ['compartments.Recovered']: 'infection-states.Recovered', + ['compartments.Carrier']: 'infection-states.Carrier', + ['compartments.Susceptible']: 'infection-states.Susceptible', + ['compartments.InfectedT']: 'infection-states.InfectedT', + ['compartments.InfectedTV1']: 'infection-states.InfectedTV1', + ['compartments.InfectedTV2']: 'infection-states.InfectedTV2', + ['compartments.InfectedV1']: 'infection-states.InfectedV1', + ['compartments.InfectedV2']: 'infection-states.InfectedV2', + ['compartments.HospitalizedV1']: 'infection-states.HospitalizedV1', + ['compartments.HospitalizedV2']: 'infection-states.HospitalizedV2', + ['compartments.ICUV1']: 'infection-states.ICUV1', + ['compartments.ICUV2']: 'infection-states.ICUV2', + ['compartments.ExposedV1']: 'infection-states.ExposedV1', + ['compartments.ExposedV2']: 'infection-states.ExposedV2', + ['compartments.CarrierT']: 'infection-states.CarrierT', + ['compartments.CarrierTV1']: 'infection-states.CarrierTV1', + ['compartments.CarrierTV2']: 'infection-states.CarrierTV2', + ['compartments.CarrierV1']: 'infection-states.CarrierV1', + ['compartments.CarrierV2']: 'infection-states.CarrierV2', + ['compartments.SusceptibleV1']: 'infection-states.SusceptibleV1', + ['compartments.SusceptibleV2']: 'infection-states.SusceptibleV2', + ['tooltip']: 'infection-states.tooltip', + ['scenario-names.caseData']: 'scenario-names.caseData', + ['scenario-names.baseline']: 'scenario-names.baseline', + ['scenario-names.closed_schools']: 'scenario-names.closed_schools', + ['scenario-names.remote_work']: 'scenario-names.remote_work', + ['scenario-names.10p_reduced_contacts']: 'scenario-names.10p_reduced_contacts', + ['scenario-names.Summer 2021 Simulation 1']: 'scenario-names.Summer 2021 Simulation 1', + ['scenario-names.Summer 2021 Simulation 2']: 'scenario-names.Summer 2021 Simulation 2', + ['group-filters.categories.age']: 'group-filters.categories.age', + ['group-filters.categories.gender']: 'group-filters.categories.gender', + ['group-filters.groups.age_0']: 'group-filters.groups.age_0', + ['group-filters.groups.age_1']: 'group-filters.groups.age_1', + ['group-filters.groups.age_2']: 'group-filters.groups.age_2', + ['group-filters.groups.age_3']: 'group-filters.groups.age_3', + ['group-filters.groups.age_4']: 'group-filters.groups.age_4', + ['group-filters.groups.age_5']: 'group-filters.groups.age_5', + ['group-filters.groups.total']: 'group-filters.groups.total', + ['group-filters.groups.female']: 'group-filters.groups.female', + ['group-filters.groups.male']: 'group-filters.groups.male', + ['group-filters.groups.nonbinary']: 'group-filters.groups.nonbinary', + }, + }; + }, [formatNumber]); + + // This effect updates the group filters in the state whenever they change. + useEffect(() => { + dispatch(setGroupFilters(groupFilters)); + }, [groupFilters, dispatch]); + + // This effect updates the compartments in the state whenever the simulation model data changes. + useEffect(() => { + if (simulationModelData) { + const {compartments} = simulationModelData; + dispatch(setCompartments(compartments)); + } + }, [simulationModelData, dispatch]); + + // This effect updates the selected scenario in the state whenever it changes. + useEffect(() => { + dispatch(selectScenario(selectedScenario == undefined ? null : selectedScenario)); + }, [selectedScenario, dispatch]); + + // This effect updates the active scenario in the state whenever the active scenarios change. + useEffect(() => { + if (activeScenarios?.length == 0) dispatch(setActiveScenario(null)); + else dispatch(setActiveScenario(activeScenarios)); + }, [activeScenarios, dispatch]); + + // This effect updates the selected compartment in the state whenever it changes. + useEffect(() => { + dispatch(selectCompartment(selectedCompartment)); + }, [dispatch, selectedCompartment]); + + // This effect updates the start date in the state whenever the reference day changes. + useEffect(() => { + dispatch(setStartDate(startDay!)); + }, [startDay, dispatch]); + + const remainingCard = useMemo(() => { + return scenarioSimulationDataForCard?.reduce( + (acc: {[key: string]: CardValue}, scenarioSimulationDataCard, id) => { + const compartments = scenarioSimulationDataCard?.results?.[0]?.compartments; + acc[id.toString()] = { + compartmentValues: compartments || null, + startValues: startValues, + }; + return acc; + }, + {} as {[key: string]: CardValue} + ); + }, [scenarioSimulationDataForCard, startValues]); + + /* + * This useEffect hook is utilized to adapt the format of the scenario simulation & case data. + * This effect takes the original data, provided by the ESID API through the context and transforms it, + * ensuring it conforms to the new format required by the generalized Scenario cards. + */ + useEffect(() => { + const caseCompartments = caseScenarioData?.results?.[0]?.compartments; + setCardValues({ + '0': { + compartmentValues: caseCompartments || null, + startValues: startValues, + }, + ...remainingCard, + }); + }, [caseScenarioData, remainingCard, startValues]); + + /* + * This useEffect hook is used to adapting the data format for display in the filter appendage cards. + * This effect takes the original data, provided by the ESID API through the context and transforms it, + * ensuring it conforms to the new format required by the generalized Scenario cards. + */ + useEffect(() => { + if ( + !scenarioSimulationDataForCardFiltersValues || + scenarioSimulationDataForCardFiltersValues === undefined || + Object.keys(scenarioSimulationDataForCardFiltersValues).length === 0 + ) + return; + + const filterValuesTemp: Array = + scenarioSimulationDataForCardFiltersValues?.map((scenarioSimulation) => { + return Object.values(groupFilters) + .filter((groupFilter) => groupFilter.isVisible) + .map((groupFilter) => { + const groupResponse = scenarioSimulation?.[groupFilter.name]?.results?.[0]?.compartments || null; + return { + filteredTitle: groupFilter.name, + filteredValues: groupResponse, + }; + }); + }) || []; + const temp: Dictionary = {}; + getId?.forEach((id, index) => { + temp[id.toString()] = filterValuesTemp[index]; + }); + setFilterValues(temp); + }, [getId, groupFilters, scenarioSimulationDataForCardFiltersValues]); + + // This effect calculates the start and end days from the case and scenario data. + useEffect(() => { + let minDate: string | null = null; + let maxDate: string | null = null; + + if (scenarioListData) { + const scenarios = scenarioListData.results.map((scenario) => ({ + id: scenario.id, + label: scenario.description, + })); + dispatch(setScenarios(scenarios)); + + if (scenarios.length > 0) { + // The simulation data (results) are only available one day after the start day onward. + const startDay = new Date(scenarioListData.results[0].startDay); + startDay.setUTCDate(startDay.getUTCDate() + 1); + + const endDay = new Date(startDay); + endDay.setDate(endDay.getDate() + scenarioListData.results[0].numberOfDays - 1); + + minDate = dateToISOString(startDay); + maxDate = dateToISOString(endDay); + } + } + if (caseScenarioSimulationData) { + const entries = caseScenarioSimulationData.results.map((entry) => entry.day).sort((a, b) => a.localeCompare(b)); + const firstCaseDataDay = entries[0]; + if (!minDate) { + minDate = firstCaseDataDay; + } else { + minDate = minDate.localeCompare(firstCaseDataDay) < 0 ? minDate : firstCaseDataDay; + } + + const lastCaseDataDay = entries.slice(-1)[0]; + if (!maxDate) { + maxDate = lastCaseDataDay; + } else { + maxDate = maxDate.localeCompare(lastCaseDataDay) > 0 ? maxDate : lastCaseDataDay; + } + } + + if (minDate && maxDate) { + dispatch(setMinMaxDates({minDate, maxDate})); + } + }, [activeScenarios, scenarioListData, dispatch, caseScenarioSimulationData]); + + /* + * This useEffect hook is utilized to enable the connection between the dashed border line of the box + * which contains the reference day and the compartments and the line in the line chart. + */ + useEffect(() => { + const x = resizeBoundingRect?.x ?? 0; + const w = resizeBoundingRect?.width ?? 0; + dispatch(setReferenceDayTop(x + w)); + }, [dispatch, resizeBoundingRect]); + + return ( + +
+ + + + state.dataSelection.minDate)} + maxDate={useAppSelector((state) => state.dataSelection.maxDate)} + localization={localization} + /> + + + + + { + if (compartments.indexOf(selectedCompartment) >= minCompartmentsRows) { + setSelectedCompartment('MildInfections'); + } + dispatch(toggleCompartmentExpansion()); + setCompartmentsExpanded(!compartmentsExpanded); + }} + isExpanded={compartmentsExpanded} + /> + + + + + {groupCategories && groupCategories.results && groupSubCategories && groupSubCategories.results && ( + + )} + +
+
+ ); +} diff --git a/frontend/src/components/Scenario/hooks.ts b/frontend/src/components/ScenarioComponents/hooks.ts similarity index 70% rename from frontend/src/components/Scenario/hooks.ts rename to frontend/src/components/ScenarioComponents/hooks.ts index f6da5837..adbff40d 100644 --- a/frontend/src/components/Scenario/hooks.ts +++ b/frontend/src/components/ScenarioComponents/hooks.ts @@ -4,12 +4,15 @@ import {useEffect, useState} from 'react'; import {Dictionary} from '../../util/util'; import {useGetCaseDataSingleSimulationEntryQuery} from '../../store/services/caseDataApi'; -import {useAppSelector} from '../../store/hooks'; +import {useAppSelector} from 'store/hooks'; -export function useGetSimulationStartValues() { +/** + * Custom hook that retrieves the simulation start values for a given node in a specific day. + * @param node - The node for which to retrieve the simulation start values. + * @returns The compartment values for the simulation start. + */ +export function useGetSimulationStartValues(node: string) { const startDay = useAppSelector((state) => state.dataSelection.simulationStart); - const node = useAppSelector((state) => state.dataSelection.district.ags); - const [compartmentValues, setCompartmentValues] = useState | null>(null); const {data: caseData} = useGetCaseDataSingleSimulationEntryQuery( @@ -26,6 +29,5 @@ export function useGetSimulationStartValues() { setCompartmentValues(caseData.results[0].compartments); } }, [caseData]); - return compartmentValues; } diff --git a/frontend/src/components/Sidebar/DistrictMap.tsx b/frontend/src/components/Sidebar/DistrictMap.tsx deleted file mode 100644 index ad17e012..00000000 --- a/frontend/src/components/Sidebar/DistrictMap.tsx +++ /dev/null @@ -1,499 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useEffect, useMemo, useState, useRef} from 'react'; -import {useTheme} from '@mui/material/styles'; -import * as am5 from '@amcharts/amcharts5'; -import * as am5map from '@amcharts/amcharts5/map'; -import {useTranslation} from 'react-i18next'; -import {useAppDispatch, useAppSelector} from '../../store/hooks'; -import {selectDistrict} from '../../store/DataSelectionSlice'; -import Box from '@mui/material/Box'; -import Grid from '@mui/material/Grid'; -import IconButton from '@mui/material/IconButton'; -import Tooltip from '@mui/material/Tooltip'; -import LockIcon from '@mui/icons-material/Lock'; -import {useGetSimulationDataByDateQuery} from 'store/services/scenarioApi'; -import HeatLegend from './HeatLegend'; -import {NumberFormatter} from 'util/hooks'; -import HeatLegendEdit from './HeatLegendEdit'; -import {HeatmapLegend} from '../../types/heatmapLegend'; -import LockOpen from '@mui/icons-material/LockOpen'; -import LoadingContainer from '../shared/LoadingContainer'; -import {useGetCaseDataByDateQuery} from '../../store/services/caseDataApi'; -import mapData from '../../../assets/lk_germany_reduced.geojson?url'; -import svgZoomResetURL from '../../../assets/svg/zoom_out_map_white_24dp.svg?url'; -import svgZoomInURL from '../../../assets/svg/zoom_in_white_24dp.svg?url'; -import svgZoomOutURL from '../../../assets/svg/zoom_out_white_24dp.svg?url'; - -/* [CDtemp-begin] */ -// temporary Implementation for colognes districts -import cologneDistricts from '../../../assets/stadtteile_cologne.geojson?url'; -import {District} from 'types/cologneDisticts'; -/* [CDtemp-end] */ - -interface IRegionPolygon { - value: number; - - /** District name */ - GEN: string; - - /** District type */ - BEZ: string; - - /** AGS (district ID) */ - RS: string; - - /* [CDtemp-begin] */ - // Add district info if available - district?: District; - /* [CDtemp-end] */ -} - -export default function DistrictMap(): JSX.Element { - const [geodata, setGeodata] = useState(null); - const [longLoad, setLongLoad] = useState(false); - const [longLoadTimeout, setLongLoadTimeout] = useState(); - const selectedDistrict = useAppSelector((state) => state.dataSelection.district); - const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); - const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - const selectedDate = useAppSelector((state) => state.dataSelection.date); - const scenarioList = useAppSelector((state) => state.scenarioList.scenarios); - const legend = useAppSelector((state) => state.userPreference.selectedHeatmap); - const [chart, setChart] = useState(null); - - const {data: simulationData, isFetching: isSimulationDataFetching} = useGetSimulationDataByDateQuery( - { - id: selectedScenario ?? 0, - day: selectedDate ?? '', - groups: ['total'], - compartments: [selectedCompartment ?? ''], - }, - {skip: selectedScenario === null || selectedScenario === 0 || !selectedCompartment || !selectedDate} - ); - - const {data: caseData, isFetching: isCaseDataFetching} = useGetCaseDataByDateQuery( - { - day: selectedDate ?? '', - groups: ['total'], - compartments: [selectedCompartment ?? ''], - }, - {skip: selectedScenario === null || selectedScenario > 0 || !selectedCompartment || !selectedDate} - ); - - const legendRef = useRef(null); - const {t, i18n} = useTranslation(); - const {t: tBackend} = useTranslation('backend'); - const {formatNumber} = NumberFormatter(i18n.language, 1, 0); - const theme = useTheme(); - const dispatch = useAppDispatch(); - const lastSelectedPolygon = useRef(null); - const [fixedLegendMaxValue, setFixedLegendMaxValue] = useState(null); - - // This memo either returns the case data or simulation data, depending on which card is selected. - const data = useMemo(() => { - if (selectedScenario === null) { - return null; - } - - if (selectedScenario === 0 && caseData !== undefined && caseData.results.length > 0) { - return caseData; - } else if (selectedScenario > 0 && simulationData !== undefined && simulationData.results.length > 0) { - return simulationData; - } - - return null; - }, [caseData, simulationData, selectedScenario]); - - // This memo returns if the required data is currently being fetched. Either the case data or the scenario data. - const isFetching = useMemo(() => { - if (selectedScenario === null) { - return true; - } - - return (selectedScenario === 0 && isCaseDataFetching) || (selectedScenario > 0 && isSimulationDataFetching); - }, [selectedScenario, isCaseDataFetching, isSimulationDataFetching]); - - // use Memoized to store aggregated max and only recalculate if parameters change - const aggregatedMax: number = useMemo(() => { - if (fixedLegendMaxValue) { - return fixedLegendMaxValue; - } - let max = 1; - - if (data && selectedCompartment !== null) { - data.results.forEach((entry) => { - if (entry.name !== '00000') { - max = Math.max(entry.compartments[selectedCompartment], max); - } - }); - } - return max; - }, [selectedCompartment, data, fixedLegendMaxValue]); - - // This effect is responsible for showing the loading indicator if the data is not ready within 1 second. This - // prevents that the indicator is showing for every little change. - useEffect(() => { - if (isFetching) { - setLongLoadTimeout( - window.setTimeout(() => { - setLongLoad(true); - }, 1000) - ); - } else { - clearTimeout(longLoadTimeout); - setLongLoad(false); - } - // eslint-disable-next-line - }, [isFetching, setLongLoad, setLongLoadTimeout]); // longLoadTimeout is deliberately ignored here. - - // fetch geojson - useEffect(() => { - /* [CDtemp-begin] */ - // Fetch both in one Promise - Promise.all([ - fetch(mapData, { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - }).then((result) => result.json()), - fetch(cologneDistricts, { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - }).then((result) => result.json()), - ]).then( - // on promises accept - ([geodata, colognedata]: [GeoJSON.FeatureCollection, GeoJSON.FeatureCollection]) => { - // Remove Cologne from data - geodata.features = geodata.features.filter((feat) => feat.properties!['RS'] !== '05315'); - // Add RS, GEN, BEZ to cologne districts - geodata.features.push( - ...colognedata.features.map((feat) => { - // Append Stadtteil ID to AGS - feat.properties!['RS'] = `05315${feat.properties!['Stadtteil_ID']}`; - // Append Name (e.g. Köln - Braunsfeld (Lindenthal)) - feat.properties!['GEN'] = `Köln - ${feat.properties!['Stadtteil']} (${feat.properties!['Stadtbezirk']})`; - // Use ST for Stadtteil - feat.properties!['BEZ'] = 'ST'; - return feat; - }) - ); - setGeodata(geodata); - }, - // on promises reject - () => { - console.warn('Failed to fetch geoJSON'); - } - ); - /* [CDtemp-end] */ - fetch(mapData, { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - }) - .then((response) => response.json()) - .then( - // resolve Promise - (geojson: GeoJSON.FeatureCollection) => { - setGeodata(geojson); - }, - // reject promise - () => { - console.warn('Failed to fetch geoJSON'); - } - ); - }, []); - - // Setup Map - useEffect(() => { - // Create map instance - const root = am5.Root.new('mapdiv'); - const chart = root.container.children.push( - am5map.MapChart.new(root, { - projection: am5map.geoMercator(), - maxZoomLevel: 32, // [CDtemp] originally 4 - maxPanOut: 0.4, - zoomControl: am5map.ZoomControl.new(root, { - paddingBottom: 25, - opacity: 50, - }), - }) - ); - // Add home button to reset pan & zoom - chart.get('zoomControl')?.homeButton.set('visible', true); - - // settings to fix positioning of images on buttons - const fixSVGPosition = { - width: 25, - height: 25, - dx: -5, - dy: -3, - }; - - // Set svg icon for home button - chart.get('zoomControl')?.homeButton.set( - 'icon', - am5.Picture.new(root, { - src: svgZoomResetURL, - ...fixSVGPosition, - // recast due to bug/error; am5.Picture usable according to https://www.amcharts.com/docs/v5/concepts/common-elements/buttons/#External_image - }) as unknown as am5.Graphics - ); - - // Add function to select germany when home button is pressed - chart.get('zoomControl')?.homeButton.events.on('click', () => { - // Set district to germany - dispatch(selectDistrict({ags: '00000', name: t('germany'), type: ''})); - }); - - // Set svg icon for plus button - chart.get('zoomControl')?.plusButton.set( - 'icon', - am5.Picture.new(root, { - src: svgZoomInURL, - ...fixSVGPosition, - // recast due to bug/error; am5.Picture usable according to https://www.amcharts.com/docs/v5/concepts/common-elements/buttons/#External_image - }) as unknown as am5.Graphics - ); - - // Set svg icon for minus button - chart.get('zoomControl')?.minusButton.set( - 'icon', - am5.Picture.new(root, { - src: svgZoomOutURL, - ...fixSVGPosition, - // recast due to bug/error; am5.Picture usable according to https://www.amcharts.com/docs/v5/concepts/common-elements/buttons/#External_image - }) as unknown as am5.Graphics - ); - - // Create polygon series - const polygonSeries = chart.series.push( - am5map.MapPolygonSeries.new(root, { - geoJSON: geodata ?? undefined, - tooltipPosition: 'fixed', - layer: 0, - }) - ); - - // get template for polygons to attach events etc to each - const polygonTemplate = polygonSeries.mapPolygons.template; - polygonTemplate.setAll({ - stroke: am5.color(theme.palette.background.default), - strokeWidth: 1, - }); - - // add click event - polygonTemplate.events.on('click', (e) => { - const item = e.target.dataItem?.dataContext as IRegionPolygon; - dispatch(selectDistrict({ags: item.RS, name: item.GEN, type: t(item.BEZ)})); - }); - // add hover state - polygonTemplate.states.create('hover', { - stroke: am5.color(theme.palette.primary.main), - strokeWidth: 2, - layer: 1, - }); - - //show tooltip on heat legend when hovering - polygonTemplate.events.on('pointerover', (e) => { - if (legendRef.current) { - const value = (e.target.dataItem?.dataContext as IRegionPolygon).value; - legendRef.current.showValue(value, formatNumber(value)); - } - }); - //hide tooltip on heat legend when not hovering anymore event - polygonTemplate.events.on('pointerout', () => { - if (legendRef.current) { - void legendRef.current.hideTooltip(); - } - }); - setChart(chart); - return () => { - chart?.dispose(); - root?.dispose(); - }; - }, [geodata, theme, t, formatNumber, dispatch]); - - useEffect(() => { - // unselect previous - if (chart && lastSelectedPolygon.current) { - // reset style - lastSelectedPolygon.current.states.create('default', { - stroke: am5.color(theme.palette.background.default), - strokeWidth: 1, - layer: 0, - }); - lastSelectedPolygon.current.states.apply('default'); - } - // select new - if (selectedDistrict.ags !== '00000' && chart && chart.series.length > 0) { - const series = chart.series.getIndex(0) as am5map.MapPolygonSeries; - series.mapPolygons.each((polygon) => { - const data = polygon.dataItem?.dataContext as IRegionPolygon; - if (data.RS === selectedDistrict.ags) { - polygon.states.create('default', { - stroke: am5.color(theme.palette.primary.main), - strokeWidth: 2, - layer: 2, - }); - if (!polygon.isHover()) { - polygon.states.apply('default'); - } - // save polygon - lastSelectedPolygon.current = polygon; - } - }); - } - }, [chart, selectedDistrict, theme]); - - // set Data - useEffect(() => { - if (chart && chart.series.length > 0) { - const polygonSeries = chart.series.getIndex(0) as am5map.MapPolygonSeries; - if (selectedScenario !== null && selectedCompartment && !isFetching && data) { - // Map compartment value to RS - const dataMapped = new Map(); - data?.results.forEach((entry) => { - const rs = entry.name; - dataMapped.set(rs, entry.compartments[selectedCompartment]); - }); - - if (dataMapped.size > 0) { - polygonSeries.mapPolygons.each((polygon) => { - const regionData = polygon.dataItem?.dataContext as IRegionPolygon; - regionData.value = dataMapped.get(regionData.RS) ?? Number.NaN; - - // determine fill color - let fillColor = am5.color(theme.palette.background.default); - if (Number.isFinite(regionData.value)) { - if (legend.steps[0].value == 0 && legend.steps[legend.steps.length - 1].value == 1) { - // if legend is normalized, also pass mix & max to color function - fillColor = getColorFromLegend(regionData.value, legend, {min: 0, max: aggregatedMax}); - } else { - // if legend is not normalized, min & max are first and last stop of legend and don't need to be passed - fillColor = getColorFromLegend(regionData.value, legend); - } - } - - const bez = t(`BEZ.${regionData.BEZ}`); - const compartmentName = tBackend(`infection-states.${selectedCompartment}`); - polygon.setAll({ - tooltipText: - selectedScenario !== null && selectedCompartment - ? `${bez} {GEN}\n${compartmentName}: ${formatNumber(regionData.value)}` - : `${bez} {GEN}`, - fill: fillColor, - }); - }); - } - } else if (longLoad || !data) { - polygonSeries.mapPolygons.each((polygon) => { - const regionData = polygon.dataItem?.dataContext as IRegionPolygon; - regionData.value = Number.NaN; - const bez = t(`BEZ.${regionData.BEZ}`); - polygon.setAll({ - tooltipText: `${bez} {GEN}`, - fill: am5.color(theme.palette.text.disabled), - }); - }); - } - } - }, [ - scenarioList, - selectedScenario, - selectedCompartment, - selectedDate, - aggregatedMax, - dispatch, - t, - formatNumber, - data, - theme, - isFetching, - legend, - longLoad, - tBackend, - chart, - ]); - - return ( - - - - - { - // move exposed legend item (or null if disposed) into ref - legendRef.current = legend; - }} - min={0} - // use math.round to convert the numbers to integers - max={ - legend.isNormalized ? Math.round(aggregatedMax) : Math.round(legend.steps[legend.steps.length - 1].value) - } - displayText={true} - id={'legend'} - /> - - - - setFixedLegendMaxValue(fixedLegendMaxValue ? null : aggregatedMax)} - size='small' - sx={{padding: theme.spacing(0)}} - > - {fixedLegendMaxValue ? : } - - - - - - - ); -} - -function getColorFromLegend( - value: number, - legend: HeatmapLegend, - aggregatedMinMax?: {min: number; max: number} -): am5.Color { - // assume legend stops are absolute - let normalizedValue = value; - // if aggregated values (min/max) are properly set, the legend items are already normalized => need to normalize value too - if (aggregatedMinMax && aggregatedMinMax.min < aggregatedMinMax.max) { - const {min: aggregatedMin, max: aggregatedMax} = aggregatedMinMax; - normalizedValue = (value - aggregatedMin) / (aggregatedMax - aggregatedMin); - } else if (aggregatedMinMax) { - // log error if any of the above checks fail - console.error('Error: invalid MinMax array in getColorFromLegend', [value, legend, aggregatedMinMax]); - // return completely transparent fill if errors occur - return am5.color('rgba(0,0,0,0)'); - } - if (normalizedValue <= legend.steps[0].value) { - return am5.color(legend.steps[0].color); - } else if (normalizedValue >= legend.steps[legend.steps.length - 1].value) { - return am5.color(legend.steps[legend.steps.length - 1].color); - } else { - let upperTick = legend.steps[0]; - let lowerTick = legend.steps[0]; - for (let i = 1; i < legend.steps.length; i++) { - if (normalizedValue <= legend.steps[i].value) { - upperTick = legend.steps[i]; - lowerTick = legend.steps[i - 1]; - break; - } - } - return am5.Color.interpolate( - (normalizedValue - lowerTick.value) / (upperTick.value - lowerTick.value), - am5.color(lowerTick.color), - am5.color(upperTick.color) - ); - } -} diff --git a/frontend/src/components/Sidebar/HeatLegend.tsx b/frontend/src/components/Sidebar/HeatLegend.tsx deleted file mode 100644 index 65f7347b..00000000 --- a/frontend/src/components/Sidebar/HeatLegend.tsx +++ /dev/null @@ -1,78 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useLayoutEffect} from 'react'; -import {useTheme} from '@mui/material/styles'; -import Box from '@mui/material/Box'; -import * as am5 from '@amcharts/amcharts5'; -import {useTranslation} from 'react-i18next'; -import {NumberFormatter} from 'util/hooks'; -import {HeatmapLegend} from '../../types/heatmapLegend'; - -export default function HeatLegend( - props: Readonly<{ - // add is_dynamic/absolute? - legend: HeatmapLegend; - exposeLegend: (legend: am5.HeatLegend | null) => void; - min: number; - max: number; - displayText: boolean; - id: string; - }> -): JSX.Element { - const id = props.id + String(Date.now() + Math.random()); // "guarantee" unique id - const {i18n} = useTranslation(); - const {formatNumber} = NumberFormatter(i18n.language, 3, 8); - const theme = useTheme(); - - useLayoutEffect(() => { - const root = am5.Root.new(id); - const heatLegend = root.container.children.push( - am5.HeatLegend.new(root, { - orientation: 'horizontal', - startValue: props.min, - startText: props.displayText ? formatNumber(props.min) : ' ', - endValue: props.max, - endText: props.displayText ? formatNumber(props.max) : ' ', - // set start & end color to paper background as gradient is overwritten later and this sets the tooltip background color - startColor: am5.color(theme.palette.background.paper), - endColor: am5.color(theme.palette.background.paper), - }) - ); - - // compile stop list - const stoplist: {color: am5.Color; opacity: number; offset: number}[] = []; - props.legend.steps.forEach((item) => { - stoplist.push({ - color: am5.color(item.color), - // opacity of the color between 0..1 - opacity: 1, - // offset is stop position normalized to 0..1 unless already normalized - offset: props.legend.isNormalized ? item.value : (item.value - props.min) / (props.max - props.min), - }); - }); - heatLegend.markers.template.adapters.add('fillGradient', (gradient) => { - gradient?.set('stops', stoplist); - return gradient; - }); - - // expose Legend element to District map (for tooltip on event) - props.exposeLegend(heatLegend); - - return () => { - root.dispose(); - props.exposeLegend(null); - }; - }, [props, formatNumber, theme, id]); - - return ( - - ); -} diff --git a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx new file mode 100644 index 00000000..d5535485 --- /dev/null +++ b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx @@ -0,0 +1,141 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useCallback, useLayoutEffect, useMemo} from 'react'; +import * as am5 from '@amcharts/amcharts5'; +import {Box} from '@mui/material'; +import {HeatmapLegend} from 'types/heatmapLegend'; +import {useTheme} from '@mui/material/styles'; +import {Localization} from 'types/localization'; +import useRoot from 'components/shared/Root'; +import useHeatLegend from 'components/shared/HeatMap/Legend'; + +interface HeatProps { + /** + * Object defining the legend for the heatmap. + * Includes the steps and normalization settings for the legend. + */ + legend: HeatmapLegend; + + /** + * Optional callback function to expose the legend object (an instance of `am5.HeatLegend`). + * This can be used to interact with the legend outside of the component. + */ + exposeLegend?: (legend: am5.HeatLegend | null) => void; + + /** + * The minimum value represented on the heatmap. This value is used as the start value for the legend. + */ + min: number; + + /** + * The maximum value represented on the heatmap. This value is used as the end value for the legend. + */ + max: number; + + /** + * Boolean flag indicating whether to display text labels for the start and end values on the legend. + */ + displayText: boolean; + + /** + * Optional unique identifier for the legend. Defaults to 'legend'. + */ + id?: string; + + /** + * Optional CSS properties to style the legend container. + * Defaults to width: '100%', margin: '5px', height: '50px'. + */ + style?: React.CSSProperties; + + /** + * Optional localization settings for the legend. + */ + localization?: Localization; +} + +/** + * React Component to render a Legend for a Heatmap. + * @returns {JSX.Element} JSX Element to render the Heatmap Legend. + */ +export default function HeatLegend({ + legend, + exposeLegend = () => {}, + min, + max, + displayText, + id = 'legend', + style = { + width: '100%', + margin: '5px', + height: '50px', + }, + localization, +}: Readonly): JSX.Element { + const unique_id = useMemo(() => id + String(Date.now() + Math.random()), [id]); + const theme = useTheme(); + + const root = useRoot(unique_id); + + const memoizedLocalization = useMemo(() => { + return ( + localization || { + formatNumber: (value) => value.toLocaleString(), + customLang: 'global', + overrides: {}, + } + ); + }, [localization]); + + const heatLegendSettings = useMemo(() => { + return { + orientation: 'horizontal' as 'horizontal' | 'vertical', + startValue: min, + startText: displayText ? memoizedLocalization.formatNumber!(min) : ' ', + endValue: max, + endText: displayText ? memoizedLocalization.formatNumber!(max) : ' ', + // set start & end color to paper background as gradient is overwritten later and this sets the tooltip background color + startColor: am5.color(theme.palette.background.paper), + endColor: am5.color(theme.palette.background.paper), + }; + }, [min, displayText, memoizedLocalization.formatNumber, max, theme.palette.background.paper]); + + const stoplist = useMemo(() => { + return legend.steps.map((item) => ({ + color: am5.color(item.color), + opacity: 1, + offset: legend.isNormalized ? item.value : (item.value - min) / (max - min), + })); + }, [legend, min, max]); + + const heatLegend = useHeatLegend( + root, + heatLegendSettings, + useCallback( + (legend: am5.HeatLegend) => { + legend.markers.template.adapters.add('fillGradient', (gradient) => { + gradient?.set('stops', stoplist); + return gradient; + }); + }, + [stoplist] + ) + ); + + // This effect is used to expose the legend object to the parent component + useLayoutEffect(() => { + if (!heatLegend) { + return; + } + // expose Legend element to District map (for tooltip on event) + exposeLegend(heatLegend); + + return () => { + exposeLegend(null); + }; + // This effect should only run when the legend object changes + }, [heatLegend, legend, min, max, exposeLegend]); + + return ; +} diff --git a/frontend/src/components/Sidebar/HeatLegendEdit.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx similarity index 55% rename from frontend/src/components/Sidebar/HeatLegendEdit.tsx rename to frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx index 2ef25031..5b6390aa 100644 --- a/frontend/src/components/Sidebar/HeatLegendEdit.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx @@ -1,34 +1,78 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import React, {useCallback, useEffect, useLayoutEffect, useRef, useState} from 'react'; -import {useTheme} from '@mui/material/styles'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import FormControl from '@mui/material/FormControl'; -import Grid from '@mui/material/Grid'; -import IconButton from '@mui/material/IconButton'; -import MenuItem from '@mui/material/MenuItem'; +import React, {useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState} from 'react'; import Select, {SelectChangeEvent} from '@mui/material/Select'; -import Tooltip from '@mui/material/Tooltip'; -import Typography from '@mui/material/Typography'; import EditIcon from '@mui/icons-material/Edit'; -import {useAppDispatch, useAppSelector} from '../../store/hooks'; -import {selectHeatmapLegend} from '../../store/UserPreferenceSlice'; -import {HeatmapLegend} from '../../types/heatmapLegend'; +import { + useTheme, + Typography, + IconButton, + MenuItem, + FormControl, + Dialog, + Button, + Box, + Grid, + Tooltip, +} from '@mui/material'; +import {HeatmapLegend} from 'types/heatmapLegend'; +import {Localization} from 'types/localization'; import {useTranslation} from 'react-i18next'; -import legendPresets from '../../../assets/heatmap_legend_presets.json?url'; + +interface HeatLegendEditProps { + /** + * Function to set a new heatmap legend. + */ + setLegend: (legend: HeatmapLegend) => void; + + /** + * The current heatmap legend to be edited. + */ + legend: HeatmapLegend; + + /** + * Optional ID of the selected scenario. Defaults to null. + */ + selectedScenario?: number | null; + + /** + * Optional localization settings for the component. + * Includes number formatting and language overrides. + */ + localization?: Localization; + + /** + * Optional URL to fetch the legend presets from. Defaults to null. + */ + legendPresetsUrl?: string | null; +} /** - * This component displays an edit button to access a modal. In the modal you can edit the heatmap legend. + * React Component to render a Heatmap Legend Editor. + * @returns {JSX.Element} JSX Element to render the Heatmap Legend Editor. */ -export default function HeatLegendEdit(): JSX.Element { - const dispatch = useAppDispatch(); - const activeScenario = useAppSelector((state) => state.dataSelection.scenario); - const legend = useAppSelector((state) => state.userPreference.selectedHeatmap); +export default function HeatLegendEdit({ + setLegend, + legend, + selectedScenario = null, + localization, + legendPresetsUrl = null, +}: HeatLegendEditProps): JSX.Element { const theme = useTheme(); - const {t} = useTranslation(); + const {t: defaultT} = useTranslation(); + + const memoizedLocalization = useMemo(() => { + return ( + localization || { + formatNumber: (value) => value.toLocaleString(), + customLang: 'global', + overrides: {}, + } + ); + }, [localization]); + + const {t: customT} = useTranslation(memoizedLocalization.customLang); // This contains all legends using the default colors. const defaultLegends = useDefaultLegends(); @@ -47,18 +91,16 @@ export default function HeatLegendEdit(): JSX.Element { (name: string) => { const preset = availablePresets.find((preset) => preset.name === name); if (preset) { - dispatch(selectHeatmapLegend({legend: preset})); + setLegend(preset); } }, - [dispatch, availablePresets] + [availablePresets, setLegend] ); - const handleChange = (event: SelectChangeEvent) => selectLegendByName(event.target.value); - // This effect loads the presets file, once the modal is opened the first time. useEffect(() => { - if (heatmapLegends.length === 0 && heatLegendEditOpen) { - fetch(legendPresets, { + if (heatmapLegends.length === 0 && heatLegendEditOpen && legendPresetsUrl) { + fetch(legendPresetsUrl, { headers: { 'Content-Type': 'application/json', Accept: 'application/json', @@ -84,48 +126,57 @@ export default function HeatLegendEdit(): JSX.Element { } ); } - }, [setHeatmapLegends, heatmapLegends, heatLegendEditOpen]); + + // This effect should only run once when the modal is opened the first time. + }, [setHeatmapLegends, heatmapLegends, heatLegendEditOpen, legendPresetsUrl]); // This effect builds the list of available presets from the "defaultLegends" and "heatmapLegends". useEffect(() => { - if (activeScenario === null || defaultLegends.length === 0) { + if (selectedScenario == null || defaultLegends.length === 0) { return; } - const scenarioDefault = - activeScenario === 0 ? defaultLegends[0] : defaultLegends[(activeScenario % (defaultLegends.length - 1)) + 1]; + selectedScenario === 0 ? defaultLegends[0] : defaultLegends[(selectedScenario % (defaultLegends.length - 1)) + 1]; const legends = [...heatmapLegends]; legends.unshift(scenarioDefault); - // In the case, where a non default legend is selected, but the legends haven't been loaded from file we add the - // legend to the selection. if (legend.name !== 'Default' && heatmapLegends.length === 0) { legends.push(legend); } setAvailablePresets(legends); - }, [defaultLegends, heatmapLegends, activeScenario, legend]); + // This effect should only run when the scenario changes or the legends are loaded. + }, [selectedScenario, defaultLegends, heatmapLegends, legend]); // This effect updates the selected legend, if a default legend is selected and the scenario changes. useEffect(() => { - if (activeScenario === null) { - return; - } - if (legend.name !== 'Default' && legend.name !== 'uninitialized') { return; } selectLegendByName('Default'); - }, [activeScenario, legend, selectLegendByName]); + // This effect should only run when the legend is a default legend or unitialized. + }, [legend, selectLegendByName]); return ( <> - + setHeatLegendEditOpen(true)} - aria-label={t('heatlegend.edit')} + aria-label={ + memoizedLocalization.overrides?.['heatlegend.edit'] + ? customT(memoizedLocalization.overrides['heatlegend.edit']) + : defaultT('heatlegend.edit') + } size='small' sx={{padding: theme.spacing(0), marginBottom: theme.spacing(1)}} > @@ -139,8 +190,17 @@ export default function HeatLegendEdit(): JSX.Element { background: theme.palette.background.paper, }} > - - selectLegendByName(event.target.value)} + > {availablePresets.map((preset, i) => ( @@ -157,7 +217,9 @@ export default function HeatLegendEdit(): JSX.Element { @@ -166,7 +228,7 @@ export default function HeatLegendEdit(): JSX.Element { ); } -function LegendGradient(props: Readonly<{legend: HeatmapLegend}>): JSX.Element { +function LegendGradient({legend}: Readonly<{legend: HeatmapLegend}>): JSX.Element { const divRef = useRef(null); useLayoutEffect(() => { @@ -174,21 +236,17 @@ function LegendGradient(props: Readonly<{legend: HeatmapLegend}>): JSX.Element { return; } - const gradient = props.legend.steps + const gradient = legend.steps .map(({color, value}) => { return `${color} ${Math.round(value * 100)}%`; }) .join(', '); divRef.current.style.background = `linear-gradient(90deg, ${gradient})`; - }, [props.legend]); + }, [legend]); return ( -
+
); } @@ -205,11 +263,13 @@ function useDefaultLegends(): Array { for (const element of theme.custom.scenarios) { const steps = []; for (let j = 0; j < stepCount; j++) { - steps.push({color: element[stepCount - 1 - j], value: j / (stepCount - 1)}); + steps.push({ + color: element[stepCount - 1 - j], + value: j / (stepCount - 1), + }); } legends.push({name: 'Default', isNormalized: true, steps}); } - setDefaultLegends(legends); }, [theme, setDefaultLegends]); diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx new file mode 100644 index 00000000..9eb2ced9 --- /dev/null +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -0,0 +1,454 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useState, useEffect, useRef, useMemo, useCallback, useLayoutEffect} from 'react'; +import * as am5 from '@amcharts/amcharts5'; +import * as am5map from '@amcharts/amcharts5/map'; +import {Feature, GeoJSON, GeoJsonProperties} from 'geojson'; +import svgZoomResetURL from '../../../../assets/svg/zoom_out_map_white_24dp.svg?url'; +import svgZoomInURL from '../../../../assets/svg/zoom_in_white_24dp.svg?url'; +import svgZoomOutURL from '../../../../assets/svg/zoom_out_white_24dp.svg?url'; +import {Box} from '@mui/material'; +import useMapChart from 'components/shared/HeatMap/Map'; +import usePolygonSeries from 'components/shared/HeatMap/Polygon'; +import {HeatmapLegend} from '../../../types/heatmapLegend'; +import {useTheme} from '@mui/material/styles'; +import {Localization} from 'types/localization'; +import useRoot from 'components/shared/Root'; +import useZoomControl from 'components/shared/HeatMap/Zoom'; +import {useConst} from 'util/hooks'; + +interface MapProps { + /** The data to be displayed on the map, in GeoJSON format. */ + mapData: undefined | GeoJSON; + + /** Optional unique identifier for the map. Default is 'map'. */ + mapId?: string; + + /** Optional height for the map. Default is '650px'. */ + mapHeight?: string; + + /** Optional default fill color for the map regions. Default is '#8c8c8c'. */ + defaultFill?: number | string; + + /** Optional fill opacity for the map regions. Default is 1. */ + fillOpacity?: number; + + /** Optional maximum zoom level for the map. Default is 4. */ + maxZoomLevel?: number; + + /** Optional function to generate tooltip text for each region based on its data. Default is a function that returns the region's ID. */ + tooltipText?: (regionData: GeoJsonProperties) => string; + + /** Optional function to generate tooltip text while data is being fetched. Default is a function that returns 'Loading...'. */ + tooltipTextWhileFetching?: (regionData: GeoJsonProperties) => string; + + /** The default selected region's data. */ + defaultSelectedValue: GeoJsonProperties; + + /** Optional currently selected scenario identifier. */ + selectedScenario?: number | null; + + /** Optional flag indicating if data is being fetched. Default is false. */ + isDataFetching?: boolean; + + /** Array of values for the map regions, where each value includes an ID and a corresponding numeric value. */ + values: {id: string | number; value: number}[] | undefined; + + /** Callback function to update the selected region's data. */ + setSelectedArea: (area: GeoJsonProperties) => void; + + /** The currently selected region's data. */ + selectedArea: GeoJsonProperties; + + /** The maximum aggregated value for the heatmap legend. */ + aggregatedMax: number; + + /** Callback function to update the maximum aggregated value. */ + setAggregatedMax: (max: number) => void; + + /** Optional fixed maximum value for the heatmap legend. */ + fixedLegendMaxValue?: number | null; + + /** The heatmap legend configuration. */ + legend: HeatmapLegend; + + /** Reference to the heatmap legend element. */ + legendRef: React.MutableRefObject; + + /** Optional flag indicating if data loading takes a long time. Default is false. */ + longLoad?: boolean; + + /** Optional callback function to update the long load flag. Default is an empty function. */ + setLongLoad?: (longLoad: boolean) => void; + + /** Optional localization settings for the heatmap. */ + localization?: Localization; + + /** Optional identifier for mapping values to regions. Default is 'id'. */ + areaId?: string; +} + +/** + * React Component to render a Heatmap. + */ +export default function HeatMap({ + mapData, + mapId = 'map', + mapHeight = '650px', + defaultFill = '#8c8c8c', + fillOpacity = 1, + maxZoomLevel = 4, + tooltipText = () => '{id}', + tooltipTextWhileFetching = () => 'Loading...', + defaultSelectedValue, + selectedScenario = 0, + isDataFetching = false, + values, + setSelectedArea, + selectedArea, + aggregatedMax, + setAggregatedMax, + fixedLegendMaxValue, + legend, + legendRef, + longLoad = false, + setLongLoad = () => {}, + localization, + areaId = 'id', +}: MapProps) { + const theme = useTheme(); + const lastSelectedPolygon = useRef(null); + const [longLoadTimeout, setLongLoadTimeout] = useState(); + + // This memo returns if the required data is currently being fetched. Either the case data or the scenario data. + const isFetching = useMemo(() => { + if (selectedScenario == null) { + return true; + } + return isDataFetching; + }, [isDataFetching, selectedScenario]); + + const root = useRoot(mapId); + + const zoomSettings = useMemo(() => { + return { + paddingBottom: 25, + opacity: 50, + }; + }, []); + + const zoom = useZoomControl( + root, + zoomSettings, + useCallback( + (zoom: am5map.ZoomControl) => { + if (!root) return; + const fixSVGPosition = { + width: 25, + height: 25, + dx: -5, + dy: -3, + }; + zoom.homeButton.set('visible', true); + zoom.homeButton.set( + 'icon', + am5.Picture.new(root, { + src: svgZoomResetURL, + ...fixSVGPosition, + }) as unknown as am5.Graphics + ); + zoom.plusButton.set( + 'icon', + am5.Picture.new(root, { + src: svgZoomInURL, + ...fixSVGPosition, + }) as unknown as am5.Graphics + ); + zoom.minusButton.set( + 'icon', + am5.Picture.new(root, { + src: svgZoomOutURL, + ...fixSVGPosition, + }) as unknown as am5.Graphics + ); + }, + [root] + ) + ); + + // This effect is responsible for setting the selected area when the home button is clicked. + useEffect(() => { + if (!zoom || !root || root.isDisposed() || zoom.isDisposed()) return; + zoom.homeButton.events.on('click', () => { + setSelectedArea(defaultSelectedValue); + }); + // This effect should only run when the zoom control is set + }, [zoom, root, setSelectedArea, defaultSelectedValue]); + + const chartSettings = useMemo(() => { + if (!zoom) return null; + return { + projection: am5map.geoMercator(), + maxZoomLevel: maxZoomLevel, + maxPanOut: 0.4, + zoomControl: zoom, + }; + }, [maxZoomLevel, zoom]); + + const chart = useMapChart(root, chartSettings); + + const polygonSettings = useMemo(() => { + if (!mapData) return null; + return { + geoJSON: mapData, + tooltipPosition: 'fixed', + layer: 0, + } as am5map.IMapPolygonSeriesSettings; + }, [mapData]); + + const polygonSeries = usePolygonSeries( + root, + chart, + polygonSettings, + useConst((polygonSeries: am5map.MapPolygonSeries) => { + const polygonTemplate = polygonSeries.mapPolygons.template; + // Set properties for each polygon + polygonTemplate.setAll({ + fill: am5.color(defaultFill), + stroke: am5.color(theme.palette.background.default), + strokeWidth: 1, + fillOpacity: fillOpacity, + }); + polygonTemplate.states.create('hover', { + stroke: am5.color(theme.palette.primary.main), + strokeWidth: 2, + layer: 1, + }); + }) + ); + + // This effect is responsible for setting the selected area when a region is clicked and showing the value of the hovered region in the legend. + useLayoutEffect(() => { + if (!polygonSeries) return; + const polygonTemplate = polygonSeries.mapPolygons.template; + + polygonTemplate.events.on('click', function (ev) { + if (ev.target.dataItem?.dataContext) { + setSelectedArea(ev.target.dataItem.dataContext as GeoJsonProperties); + } + }); + + polygonTemplate.events.on('pointerover', (e) => { + if (legendRef && legendRef.current) { + const value = (e.target.dataItem?.dataContext as GeoJsonProperties)?.value as number; + legendRef.current.showValue( + value, + localization?.formatNumber ? localization.formatNumber(value) : value.toString() + ); + } + }); + //hide tooltip on heat legend when not hovering anymore event + polygonTemplate.events.on('pointerout', () => { + if (legendRef && legendRef.current) { + void legendRef.current.hideTooltip(); + } + }); + // This effect should only run when the polygon series is set + }, [polygonSeries, legendRef, localization, setSelectedArea, theme.palette.primary.main]); + + // This effect is responsible for showing the loading indicator if the data is not ready within 1 second. This + // prevents that the indicator is showing for every little change. + useEffect(() => { + if (isFetching) { + setLongLoadTimeout( + window.setTimeout(() => { + setLongLoad(true); + }, 1000) + ); + } else { + clearTimeout(longLoadTimeout); + setLongLoad(false); + } + // This effect should only re-run when the fetching state changes + // eslint-disable-next-line + }, [isFetching, setLongLoad, setLongLoadTimeout]); // longLoadTimeout is deliberately ignored here. + + // Set aggregatedMax if fixedLegendMaxValue is set or values are available + useEffect(() => { + if (fixedLegendMaxValue) { + setAggregatedMax(fixedLegendMaxValue); + } else if (values) { + let max = 1; + values.forEach((value) => { + max = Math.max(value.value, max); + }); + setAggregatedMax(max); + } + // This effect should only re-run when the fixedLegendMaxValue or values change + }, [fixedLegendMaxValue, setAggregatedMax, values]); + + // Highlight selected polygon and reset last selected polygon + useEffect(() => { + if (!polygonSeries || polygonSeries.isDisposed()) return; + // Reset last selected polygon + const updatePolygons = () => { + if (lastSelectedPolygon.current) { + lastSelectedPolygon.current.states.create('default', { + stroke: am5.color(theme.palette.background.default), + strokeWidth: 1, + layer: 0, + }); + lastSelectedPolygon.current.states.apply('default'); + } + // Highlight selected polygon + polygonSeries.mapPolygons.each((mapPolygon) => { + if (mapPolygon.dataItem && mapPolygon.dataItem.dataContext) { + const areaData = mapPolygon.dataItem.dataContext as Feature; + const id: string | number = areaData[areaId as keyof Feature] as string | number; + if (id == selectedArea![areaId as keyof GeoJsonProperties]) { + mapPolygon.states.create('default', { + stroke: am5.color(theme.palette.primary.main), + strokeWidth: 2, + layer: 1, + }); + if (!mapPolygon.isHover()) { + mapPolygon.states.apply('default'); + } + lastSelectedPolygon.current = mapPolygon; + } + } + }); + }; + + const handleDataValidated = () => { + if (!polygonSeries.isDisposed()) { + updatePolygons(); + } + }; + + polygonSeries.events.on('datavalidated', handleDataValidated); + handleDataValidated(); + + // Cleanup event listeners on component unmount or when dependencies change + return () => { + if (!polygonSeries.isDisposed()) { + polygonSeries.events.off('datavalidated', handleDataValidated); + } + }; + // This effect should only re-run when the selectedArea or polygonSeries change + }, [areaId, polygonSeries, selectedArea, theme.palette.background.default, theme.palette.primary.main]); + + // Update fill color and tooltip of map polygons based on values + useEffect(() => { + if (!polygonSeries || polygonSeries.isDisposed()) return; + + const updatePolygons = () => { + if (selectedScenario !== null && !isFetching && values && Number.isFinite(aggregatedMax) && polygonSeries) { + const valueMap = new Map(); + + values.forEach((value) => valueMap.set(value.id, value.value)); + + polygonSeries.mapPolygons.template.entities.forEach((polygon) => { + const regionData = polygon.dataItem?.dataContext as GeoJsonProperties; + if (regionData) { + regionData.value = valueMap.get(regionData[areaId] as string | number) ?? Number.NaN; + + let fillColor = am5.color(defaultFill); + if (Number.isFinite(regionData.value) && typeof regionData.value === 'number') { + fillColor = getColorFromLegend(regionData.value, legend, { + min: 0, + max: aggregatedMax, + }); + } + polygon.setAll({ + tooltipText: tooltipText(regionData), + fill: fillColor, + }); + } + }); + } else if (longLoad || !values) { + polygonSeries.mapPolygons.template.entities.forEach((polygon) => { + const regionData = polygon.dataItem?.dataContext as GeoJsonProperties; + if (regionData) { + regionData.value = Number.NaN; + polygon.setAll({ + tooltipText: tooltipTextWhileFetching(regionData), + fill: am5.color(theme.palette.text.disabled), + }); + } + }); + } + }; + + const handleDataValidated = () => { + if (!polygonSeries.isDisposed()) { + updatePolygons(); + } + }; + + polygonSeries.events.on('datavalidated', handleDataValidated); + handleDataValidated(); + + // Cleanup event listeners on component unmount or when dependencies change + return () => { + if (!polygonSeries.isDisposed()) { + polygonSeries.events.off('datavalidated', handleDataValidated); + } + }; + }, [ + polygonSeries, + selectedScenario, + isFetching, + values, + aggregatedMax, + defaultFill, + legend, + tooltipText, + longLoad, + tooltipTextWhileFetching, + theme.palette.text.disabled, + areaId, + ]); + + return ; +} + +function getColorFromLegend( + value: number, + legend: HeatmapLegend, + aggregatedMinMax?: {min: number; max: number} +): am5.Color { + // assume legend stops are absolute + let normalizedValue = value; + // if aggregated values (min/max) are properly set, the legend items are already normalized => need to normalize value too + if (aggregatedMinMax && aggregatedMinMax.min < aggregatedMinMax.max) { + const {min: aggregatedMin, max: aggregatedMax} = aggregatedMinMax; + normalizedValue = (value - aggregatedMin) / (aggregatedMax - aggregatedMin); + } else if (aggregatedMinMax) { + // log error if any of the above checks fail + console.error('Error: invalid MinMax array in getColorFromLegend', [value, legend, aggregatedMinMax]); + // return completely transparent fill if errors occur + return am5.color('rgba(0,0,0,0)'); + } + if (normalizedValue <= legend.steps[0].value) { + return am5.color(legend.steps[0].color); + } else if (normalizedValue >= legend.steps[legend.steps.length - 1].value) { + return am5.color(legend.steps[legend.steps.length - 1].color); + } else { + let upperTick = legend.steps[0]; + let lowerTick = legend.steps[0]; + for (let i = 1; i < legend.steps.length; i++) { + if (normalizedValue <= legend.steps[i].value) { + upperTick = legend.steps[i]; + lowerTick = legend.steps[i - 1]; + break; + } + } + return am5.Color.interpolate( + (normalizedValue - lowerTick.value) / (upperTick.value - lowerTick.value), + am5.color(lowerTick.color), + am5.color(upperTick.color) + ); + } +} diff --git a/frontend/src/components/Sidebar/MapComponents/LockMaxValue.tsx b/frontend/src/components/Sidebar/MapComponents/LockMaxValue.tsx new file mode 100644 index 00000000..cd925e80 --- /dev/null +++ b/frontend/src/components/Sidebar/MapComponents/LockMaxValue.tsx @@ -0,0 +1,82 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {Tooltip, IconButton} from '@mui/material'; +import {LockOpen, Lock} from '@mui/icons-material'; +import {useTheme} from '@mui/material'; +import React, {useMemo} from 'react'; +import {Localization} from 'types/localization'; +import {useTranslation} from 'react-i18next'; + +interface LockMaxValueProps { + /** + * Function to set the new fixed maximum value of the heatmap legend. + */ + setFixedLegendMaxValue: (value: number | null) => void; + + /** + * The current fixed maximum value of the heatmap legend. + */ + fixedLegendMaxValue: number | null; + + /** + * The aggregated maximum value calculated from the data. + */ + aggregatedMax: number; + + /** + * Optional localization settings for the component. + */ + localization?: Localization; +} + +/** + * React Component to render a Lock Icon to fix the maximum value of the Heatmap Legend. + * @returns {JSX.Element} JSX Element to render the Lock Icon. + */ +export default function LockMaxValue({ + setFixedLegendMaxValue, + fixedLegendMaxValue, + aggregatedMax, + localization, +}: LockMaxValueProps): JSX.Element { + const theme = useTheme(); + const {t: defaultT} = useTranslation(); + + const memoizedLocalization = useMemo(() => { + return ( + localization || { + formatNumber: (value) => value.toLocaleString(), + customLang: 'global', + overrides: {}, + } + ); + }, [localization]); + + const {t: customT} = useTranslation(memoizedLocalization.customLang); + return ( + + setFixedLegendMaxValue(fixedLegendMaxValue ? null : aggregatedMax)} + size='small' + sx={{padding: theme.spacing(0)}} + > + {fixedLegendMaxValue ? : } + + + ); +} diff --git a/frontend/src/components/Sidebar/MapComponents/SearchBar.tsx b/frontend/src/components/Sidebar/MapComponents/SearchBar.tsx new file mode 100644 index 00000000..40e64ad3 --- /dev/null +++ b/frontend/src/components/Sidebar/MapComponents/SearchBar.tsx @@ -0,0 +1,149 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import Container from '@mui/material/Container'; +import {Box, Autocomplete, useTheme} from '@mui/material'; +import SearchIcon from '@mui/icons-material/Search'; +import React, {SyntheticEvent} from 'react'; +import {GeoJsonProperties} from 'geojson'; + +interface SearchBarProps { + /** + * Array of data items to be used as options in the autocomplete. + */ + data: GeoJsonProperties[] | undefined; + + /** + * Property name by which the options are sorted and grouped. + */ + sortProperty?: string; + + /** + * Function to determine the label for each option. + * @param option - The option whose label is being determined. + * @returns The label for the given option. + */ + optionLabel: (option: GeoJsonProperties) => string; + + /** + * The currently selected value for the autocomplete. + */ + autoCompleteValue: GeoJsonProperties; + + /** + * Property name used to compare options for equality. + */ + optionEqualProperty?: string; + + /** + * Property name used to compare the selected value for equality. + */ + valueEqualProperty?: string; + + /** + * Event handler for when the selected option changes. + */ + onChange: (event: SyntheticEvent, value: GeoJsonProperties) => void; + + /** + * Placeholder text for the search input field. + */ + placeholder?: string; +} + +/** + * React Component to render a Search Bar for the Map. + * @returns {JSX.Element} JSX Element to render the Search Bar. + */ +export default function SearchBar({ + data, + sortProperty, + optionLabel, + autoCompleteValue, + optionEqualProperty = 'id', + valueEqualProperty = 'id', + onChange, + placeholder = '', +}: SearchBarProps): JSX.Element { + const theme = useTheme(); + + return ( + + + + option![optionEqualProperty] === value![valueEqualProperty]} + // onChange of input dispatch new selected district or initial value (ags: 00000, name: germany) if input is cleared + onChange={onChange} + // enable clearing/resetting the input field with escape key + clearOnEscape + // automatically highlights first option + autoHighlight + // selects highlighted option on focus loss + //autoSelect + // provide countyList as options for drop down + options={data || []} + // group dropdown contents by first letter (json array needs to be sorted alphabetically by name for this to work correctly) + groupBy={sortProperty ? (option) => (option![sortProperty] as string)[0] : undefined} + // provide function to display options in dropdown menu + getOptionLabel={optionLabel} + sx={{ + flexGrow: 1, + //disable outline for any children + '& *:focus': {outline: 'none'}, + }} + // override default input field, placeholder is a fallback, as value should always be a selected district or germany (initial/default value) + renderInput={(params) => ( +
+ +
+ )} + /> +
+
+ ); +} diff --git a/frontend/src/components/Sidebar/SearchBar.tsx b/frontend/src/components/Sidebar/SearchBar.tsx deleted file mode 100644 index 296aaafa..00000000 --- a/frontend/src/components/Sidebar/SearchBar.tsx +++ /dev/null @@ -1,185 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useEffect, useState} from 'react'; -import {useTheme} from '@mui/material/styles'; -import {useAppSelector, useAppDispatch} from '../../store/hooks'; -import {selectDistrict} from '../../store/DataSelectionSlice'; -import SearchIcon from '@mui/icons-material/Search'; -import Autocomplete from '@mui/material/Autocomplete'; -import Box from '@mui/material/Box'; -import Container from '@mui/material/Container'; -import {useTranslation} from 'react-i18next'; -import countyData from '../../../assets/lk_germany_reduced_list.json?url'; -/* [CDtemp-begin] */ -import cologneData from '../../../assets/stadtteile_cologne_list.json'; -import {District} from 'types/cologneDisticts'; -/* [CDtemp-end] */ - -/** Type definition for the CountyItems of the Autocomplete field - * @see DataSelectionSlice - */ -interface CountyItem { - /** ID for the district (Amtlicher Gemeindeschlüssel) (same as ags in store). */ - RS: string; - /** Label/Name of the district (same as the name in the data store). */ - GEN: string; - /** Region type identifier (same as the type in the data store). */ - BEZ: string; -} - -/** - * The SearchBar component helps select a specific district of the map. - * @returns {JSX.Element} JSX Element to render the search bar container. - */ -export default function SearchBar(): JSX.Element { - const selectedDistrict = useAppSelector((state) => state.dataSelection.district); - const {t} = useTranslation('global'); - const [countyList, setCountyList] = useState>([]); - const theme = useTheme(); - const dispatch = useAppDispatch(); - - // This ensures that the displayed name of Germany is always localized. - useEffect(() => { - if (selectedDistrict.ags === '00000' && selectedDistrict.name !== t('germany')) { - dispatch(selectDistrict({ags: '00000', name: t('germany'), type: ''})); - } - }, [t, selectedDistrict, dispatch]); - - useEffect(() => { - // get option list from assets - fetch(countyData, { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - }) - .then((response) => { - // interpret content as JSON - return response.json(); - }) - .then( - // Resolve Promise - (jsonlist: CountyItem[]) => { - // append germany to list - jsonlist.push({RS: '00000', GEN: t('germany'), BEZ: ''}); - /* [CDtemp-begin] */ - // append city districts - jsonlist.push( - ...(cologneData as unknown as Array).map((dist) => { - return { - RS: `05315${dist.Stadtteil_ID}`, - GEN: `Köln - ${dist.Stadtteil} (${dist.Stadtbezirk})`, - BEZ: 'ST', - }; - }) - ); - /* [CDtemp-end] */ - // sort list to put germany at the right place (loading and sorting takes 1.5 ~ 2 sec) - jsonlist.sort((a, b) => { - return a.GEN.localeCompare(b.GEN); - }); - // fill countyList state with list - setCountyList(jsonlist); - }, - // Reject Promise - () => { - console.warn('Did not receive proper county list'); - } - ); - // this init should only run once on first render - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [t]); - - return ( - - - - option.RS === value.RS} - // onChange of input dispatch new selected district or initial value (ags: 00000, name: germany) if input is cleared - onChange={(_event, newValue: CountyItem | null) => { - if (newValue) { - dispatch( - selectDistrict({ - ags: newValue?.RS ?? '00000', - name: newValue?.GEN ?? t('germany'), - type: newValue?.BEZ ?? '', - }) - ); - } - }} - // enable clearing/resetting the input field with escape key - clearOnEscape - // automatically highlights first option - autoHighlight - // selects highlighted option on focus loss - //autoSelect - // provide countyList as options for drop down - options={countyList} - // group dropdown contents by first letter (json array needs to be sorted alphabetically by name for this to work correctly) - groupBy={(option) => option.GEN[0]} - // provide function to display options in dropdown menu - getOptionLabel={(option) => `${option.GEN}${option.BEZ ? ` (${t(`BEZ.${option.BEZ}`)})` : ''}`} - sx={{ - flexGrow: 1, - //disable outline for any children - '& *:focus': {outline: 'none'}, - }} - // override default input field, placeholder is a fallback, as value should always be a selected district or germany (initial/default value) - renderInput={(params) => ( -
- -
- )} - /> -
-
- ); -} diff --git a/frontend/src/components/Sidebar/SidebarContainer.tsx b/frontend/src/components/Sidebar/SidebarContainer.tsx new file mode 100644 index 00000000..ac68ebbe --- /dev/null +++ b/frontend/src/components/Sidebar/SidebarContainer.tsx @@ -0,0 +1,233 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useState, useEffect, useRef, useCallback, useMemo, useContext} from 'react'; +import {useTranslation} from 'react-i18next'; +import {Grid, Stack, useTheme} from '@mui/material'; +import * as am5 from '@amcharts/amcharts5'; +import {useAppDispatch, useAppSelector} from 'store/hooks'; +import {HeatmapLegend} from 'types/heatmapLegend'; +import i18n from 'util/i18n'; +import LockMaxValue from './MapComponents/LockMaxValue'; +import HeatLegendEdit from './MapComponents/HeatLegendEdit'; +import SearchBar from './MapComponents/SearchBar'; +import LoadingContainer from '../shared/LoadingContainer'; +import {NumberFormatter} from 'util/hooks'; +import HeatMap from './MapComponents/HeatMap'; +import HeatLegend from './MapComponents/HeatLegend'; +import {DataContext} from 'DataContext'; +import SidebarTabs from './SidebarTabs'; +import Container from '@mui/material/Container'; +import Box from '@mui/material/Box'; +import {selectDistrict} from 'store/DataSelectionSlice'; +import legendPresets from '../../../assets/heatmap_legend_presets.json?url'; +import {selectHeatmapLegend} from 'store/UserPreferenceSlice'; +import {GeoJSON, GeoJsonProperties} from 'geojson'; + +export default function MapContainer() { + const {t} = useTranslation(); + const {formatNumber} = NumberFormatter(i18n.language, 1, 0); + const {t: tBackend} = useTranslation('backend'); + const theme = useTheme(); + const dispatch = useAppDispatch(); + + const { + geoData, + mapData, + areMapValuesFetching, + searchBarData, + }: { + geoData: GeoJSON | undefined; + mapData: {id: string; value: number}[] | undefined; + areMapValuesFetching: boolean; + searchBarData: GeoJsonProperties[] | undefined; + } = useContext(DataContext) || { + geoData: {type: 'FeatureCollection', features: []}, + mapData: [], + areMapValuesFetching: false, + searchBarData: [], + }; + + const storeSelectedArea = useAppSelector((state) => state.dataSelection.district); + const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); + const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); + const storeHeatLegend = useAppSelector((state) => state.userPreference.selectedHeatmap); + + const defaultValue = useMemo(() => { + return { + RS: '00000', + GEN: t('germany'), + BEZ: '', + id: -1, + }; + }, [t]); + + const [selectedArea, setSelectedArea] = useState( + storeSelectedArea.name != '' + ? {RS: storeSelectedArea.ags, GEN: storeSelectedArea.name, BEZ: storeSelectedArea.type} + : defaultValue + ); + const [aggregatedMax, setAggregatedMax] = useState(1); + const [legend, setLegend] = useState(storeHeatLegend); + const [longLoad, setLongLoad] = useState(false); + const [fixedLegendMaxValue, setFixedLegendMaxValue] = useState(null); + + const legendRef = useRef(null); + + // Set selected area on first load. If language change and selected area is germany, set default value again to update the name + useEffect(() => { + if (selectedArea?.RS === '00000') { + setSelectedArea(defaultValue); + } + // This effect should only run when the language changes + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [i18n.language]); + + // Set selected area in store + useEffect(() => { + dispatch( + selectDistrict({ + ags: String(selectedArea?.['RS']), + name: String(selectedArea?.['GEN']), + type: String(selectedArea?.['BEZ']), + }) + ); + // This effect should only run when the selectedArea changes + }, [selectedArea, dispatch]); + + // Set legend in store + useEffect(() => { + dispatch(selectHeatmapLegend({legend: legend})); + // This effect should only run when the legend changes + }, [legend, dispatch]); + + const calculateToolTip = useCallback( + (regionData: GeoJsonProperties) => { + const bez = t(`BEZ.${regionData?.BEZ}`); + const compartmentName = tBackend(`infection-states.${selectedCompartment}`); + return selectedScenario !== null && selectedCompartment + ? `${bez} {GEN}\n${compartmentName}: ${formatNumber(Number(regionData?.value))}` + : `${bez} {GEN}`; + }, + [formatNumber, selectedCompartment, selectedScenario, t, tBackend] + ); + + const calculateToolTipFetching = useCallback( + (regionData: GeoJsonProperties) => { + const bez = t(`BEZ.${regionData?.BEZ}`); + return `${bez} {GEN}`; + }, + [t] + ); + + const localization = useMemo(() => { + return { + formatNumber: formatNumber, + }; + }, [formatNumber]); + + const optionLabel = useCallback( + (option: GeoJsonProperties) => { + return `${option?.GEN}${option?.BEZ ? ` (${t(`BEZ.${option?.BEZ}`)})` : ''}`; + }, + [t] + ); + + return ( + + + { + if (option) { + if (option.RS && option.GEN && option.BEZ) setSelectedArea(option); + else setSelectedArea(defaultValue); + } + }} + placeholder={`${selectedArea?.GEN}${selectedArea?.BEZ ? ` (${t(`BEZ.${selectedArea?.BEZ}`)})` : ''}`} + optionEqualProperty='RS' + valueEqualProperty='RS' + /> + + + + + + + { + // move exposed legend item (or null if disposed) into ref + legendRef.current = legend; + }, [])} + min={0} + // use math.round to convert the numbers to integers + max={ + legend.isNormalized + ? Math.round(aggregatedMax) + : Math.round(legend.steps[legend.steps.length - 1].value) + } + displayText={true} + localization={localization} + /> + + + + + + + + + + + + + ); +} diff --git a/frontend/src/components/Sidebar/index.tsx b/frontend/src/components/Sidebar/index.tsx deleted file mode 100644 index a0064c7d..00000000 --- a/frontend/src/components/Sidebar/index.tsx +++ /dev/null @@ -1,39 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React from 'react'; -import {useTheme} from '@mui/material/styles'; -import SearchBar from './SearchBar'; -import DistrictMap from './DistrictMap'; -import SidebarTabs from './SidebarTabs'; -import Box from '@mui/material/Box'; -import Container from '@mui/material/Container'; -import Stack from '@mui/material/Stack'; - -export default function Sidebar(): JSX.Element { - const theme = useTheme(); - - return ( - - - - - - - - - - - - ); -} diff --git a/frontend/src/components/SimulationChart.tsx b/frontend/src/components/SimulationChart.tsx deleted file mode 100644 index 77a3e70b..00000000 --- a/frontend/src/components/SimulationChart.tsx +++ /dev/null @@ -1,817 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useCallback, useEffect, useRef} from 'react'; -import {Root} from '@amcharts/amcharts5/.internal/core/Root'; -import {Tooltip} from '@amcharts/amcharts5/.internal/core/render/Tooltip'; -import {RoundedRectangle} from '@amcharts/amcharts5/.internal/core/render/RoundedRectangle'; -import {Color, color} from '@amcharts/amcharts5/.internal/core/util/Color'; -import {DataProcessor} from '@amcharts/amcharts5/.internal/core/util/DataProcessor'; -import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; -import {DateAxis} from '@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis'; -import {AxisRendererX} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererX'; -import {ValueAxis} from '@amcharts/amcharts5/.internal/charts/xy/axes/ValueAxis'; -import {AxisRendererY} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererY'; -import {XYCursor} from '@amcharts/amcharts5/.internal/charts/xy/XYCursor'; -import {LineSeries} from '@amcharts/amcharts5/.internal/charts/xy/series/LineSeries'; -import am5locales_en_US from '@amcharts/amcharts5/locales/en_US'; -import am5locales_de_DE from '@amcharts/amcharts5/locales/de_DE'; -import {useAppDispatch, useAppSelector} from '../store/hooks'; -import {darken, useTheme} from '@mui/material/styles'; -import Box from '@mui/material/Box'; -import {selectDate} from '../store/DataSelectionSlice'; -import {useGetCaseDataByDistrictQuery} from '../store/services/caseDataApi'; -import {dateToISOString} from 'util/util'; -import { - PercentileDataByDay, - useGetMultipleSimulationDataByNodeQuery, - useGetPercentileDataQuery, -} from 'store/services/scenarioApi'; -import {useTranslation} from 'react-i18next'; -import LoadingContainer from './shared/LoadingContainer'; -import {useGetMultipleGroupFilterDataQuery} from 'store/services/groupApi'; -import {GroupData} from 'types/group'; -import {setReferenceDayBottom} from '../store/LayoutSlice'; -import {getScenarioPrimaryColor} from '../util/Theme'; - -/** - * React Component to render the Simulation Chart Section - * @returns {JSX.Element} JSX Element to render the scenario chart container and the scenario graph within. - */ -export default function SimulationChart(): JSX.Element { - const {t, i18n} = useTranslation(); - const {t: tBackend} = useTranslation('backend'); - const theme = useTheme(); - - const scenarioList = useAppSelector((state) => state.scenarioList); - const selectedDistrict = useAppSelector((state) => state.dataSelection.district.ags); - const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - const selectedDate = useAppSelector((state) => state.dataSelection.date); - const referenceDay = useAppSelector((state) => state.dataSelection.simulationStart); - const minDate = useAppSelector((state) => state.dataSelection.minDate); - const maxDate = useAppSelector((state) => state.dataSelection.maxDate); - const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); - const activeScenarios = useAppSelector((state) => state.dataSelection.activeScenarios); - const groupFilterList = useAppSelector((state) => state.dataSelection.groupFilters); - const dispatch = useAppDispatch(); - - const {data: groupFilterData} = useGetMultipleGroupFilterDataQuery( - groupFilterList && selectedScenario && selectedDistrict && selectedCompartment - ? Object.values(groupFilterList) - .filter((groupFilter) => groupFilter.isVisible) - .map((groupFilter) => { - return { - id: selectedScenario, - node: selectedDistrict, - compartment: selectedCompartment, - groupFilter: groupFilter, - }; - }) - : [] - ); - - const {data: caseData, isFetching: caseDataFetching} = useGetCaseDataByDistrictQuery( - { - node: selectedDistrict, - groups: ['total'], - compartments: [selectedCompartment ?? ''], - }, - {skip: !selectedCompartment} - ); - - const {data: simulationData, isFetching: simulationFetching} = useGetMultipleSimulationDataByNodeQuery( - { - // Filter only scenarios (scenario id 0 is case data) - ids: activeScenarios ? activeScenarios.filter((s) => s !== 0 && scenarioList.scenarios[s]) : [], - node: selectedDistrict, - groups: ['total'], - compartments: [selectedCompartment ?? ''], - }, - {skip: !selectedCompartment} - ); - - const {data: percentileData} = useGetPercentileDataQuery( - { - id: selectedScenario as number, - node: selectedDistrict, - groups: ['total'], - compartment: selectedCompartment as string, - }, - {skip: selectedScenario === null || selectedScenario === 0 || !selectedCompartment} - ); - - const rootRef = useRef(null); - const chartRef = useRef(null); - - const setReferenceDayX = useCallback(() => { - if (!chartRef.current || !rootRef.current || !referenceDay) { - return; - } - - const midday = new Date(referenceDay).setHours(12, 0, 0); - - const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - const xAxisPosition = xAxis.width() * xAxis.toGlobalPosition(xAxis.dateToPosition(new Date(midday))); - const globalPosition = xAxis.toGlobal({x: xAxisPosition, y: 0}); - const docPosition = rootRef.current.rootPointToDocument(globalPosition).x; - dispatch(setReferenceDayBottom(docPosition)); - }, [dispatch, referenceDay]); - - // Effect to initialize root & chart - useEffect( - () => { - // Create root and chart - const root = Root.new('chartdiv'); - const chart = root.container.children.push( - XYChart.new(root, { - panX: false, - panY: false, - wheelX: 'panX', - wheelY: 'zoomX', - maxTooltipDistance: -1, - }) - ); - - // Set number formatter - root.numberFormatter.set('numberFormat', '#,###.'); - - // Create x-axis - const xAxis = chart.xAxes.push( - DateAxis.new(root, { - renderer: AxisRendererX.new(root, {}), - // Set base interval and aggregated intervals when the chart is zoomed out - baseInterval: {timeUnit: 'day', count: 1}, - gridIntervals: [ - {timeUnit: 'day', count: 1}, - {timeUnit: 'day', count: 3}, - {timeUnit: 'day', count: 7}, - {timeUnit: 'month', count: 1}, - {timeUnit: 'month', count: 3}, - {timeUnit: 'year', count: 1}, - ], - // Add tooltip instance so cursor can display value - tooltip: Tooltip.new(root, {}), - }) - ); - // Change axis renderer to have ticks/labels on day center - const xRenderer = xAxis.get('renderer'); - xRenderer.ticks.template.setAll({ - location: 0.5, - }); - - // Create y-axis - chart.yAxes.push( - ValueAxis.new(root, { - renderer: AxisRendererY.new(root, {}), - // Fix lower end to 0 - min: 0, - // Add tooltip instance so cursor can display value - tooltip: Tooltip.new(root, {}), - }) - ); - - // Add cursor - chart.set( - 'cursor', - XYCursor.new(root, { - // Only allow zooming along x-axis - behavior: 'zoomX', - // Snap cursor to xAxis ticks - xAxis: xAxis, - }) - ); - - // Add event on double click to select date - chart.events.on('click', (ev) => { - // Get date from axis position from cursor position - const date = xAxis.positionToDate( - xAxis.toAxisPosition(ev.target.get('cursor')?.getPrivate('positionX') as number) - ); - // Remove time information to only have a date - date.setHours(0, 0, 0, 0); - // Set date in store - dispatch(selectDate(dateToISOString(date))); - }); - - // Set refs to be used in other effects - rootRef.current = root; - chartRef.current = chart; - - // Clean-up before re-running this effect - return () => { - // Dispose old root and chart before creating a new instance - chartRef.current?.dispose(); - rootRef.current?.dispose(); - }; - }, - // This effect should only run once. dispatch should not change during runtime - [dispatch] - ); - - // Effect to change localization of chart if language changes - useEffect( - () => { - // Skip if root or chart is not initialized - if (!rootRef.current || !chartRef.current) { - return; - } - - // Set localization - rootRef.current.locale = i18n.language === 'de' ? am5locales_de_DE : am5locales_en_US; - - // Change date formats for ticks & tooltip (use fallback object to suppress undefined object warnings as this cannot be undefined) - const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - xAxis.get('dateFormats', {day: ''})['day'] = t('dayFormat'); - xAxis.get('tooltipDateFormats', {day: ''})['day'] = t('dayFormat'); - // Fix first date of the month falling back to wrong format (also with fallback object) - xAxis.get('periodChangeDateFormats', {day: ''})['day'] = t('dayFormat'); - }, - // Re-run effect if language changes - [i18n.language, t] - ); - - // Effect to update min/max date. - useEffect(() => { - // Skip if root or chart is not initialized - if (!rootRef.current || !chartRef.current || !minDate || !maxDate) { - return; - } - - const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - xAxis.set('min', new Date(minDate).setHours(0)); - xAxis.set('max', new Date(maxDate).setHours(23, 59, 59)); - }, [minDate, maxDate]); - - // Effect to add series to chart - useEffect( - () => { - // Skip if root or chart not initialized - if (!rootRef.current || !chartRef.current) { - return; - } - - const chart: XYChart = chartRef.current; - const root: Root = rootRef.current; - const xAxis: DateAxis = chart.xAxes.getIndex(0) as DateAxis; - const yAxis: ValueAxis = chart.yAxes.getIndex(0) as ValueAxis; - - // Add series for case data - const caseDataSeries = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - // Case Data is always scenario id 0 - id: '0', - name: t('chart.caseData'), - valueXField: 'date', - valueYField: '0', - // Prevent data points from connecting across gaps in the data - connect: false, - stroke: color('#000'), - }) - ); - caseDataSeries.strokes.template.setAll({ - strokeWidth: 2, - }); - - // Add series for percentile area - const percentileSeries = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - id: 'percentiles', - valueXField: 'date', - valueYField: 'percentileUp', - openValueYField: 'percentileDown', - connect: false, - // Percentiles are only visible if a scenario is selected and it is not case data - visible: selectedScenario !== null && selectedScenario > 0, - // Add fill color according to selected scenario (if selected scenario is set and it's not case data) - fill: - selectedScenario !== null && selectedScenario > 0 - ? color(getScenarioPrimaryColor(selectedScenario, theme)) - : undefined, - }) - ); - percentileSeries.strokes.template.setAll({ - strokeWidth: 0, - }); - percentileSeries.fills.template.setAll({ - fillOpacity: 0.3, - visible: true, - }); - - // Add series for each scenario - Object.entries(scenarioList.scenarios).forEach(([scenarioId, scenario]) => { - const series = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - id: scenarioId, - name: tBackend(`scenario-names.${scenario.label}`), - valueXField: 'date', - valueYField: scenarioId, - // Prevent data points from connecting across gaps in the data - connect: false, - // Fallback Tooltip (if HTML breaks for some reason) - // For text color: loop around the theme's scenario color list if scenario IDs exceed color list length, then pick first color of sub-palette which is the main color - tooltip: Tooltip.new(root, { - labelText: `[bold ${getScenarioPrimaryColor(scenario.id, theme)}]${tBackend( - `scenario-names.${scenario.label}` - )}:[/] {${scenarioId}}`, - }), - stroke: color(getScenarioPrimaryColor(scenario.id, theme)), - }) - ); - series.strokes.template.setAll({ - strokeWidth: 2, - }); - }); - - // Add series for groupFilter (if there are any) - if (groupFilterList && selectedScenario) { - // Define line style variants for groups - const groupFilterStrokes = [ - [2, 4], // dotted - [8, 4], // dashed - [8, 4, 2, 4], // dash-dotted - [8, 4, 2, 4, 2, 4], // dash-dot-dotted - ]; - // Loop through visible group filters - Object.values(groupFilterList) - .filter((groupFilter) => groupFilter.isVisible) - .forEach((groupFilter, i) => { - // Add series for each group filter - const series = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - id: `group-filter-${groupFilter.name}`, - name: groupFilter.name, - valueXField: 'date', - valueYField: groupFilter.name, - connect: false, - // Fallback Tooltip (if HTML breaks for some reason) - // Use color of selected scenario (scenario ID is 1-based index, color list is 0-based index) loop if scenario ID exceeds length of color list; use first color of palette (main color) - tooltip: Tooltip.new(root, { - labelText: `[bold ${getScenarioPrimaryColor(selectedScenario, theme)}]${ - groupFilter.name - }:[/] {${groupFilter.name}}`, - }), - stroke: color(getScenarioPrimaryColor(selectedScenario, theme)), - }) - ); - series.strokes.template.setAll({ - strokeWidth: 2, - // Loop through stroke list if group filters exceeds list length - strokeDasharray: groupFilterStrokes[i % groupFilterStrokes.length], - }); - }); - } - - // Clean-up function - return () => { - // Remove all series - chart.series.clear(); - }; - }, - // Re-run if scenario, group filter, or selected scenario (percentile series) change. (t, tBackend, and theme do not change during runtime). - [scenarioList, groupFilterList, selectedScenario, t, tBackend, theme] - ); - - // Effect to hide disabled scenarios (and show them again if not hidden anymore) - useEffect( - () => { - const allSeries = chartRef.current?.series; - // Skip effect if chart is not initialized (contains no series yet) - if (!allSeries) return; - - // Set visibility of each series - allSeries.each((series) => { - // Everything but scenario series evaluate to NaN (because scenario series have their scenario id as series id while others have names) - const seriesID = series.get('id'); - // Hide series if it is a scenario series (and in the scenario list) but not in the active scenarios list - if (seriesID === 'percentiles') { - return; - } - - if (!activeScenarios?.includes(Number(seriesID))) { - void series.hide(); - } else { - void series.show(); - } - }); - }, - // Re-run effect when the active scenario list changes - [activeScenarios] - ); - - // Effect to hide deviations if no scenario is selected - useEffect( - () => { - // Skip effect if chart is not initialized (contains no series yet) - if (!chartRef.current) return; - - // Find percentile series and only show it if there is a selected scenario - chartRef.current?.series.values - .filter((series) => series.get('id') === 'percentiles') - .map((percentileSeries) => { - if (selectedScenario === null || selectedScenario === 0) { - void percentileSeries.hide(); - } else { - void percentileSeries.show(); - } - }); - }, - // Re-run effect when the selected scenario changes - [selectedScenario] - ); - - // Effect to add Guide when date selected - useEffect(() => { - // Skip effect if chart (or root) is not initialized yet or no date is selected - if (!chartRef.current || !rootRef.current || !selectedDate) { - return; - } - - // Get xAxis from chart - const xAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - - // Create data item for range - const rangeDataItem = xAxis.makeDataItem({ - // Make sure the time of the start date object is set to first second of day - value: new Date(selectedDate).setHours(0, 0, 0), - // Make sure the time of the end date object is set to last second of day - endValue: new Date(selectedDate).setHours(23, 59, 59), - // Line and label should drawn above the other elements - above: true, - }); - - // Create the range with the data item - const range = xAxis.createAxisRange(rangeDataItem); - - // Set stroke of range (line with label) - range.get('grid')?.setAll({ - stroke: color(theme.palette.primary.main), - strokeOpacity: 1, - strokeWidth: 2, - location: 0.5, - visible: true, - }); - - // Set fill of range (rest of the day) - range.get('axisFill')?.setAll({ - fill: color(theme.palette.primary.main), - fillOpacity: 0.3, - visible: true, - }); - - // Set label for range - range.get('label')?.setAll({ - fill: color(theme.palette.primary.contrastText), - text: new Date(selectedDate).toLocaleDateString(i18n.language, { - year: 'numeric', - month: 'short', - day: '2-digit', - }), - location: 0.5, - background: RoundedRectangle.new(rootRef.current, { - fill: color(theme.palette.primary.main), - }), - // Put Label to the topmost layer to make sure it is drawn on top of the axis tick labels - layer: Number.MAX_VALUE, - }); - - return () => { - // Discard range before re-running this effect - xAxis.axisRanges.removeValue(range); - }; - }, [selectedDate, theme, i18n.language]); - - // Effect to add guide for the reference day - useEffect( - () => { - // Skip effect if chart (or root) is not initialized yet or no date is selected - if (!chartRef.current || !rootRef.current || !referenceDay) { - return; - } - - // Get xAxis from chart - const xAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - - const referenceDate = new Date(referenceDay); - const start = referenceDate.setHours(12, 0, 0); - - // Create data item for range - const rangeDataItem = xAxis.makeDataItem({ - // Make sure the time of the start date object is set to first second of day - value: start, - // Line and label should drawn above the other elements - above: true, - }); - - // Create the range with the data item - const range = xAxis.createAxisRange(rangeDataItem); - - // Set stroke of range (line with label) - range.get('grid')?.setAll({ - stroke: color(darken(theme.palette.divider, 0.25)), - strokeOpacity: 1, - strokeWidth: 2, - strokeDasharray: [6, 4], - }); - - setReferenceDayX(); - xAxis.onPrivate('selectionMin', setReferenceDayX); - xAxis.onPrivate('selectionMax', setReferenceDayX); - const resizeObserver = new ResizeObserver(setReferenceDayX); - resizeObserver.observe(rootRef.current.dom); - - return () => { - // Discard range before re-running this effect - xAxis.axisRanges.removeValue(range); - resizeObserver.disconnect(); - }; - }, - // Re-run effect when selection changes (date/scenario/compartment/district) or when the active scenarios/filters change (theme and translation do not change after initialization) - [referenceDay, theme, i18n.language, setReferenceDayX] - ); - - // Effect to update Simulation and case data - useEffect(() => { - // Skip effect if chart is not initialized yet - if (!chartRef.current) return; - // Also skip if there is no scenario or compartment selected - if (selectedScenario === null || !selectedCompartment) return; - - // Create empty map to match dates - const dataMap = new Map(); - - // Cycle through scenarios - activeScenarios?.forEach((scenarioId) => { - simulationData?.[scenarioId]?.results.forEach(({day, compartments}) => { - // Add scenario data to map (upsert date entry) - dataMap.set(day, {...dataMap.get(day), [scenarioId]: compartments[selectedCompartment]}); - }); - - if (scenarioId === 0) { - // Add case data values (upsert date entry) - caseData?.results.forEach((entry) => { - dataMap.set(entry.day, {...dataMap.get(entry.day), [0]: entry.compartments[selectedCompartment]}); - }); - } - }); - - if (percentileData) { - // Add 25th percentile data - percentileData[0].results?.forEach((entry: PercentileDataByDay) => { - dataMap.set(entry.day, {...dataMap.get(entry.day), percentileDown: entry.compartments[selectedCompartment]}); - }); - - // Add 75th percentile data - percentileData[1].results?.forEach((entry: PercentileDataByDay) => { - dataMap.set(entry.day, {...dataMap.get(entry.day), percentileUp: entry.compartments[selectedCompartment]}); - }); - } - - // Add groupFilter data of visible filters - if (groupFilterList && groupFilterData) { - Object.values(groupFilterList).forEach((groupFilter) => { - if (groupFilter?.isVisible) { - // Check if data for filter is available (else report error) - if (groupFilterData[groupFilter.name]) { - groupFilterData[groupFilter.name].results.forEach((entry: GroupData) => { - dataMap.set(entry.day, { - ...dataMap.get(entry.day), - [groupFilter.name]: entry.compartments[selectedCompartment], - }); - }); - } else { - console.error(`ERROR: missing data for "${groupFilter.name}" filter`); - } - } - }); - } - - // Sort map by date - const dataMapSorted = new Map(Array.from(dataMap).sort(([a], [b]) => String(a).localeCompare(b))); - const data = Array.from(dataMapSorted).map(([day, data]) => { - return {date: day, ...data}; - }); - - // Put data into series - chartRef.current.series.each((series, i) => { - // Set-up data processors for first series (not needed for others since all use the same data) - if (i === 0) { - series.data.processor = DataProcessor.new(rootRef.current as Root, { - // Define date fields and their format (incoming format from API) - dateFields: ['date'], - dateFormat: 'yyyy-MM-dd', - }); - } - // Link each series to data - series.data.setAll(data); - }); - - // Set up HTML tooltip - const tooltipHTML = ` - ${'' /* Current Date and selected compartment name */} - {date.formatDate("${t('dateFormat')}")} (${tBackend( - `infection-states.${selectedCompartment}` - )}) - - ${ - // Table row for each series of an active scenario - chartRef.current.series.values - .filter((series) => activeScenarios?.includes(Number(series.get('id')))) - .map((series): string => { - /* Skip if series: - * - is hidden - * - is percentile series (which is added to the active scenario series) - * - is group filter series - */ - if ( - series.isHidden() || - series.get('id') === 'percentiles' || - series.get('id')?.startsWith('group-filter-') - ) { - return ''; - } - /* Skip with error if series does not have property: - * - id - * - name - * - valueYField - * - stroke - */ - if (!series.get('id') || !series.get('name') || !series.get('valueYField') || !series.get('stroke')) { - console.error( - 'ERROR: missing series property: ', - series.get('id'), - series.get('name'), - series.get('valueYField'), - series.get('stroke') - ); - return ''; - } - // Handle series normally - return ` - - - - ${ - // Skip percentiles if this series is not the selected scenario or case data - series.get('id') !== selectedScenario.toString() || selectedScenario === 0 - ? '' - : ` - - ` - } - - ${ - // Add group filters if this series is the selected scenario - series.get('id') !== selectedScenario.toString() - ? '' - : // Add table row for each active group filter - (chartRef.current as XYChart).series.values - .filter((s) => s.get('id')?.startsWith('group-filter-') && !s.isHidden()) - .map((groupFilterSeries) => { - return ` - - - - - `; - }) - .join('') - } - `; - }) - .join('') - } -
- ${series.get('name') as string} - - {${series.get('valueYField') as string}} - - [{percentileDown} - {percentileUp}] -
- ${groupFilterSeries.get('name') as string} - - {${groupFilterSeries.get('valueYField') as string}} -
- `; - - // Attach tooltip to series - chartRef.current.series.each((series) => { - const tooltip = Tooltip.new(rootRef.current as Root, { - labelHTML: tooltipHTML, - getFillFromSprite: false, - autoTextColor: false, - pointerOrientation: 'horizontal', - }); - - // Set tooltip default text color to theme primary text color - tooltip.label.setAll({ - fill: color(theme.palette.text.primary), - }); - - // Set tooltip background to theme paper - tooltip.get('background')?.setAll({ - fill: color(theme.palette.background.paper), - }); - - // Set tooltip - series.set('tooltip', tooltip); - }); - - // Collect data field names & order for data export - // Always export date and case data (and percentiles of selected scenario) - let dataFields = { - date: `${t('chart.date')}`, - caseData: `${t('chart.caseData')}`, - percentileUp: `${t('chart.percentileUp')}`, - percentileDown: `${t('chart.percentileDown')}`, - }; - // Always put date first, case data second - const dataFieldsOrder = ['date', 'caseData']; - // Loop through active scenarios (if there are any) - if (activeScenarios) { - activeScenarios.forEach((scenarioId) => { - // Skip case data (already added) - if (scenarioId === 0 || !scenarioList.scenarios[scenarioId]) { - return; - } - - // Add scenario label to export data field names - dataFields = { - ...dataFields, - [scenarioId]: scenarioList.scenarios[scenarioId].label, - }; - // Add scenario id to export data field order (for sorted export like csv) - dataFieldsOrder.push(`${scenarioId}`); - // If this is the selected scenario also add percentiles after it - if (scenarioId == selectedScenario) { - dataFieldsOrder.push('percentileDown', 'percentileUp'); - } - }); - } - - // Let's import this lazily, since it contains a lot of code. - import('@amcharts/amcharts5/plugins/exporting') - .then((module) => { - // Update export menu - module.Exporting.new(rootRef.current as Root, { - menu: module.ExportingMenu.new(rootRef.current as Root, {}), - filePrefix: 'Covid Simulation Data', - dataSource: data, - dateFields: ['date'], - dateFormat: `${t('dateFormat')}`, - dataFields: dataFields, - dataFieldsOrder: dataFieldsOrder, - }); - }) - .catch(() => console.warn("Couldn't load exporting functionality!")); - - setReferenceDayX(); - // Re-run this effect whenever the data itself changes (or any variable the effect uses) - }, [ - percentileData, - simulationData, - caseData, - groupFilterData, - activeScenarios, - selectedScenario, - scenarioList, - selectedCompartment, - theme, - groupFilterList, - t, - tBackend, - setReferenceDayX, - ]); - - return ( - - - - ); -} diff --git a/frontend/src/components/TopBar/ApplicationMenu.tsx b/frontend/src/components/TopBar/ApplicationMenu.tsx index 4e76da0a..dfdfb1cd 100644 --- a/frontend/src/components/TopBar/ApplicationMenu.tsx +++ b/frontend/src/components/TopBar/ApplicationMenu.tsx @@ -13,7 +13,6 @@ import Box from '@mui/system/Box'; import {useAppSelector} from 'store/hooks'; import {AuthContext, IAuthContext} from 'react-oauth2-code-pkce'; -// Let's import pop-ups only once they are opened. const ChangelogDialog = React.lazy(() => import('./PopUps/ChangelogDialog')); const ImprintDialog = React.lazy(() => import('./PopUps/ImprintDialog')); const PrivacyPolicyDialog = React.lazy(() => import('./PopUps/PrivacyPolicyDialog')); diff --git a/frontend/src/components/shared/ConfirmDialog.tsx b/frontend/src/components/shared/ConfirmDialog.tsx index 4a4f9d2c..73329540 100644 --- a/frontend/src/components/shared/ConfirmDialog.tsx +++ b/frontend/src/components/shared/ConfirmDialog.tsx @@ -1,13 +1,12 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import React from 'react'; import Box from '@mui/material/Box'; import Button from '@mui/material/Button'; import Dialog from '@mui/material/Dialog'; import Divider from '@mui/material/Divider'; import Typography from '@mui/material/Typography'; -import {useTheme} from '@mui/material/styles'; +import React from 'react'; export interface ConfirmDialogProps { /** Whether the dialog should be open or not. */ @@ -64,21 +63,19 @@ export interface ConfirmDialogProps { * } * ``` */ -export default function ConfirmDialog(props: ConfirmDialogProps): JSX.Element { - const theme = useTheme(); - +export default function ConfirmDialog(props: ConfirmDialogProps) { return ( {props.title} - + {props.text} + - diff --git a/frontend/src/components/shared/HeatMap/Legend.ts b/frontend/src/components/shared/HeatMap/Legend.ts new file mode 100644 index 00000000..33b9e3ed --- /dev/null +++ b/frontend/src/components/shared/HeatMap/Legend.ts @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {useState, useLayoutEffect} from 'react'; +import {HeatLegend, IHeatLegendSettings} from '@amcharts/amcharts5'; +import * as am5 from '@amcharts/amcharts5'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; + +export default function useHeatLegend( + root: Root | null, + settings: IHeatLegendSettings, + initializer?: (legend: HeatLegend) => void +): HeatLegend | null { + const [legend, setLegend] = useState(); + + useLayoutEffect(() => { + if (!root) { + return; + } + const newLegend = root.container.children.push(am5.HeatLegend.new(root, settings)); + + setLegend(newLegend); + + if (initializer) { + initializer(newLegend); + } + + return () => { + newLegend.dispose(); + }; + }, [root, settings, initializer]); + + return legend ?? null; +} diff --git a/frontend/src/components/shared/HeatMap/Map.ts b/frontend/src/components/shared/HeatMap/Map.ts new file mode 100644 index 00000000..be7ced78 --- /dev/null +++ b/frontend/src/components/shared/HeatMap/Map.ts @@ -0,0 +1,36 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {useState, useLayoutEffect} from 'react'; +import * as am5map from '@amcharts/amcharts5/map'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; +import {MapChart} from '@amcharts/amcharts5/map'; + +export default function useMapChart( + root: Root | null, + settings: am5map.IMapChartSettings | null, + initializer?: (chart: MapChart) => void +): MapChart | null { + const [chart, setChart] = useState(); + + useLayoutEffect(() => { + if (!root || !settings) { + return; + } + + const newChart = am5map.MapChart.new(root, settings); + root.container.children.push(newChart); + + setChart(newChart); + + if (initializer) { + initializer(newChart); + } + + return () => { + newChart.dispose(); + }; + }, [root, settings, initializer]); + + return chart ?? null; +} diff --git a/frontend/src/components/shared/HeatMap/Polygon.ts b/frontend/src/components/shared/HeatMap/Polygon.ts new file mode 100644 index 00000000..5f820e37 --- /dev/null +++ b/frontend/src/components/shared/HeatMap/Polygon.ts @@ -0,0 +1,36 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {useLayoutEffect, useState} from 'react'; +import * as am5map from '@amcharts/amcharts5/map'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; + +export default function usePolygonSeries( + root: Root | null, + chart: am5map.MapChart | null, + settings: am5map.IMapPolygonSeriesSettings | null, + initializer?: (polygon: am5map.MapPolygonSeries) => void +): am5map.MapPolygonSeries | null { + const [polygon, setPolygon] = useState(); + + useLayoutEffect(() => { + if (!root || !chart || !settings) { + return; + } + + const newPolygonSeries = chart.series.push(am5map.MapPolygonSeries.new(root, settings)); + + if (initializer) { + initializer(newPolygonSeries); + } + + setPolygon(newPolygonSeries); + + return () => { + chart.series.removeValue(newPolygonSeries); + newPolygonSeries.dispose(); + }; + }, [root, settings, initializer, chart]); + + return polygon ?? null; +} diff --git a/frontend/src/components/shared/HeatMap/Zoom.ts b/frontend/src/components/shared/HeatMap/Zoom.ts new file mode 100644 index 00000000..2c114064 --- /dev/null +++ b/frontend/src/components/shared/HeatMap/Zoom.ts @@ -0,0 +1,35 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {useState, useLayoutEffect} from 'react'; +import * as am5map from '@amcharts/amcharts5/map'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; + +export default function useZoomControl( + root: Root | null, + settings: am5map.IZoomControlSettings, + initializer?: (zoom: am5map.ZoomControl) => void +): am5map.ZoomControl | null { + const [zoom, setZoom] = useState(); + + useLayoutEffect(() => { + if (!root) { + return; + } + + const newZoom = am5map.ZoomControl.new(root, settings); + + if (initializer) { + initializer(newZoom); + } + + setZoom(newZoom); + + return () => { + newZoom.removeAll(); + newZoom.dispose(); + }; + }, [root, settings, initializer]); + + return zoom ?? null; +} diff --git a/frontend/src/components/shared/LineChart/AxisRange.ts b/frontend/src/components/shared/LineChart/AxisRange.ts new file mode 100644 index 00000000..59efb03b --- /dev/null +++ b/frontend/src/components/shared/LineChart/AxisRange.ts @@ -0,0 +1,48 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {useLayoutEffect} from 'react'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; +import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; +import {AxisRenderer} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRenderer'; +import {DateAxis, IDateAxisDataItem} from '@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis'; +import {IGridSettings} from '@amcharts/amcharts5/.internal/charts/xy/axes/Grid'; +import {IGraphicsSettings} from '@amcharts/amcharts5/.internal/core/render/Graphics'; +import {IAxisLabelSettings} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisLabel'; + +export default function useDateAxisRange( + settings: { + data?: IDateAxisDataItem; + grid?: Partial; + axisFill?: Partial; + label?: Partial; + }, + root: Root | null, + chart: XYChart | null, + xAxis: DateAxis | null +) { + useLayoutEffect(() => { + if (!chart || !root || !xAxis || !settings.data) { + return; + } + + const rangeDataItem = xAxis.makeDataItem(settings.data); + const range = xAxis.createAxisRange(rangeDataItem); + + if (settings.grid) { + range.get('grid')?.setAll(settings.grid); + } + + if (settings.axisFill) { + range.get('axisFill')?.setAll(settings.axisFill); + } + + if (settings.label) { + range.get('label')?.setAll(settings.label); + } + + return () => { + xAxis?.axisRanges.removeValue(range); + }; + }, [chart, root, settings.axisFill, settings.data, settings.grid, settings.label, xAxis]); +} diff --git a/frontend/src/components/shared/LineChart/Chart.ts b/frontend/src/components/shared/LineChart/Chart.ts new file mode 100644 index 00000000..fed2da7b --- /dev/null +++ b/frontend/src/components/shared/LineChart/Chart.ts @@ -0,0 +1,35 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {IXYChartSettings, XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; +import {useLayoutEffect, useState} from 'react'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; + +export default function useXYChart( + root: Root | null, + settings: IXYChartSettings, + initializer?: (chart: XYChart) => void +): XYChart | null { + const [chart, setChart] = useState(); + + useLayoutEffect(() => { + if (!root) { + return; + } + + const newChart = XYChart.new(root, settings); + root.container.children.push(newChart); + setChart(newChart); + + if (initializer) { + initializer(newChart); + } + + return () => { + root.container.children.removeValue(newChart); + newChart.dispose(); + }; + }, [root, settings, initializer]); + + return chart ?? null; +} diff --git a/frontend/src/components/shared/LineChart/DateAxis.ts b/frontend/src/components/shared/LineChart/DateAxis.ts new file mode 100644 index 00000000..cd82f0ea --- /dev/null +++ b/frontend/src/components/shared/LineChart/DateAxis.ts @@ -0,0 +1,49 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; +import {DateAxis, IDateAxisSettings} from '@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis'; +import {useLayoutEffect, useState} from 'react'; +import {AxisRenderer} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRenderer'; +import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; +import {AxisRendererX} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererX'; +import {AxisRendererY} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererY'; + +export default function useDateAxis( + root: Root | null, + chart: XYChart | null, + settings: IDateAxisSettings | null, + initializer?: (axis: DateAxis) => void +): DateAxis | null { + const [axis, setAxis] = useState>(); + + useLayoutEffect(() => { + if (!root || !chart || !settings) return; + + const newAxis = DateAxis.new(root, settings); + setAxis(newAxis); + if (settings.renderer instanceof AxisRendererX) { + chart.xAxes.push(newAxis); + } else if (settings.renderer instanceof AxisRendererY) { + chart.yAxes.push(newAxis); + } else { + console.warn('Could not determine which chart axis to attach to!'); + } + + if (initializer) { + initializer(newAxis); + } + + return () => { + if (settings.renderer instanceof AxisRendererX) { + chart.xAxes.removeValue(newAxis); + } else if (settings.renderer instanceof AxisRendererY) { + chart.yAxes.removeValue(newAxis); + } + + newAxis.dispose(); + }; + }, [root, chart, settings, initializer]); + + return axis ?? null; +} diff --git a/frontend/src/components/shared/LineChart/Filter.ts b/frontend/src/components/shared/LineChart/Filter.ts new file mode 100644 index 00000000..ca733071 --- /dev/null +++ b/frontend/src/components/shared/LineChart/Filter.ts @@ -0,0 +1,43 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {useCallback, useLayoutEffect} from 'react'; +import {ISpritePointerEvent} from '@amcharts/amcharts5'; +import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; +import {dateToISOString} from '../../../util/util'; +import {DateAxis} from '@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis'; +import {AxisRenderer} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRenderer'; + +export function useDateSelectorFilter( + chart: XYChart | null, + xAxis: DateAxis | null, + setSelectedDate: (date: string) => void +) { + const setDateCallback = useCallback( + (ev: ISpritePointerEvent & {type: 'click'; target: XYChart}) => { + // Get date from axis position from cursor position + const date = xAxis?.positionToDate( + xAxis.toAxisPosition(ev.target.get('cursor')?.getPrivate('positionX') as number) + ); + + if (date) { + // Remove time information to only have a date + date.setHours(0, 0, 0, 0); + // Set date in store + setSelectedDate(dateToISOString(date)); + } + }, + [xAxis, setSelectedDate] + ); + + useLayoutEffect(() => { + if (!chart || chart.isDisposed()) { + return; + } + const event = chart.events.on('click', setDateCallback); + + return () => { + event.dispose(); + }; + }, [chart, setDateCallback]); +} diff --git a/frontend/src/components/shared/LineChart/LineSeries.ts b/frontend/src/components/shared/LineChart/LineSeries.ts new file mode 100644 index 00000000..5d74b321 --- /dev/null +++ b/frontend/src/components/shared/LineChart/LineSeries.ts @@ -0,0 +1,58 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 +import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; +import {ILineSeriesSettings, LineSeries} from '@amcharts/amcharts5/.internal/charts/xy/series/LineSeries'; +import {useLayoutEffect, useState} from 'react'; +export function useLineSeriesList( + root: Root | null, + chart: XYChart | null, + settings: Array, + initializer?: (series: LineSeries, i: number) => void +) { + const [series, setSeries] = useState>(); + + useLayoutEffect(() => { + if ( + !root || + !chart || + settings.length === 0 || + chart.isDisposed() || + chart.series.isDisposed() || + root.isDisposed() + ) { + return; + } + + if (chart.series.length > 0 && !chart.isDisposed()) chart.series.clear(); + + const seriesList: Array = []; + + for (let i = 0; i < settings.length; i++) { + const setting = settings[i]; + + if (setting.xAxis.isDisposed()) { + continue; + } + + const newSeries = LineSeries.new(root, setting); + seriesList.push(newSeries); + + chart.series.push(newSeries); + + if (initializer) { + initializer(newSeries, i); + } + } + + setSeries(seriesList); + + return () => { + if (!chart.isDisposed()) { + chart.series.clear(); + } + }; + }, [chart, initializer, root, settings]); + + return series ?? null; +} diff --git a/frontend/src/components/shared/LineChart/ValueAxis.ts b/frontend/src/components/shared/LineChart/ValueAxis.ts new file mode 100644 index 00000000..c6f4c58f --- /dev/null +++ b/frontend/src/components/shared/LineChart/ValueAxis.ts @@ -0,0 +1,50 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; +import {IValueAxisSettings} from '@amcharts/amcharts5/xy'; +import {ValueAxis} from '@amcharts/amcharts5/.internal/charts/xy/axes/ValueAxis'; +import {useLayoutEffect, useState} from 'react'; +import {AxisRenderer} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRenderer'; +import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; +import {AxisRendererX} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererX'; +import {AxisRendererY} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererY'; + +export default function useValueAxis( + root: Root | null, + chart: XYChart | null, + settings: IValueAxisSettings | null, + initializer?: (axis: ValueAxis) => void +): ValueAxis | null { + const [axis, setAxis] = useState>(); + + useLayoutEffect(() => { + if (!root || !chart || !settings) return; + + const newAxis = ValueAxis.new(root, settings); + setAxis(newAxis); + if (settings.renderer instanceof AxisRendererX) { + chart.xAxes.push(newAxis); + } else if (settings.renderer instanceof AxisRendererY) { + chart.yAxes.push(newAxis); + } else { + console.warn('Could not determine which chart axis to attach to!'); + } + + if (initializer) { + initializer(newAxis); + } + + return () => { + if (settings.renderer instanceof AxisRendererX) { + chart.xAxes.removeValue(newAxis); + } else if (settings.renderer instanceof AxisRendererY) { + chart.yAxes.removeValue(newAxis); + } + + newAxis.dispose(); + }; + }, [root, chart, settings, initializer]); + + return axis ?? null; +} diff --git a/frontend/src/components/shared/Root.ts b/frontend/src/components/shared/Root.ts new file mode 100644 index 00000000..69db1567 --- /dev/null +++ b/frontend/src/components/shared/Root.ts @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {IRootSettings, Root} from '@amcharts/amcharts5/.internal/core/Root'; +import {useLayoutEffect, useState} from 'react'; + +export default function useRoot( + id: string | HTMLElement, + settings?: IRootSettings, + initializer?: (root: Root) => void +): Root | null { + const [root, setRoot] = useState(); + + useLayoutEffect(() => { + const newRoot = Root.new(id, settings); + setRoot(newRoot); + + if (initializer) { + initializer(newRoot); + } + + return () => { + newRoot.dispose(); + }; + }, [id, settings, initializer]); + + return root ?? null; +} diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index e63346ab..d028bbe8 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -3,7 +3,6 @@ import {createRoot} from 'react-dom/client'; import React from 'react'; - import App from './App'; import './util/i18n'; diff --git a/frontend/src/store/DataSelectionSlice.ts b/frontend/src/store/DataSelectionSlice.ts index 72ea0bbd..d8f11f24 100644 --- a/frontend/src/store/DataSelectionSlice.ts +++ b/frontend/src/store/DataSelectionSlice.ts @@ -19,28 +19,30 @@ export type AGS = string; * IMPORTANT: ALL NEW ADDITIONS MUST BE NULLABLE TO ENSURE EXISTING CACHES DOESN'T BREAK ON UPDATES! */ export interface DataSelection { - district: {ags: AGS; name: string; type: string}; + district: { + ags: AGS; + name: string; + type: string; + }; /** The current date in the store. Must be an ISO 8601 date cutoff at time (YYYY-MM-DD) */ date: string | null; scenario: number | null; compartment: string | null; compartmentsExpanded: boolean | null; activeScenarios: number[] | null; - simulationStart: string | null; minDate: string | null; maxDate: string | null; - groupFilters: Dictionary | null; + groupFilters: Dictionary; } const initialState: DataSelection = { district: {ags: '00000', name: '', type: ''}, date: null, - scenario: null, + scenario: 0, compartment: null, compartmentsExpanded: null, activeScenarios: [0], - simulationStart: null, minDate: null, maxDate: null, @@ -54,6 +56,13 @@ export const DataSelectionSlice = createSlice({ name: 'DataSelection', initialState, reducers: { + setActiveScenario(state, action: PayloadAction) { + if (action.payload) state.activeScenarios = action.payload; + else state.activeScenarios = null; + }, + setGroupFilters(state, action: PayloadAction>) { + state.groupFilters = action.payload; + }, selectDistrict(state, action: PayloadAction<{ags: AGS; name: string; type: string}>) { state.district = action.payload; }, @@ -96,17 +105,6 @@ export const DataSelectionSlice = createSlice({ selectScenario(state, action: PayloadAction) { state.scenario = action.payload; }, - toggleScenario(state, action: PayloadAction) { - if (!state.activeScenarios) { - state.activeScenarios = [0]; - } - const index = state.activeScenarios.indexOf(action.payload); - if (index == -1) { - state.activeScenarios.push(action.payload); - } else { - state.activeScenarios.splice(index, 1); - } - }, selectCompartment(state, action: PayloadAction) { state.compartment = action.payload; }, @@ -141,6 +139,8 @@ export const DataSelectionSlice = createSlice({ export const { selectDistrict, + setActiveScenario, + setGroupFilters, selectDate, previousDay, nextDay, @@ -152,7 +152,6 @@ export const { setGroupFilter, deleteGroupFilter, toggleGroupFilter, - toggleScenario, } = DataSelectionSlice.actions; export default DataSelectionSlice.reducer; diff --git a/frontend/src/store/services/caseDataApi.ts b/frontend/src/store/services/caseDataApi.ts index 9bf94096..6715daed 100644 --- a/frontend/src/store/services/caseDataApi.ts +++ b/frontend/src/store/services/caseDataApi.ts @@ -6,8 +6,8 @@ import {CaseDataByDate, CaseDataByNode} from '../../types/caseData'; import {SimulationDataByNode} from '../../types/scenario'; /* [CDtemp-begin] */ import cologneData from '../../../assets/stadtteile_cologne_list.json'; -import {District} from 'types/cologneDisticts'; import {deepCopy} from '../../util/util'; +import {District} from 'types/cologneDistricts'; /* [CDtemp-end] */ export const caseDataApi = createApi({ @@ -144,7 +144,6 @@ export const caseDataApi = createApi({ // return error if any occurs if (queryResult.error) return {error: queryResult.error}; const result = queryResult.data as SimulationDataByNode; - // if node was cologne district apply weight if (cologneDistrict) { const distWeight = (cologneData as unknown as Array).find( diff --git a/frontend/src/store/services/groupApi.ts b/frontend/src/store/services/groupApi.ts index 8c9e5b8e..fa0fb77c 100644 --- a/frontend/src/store/services/groupApi.ts +++ b/frontend/src/store/services/groupApi.ts @@ -6,7 +6,7 @@ import {createApi, fetchBaseQuery} from '@reduxjs/toolkit/query/react'; import {GroupFilter, GroupResponse} from 'types/group'; /* [CDtemp-begin] */ import cologneData from '../../../assets/stadtteile_cologne_list.json'; -import {District} from '../../types/cologneDisticts'; +import {District} from 'types/cologneDistricts'; /* [CDtemp-end] */ export const groupApi = createApi({ @@ -26,7 +26,71 @@ export const groupApi = createApi({ }, }), - getMultipleGroupFilterData: builder.query, PostFilter[]>({ + getMultipleGroupFilterData: builder.query>, PostFilters>({ + async queryFn(arg, _queryApi, _extraOptions, fetchWithBQ) { + const result: Array> = []; + for (const id of arg.ids) { + if (arg.groupFilterList) { + const groupResponse: Dictionary = {}; + for (const groupFilter of Object.values(arg.groupFilterList).filter( + (groupFilter) => groupFilter.isVisible + )) { + /* [CDtemp-begin] */ + let node = ''; + let cologneDistrict = ''; + + if (arg.node.length > 5) { + node = arg.node.slice(0, 5); + cologneDistrict = arg.node.slice(-3); + } else { + node = arg.node; + } + /* [CDtemp-end] */ + + const singleResult = await fetchWithBQ({ + url: + `simulation/${id}/${ + // [CDtemp] post.node + node + }/?all` + + (arg.day ? `&day=${arg.day}` : '') + + (arg.compartment ? `&compartments=${arg.compartment}` : ''), + method: 'POST', + body: {groups: groupFilter.groups}, + }); + + if (singleResult.error) return {error: singleResult.error}; + + groupResponse[groupFilter.name] = singleResult.data as GroupResponse; + + /* [CDtemp-begin] */ + // adjust data if it is for a city district + if (cologneDistrict) { + // find weight for city district + const weight = (cologneData as unknown as Array).find( + (dist) => dist.Stadtteil_ID === cologneDistrict + )!.Population_rel; + // go thru results + groupResponse[groupFilter.name].results = groupResponse[groupFilter.name].results.map( + ({compartments, day, name}) => { + // loop thru compartments and apply weight + Object.keys(compartments).forEach((compName) => { + compartments[compName] *= weight; + }); + return {compartments, day, name}; + } + ); + } + /* [CDtemp-end] */ + } + result.push(groupResponse); + } + } + return {data: result}; + }, + }), + + getMultipleGroupFilterDataLineChart: builder.query, PostFilter[]>({ async queryFn(arg, _queryApi, _extraOptions, fetchWithBQ) { const result: Dictionary = {}; for (const post of arg) { @@ -134,44 +198,115 @@ export const groupApi = createApi({ }), }); +/** + * Represents the structure of a post filter. + */ export interface PostFilter { + /** The unique identifier. */ id: number; + + /** The node associated. */ node: string; + + /** The group filter associated. */ groupFilter: GroupFilter; + + /** The day associated. Optional. */ + day?: string; + + /** The compartment associated. Optional. */ + compartment?: string; +} + +/** + * Represents the structure of multiple post filters. + */ +export interface PostFilters { + /** The array of unique identifiers. */ + ids: number[]; + + /** The node associated */ + node: string; + + /** The dictionary of group filters associated */ + groupFilterList: Dictionary | undefined; + + /** The day associated. Optional. */ day?: string; + + /** The compartment associated. Optional. */ compartment?: string; } +/** + * Represents the structure of a group category. + */ export interface GroupCategory { + /** The key of the group category. */ key: string; + + /** The name of the group category. */ name: string; + + /** The description of the group category. */ description: string; } -interface GroupCategories { +/** + * Represents the structure of multiple group categories. + */ +export interface GroupCategories { + /** The count of group categories. */ count: number; + + /** The next group category. Null if there is no next group category. */ next: null; + + /** The previous group category. Null if there is no previous group category. */ previous: null; - results: Array | null; + + /** The array of group categories. */ + results: Array; } +/** + * Represents the structure of a group subcategory. + */ export interface GroupSubcategory { + /** The key of the group subcategory. */ key: string; + + /** The name of the group subcategory. */ name: string; + + /** The description of the group subcategory. */ description: string; + + /** The category of the group subcategory. */ category: string; } -interface GroupSubcategories { +/** + * Represents the structure of multiple group subcategories. + */ +export interface GroupSubcategories { + /** The count of group subcategories. */ count: number; + + /** The next group subcategory. Null if there is no next group subcategory. */ next: null; + + /** The previous group subcategory. Null if there is no previous group subcategory. */ previous: null; - results: Array | null; + + /** The array of group subcategories. */ + results: Array; } export const { useGetGroupCategoriesQuery, useGetGroupSubcategoriesQuery, useGetSingleGroupFilterDataQuery, + useGetMultipleGroupFilterDataLineChartQuery, useGetMultipleGroupFilterDataQuery, } = groupApi; diff --git a/frontend/src/store/services/scenarioApi.ts b/frontend/src/store/services/scenarioApi.ts index 49921db1..30af11a6 100644 --- a/frontend/src/store/services/scenarioApi.ts +++ b/frontend/src/store/services/scenarioApi.ts @@ -12,7 +12,7 @@ import { } from '../../types/scenario'; /* [CDtemp-begin] */ import cologneData from '../../../assets/stadtteile_cologne_list.json'; -import {District} from '../../types/cologneDisticts'; +import {District} from 'types/cologneDistricts'; /** Checks if input node is a city district and returns the node to fetch data, and the city distrct suffix if there is one */ function validateDistrictNode(inNode: string): {node: string; cologneDistrict?: string} { @@ -154,6 +154,34 @@ export const scenarioApi = createApi({ }, }), + getMultipleSimulationEntry: builder.query({ + async queryFn(arg, _queryApi, _extraOptions, fetchWithBQ) { + const day = arg.day ? `&day=${arg.day}` : ''; + const groups = arg.groups && arg.groups.length > 0 ? `&groups=${arg.groups.join(',')}` : '&groups=total'; + + const result: SimulationDataByNode[] = []; + /* [CDtemp-begin] */ + const {node, cologneDistrict} = validateDistrictNode(arg.node); + /* [CDtemp-end] */ + for (const id of arg.ids) { + const fullResult = await fetchWithBQ( + `simulation/${id}/${ + // [CDtemp] arg.node + node + }/?all${day}${groups}` + ); + if (fullResult.error) return {error: fullResult.error}; + // [CDtemp] const data = currResult.data as SimulationDataByNode; + /* [CDtemp-begin] */ + const data = modifyDistrictResults(cologneDistrict, fullResult.data as SimulationDataByNode); + + /* [CDtemp-end] */ + result[id] = data; + } + return {data: result}; + }, + }), + getMultipleSimulationDataByNode: builder.query({ async queryFn(arg, _queryApi, _extraOptions, fetchWithBQ) { const groups = arg.groups && arg.groups.length > 0 ? `&groups=${arg.groups.join(',')}` : '&groups=total'; @@ -344,6 +372,13 @@ interface SingleSimulationEntryParameters { groups: Array | null; } +interface MultipleSimulationEntryParameters { + ids: number[]; + node: string; + day: string; + groups: Array | null; +} + interface MultipleSimulationDataByNodeParameters { ids: number[]; node: string; @@ -358,6 +393,7 @@ export const { useGetSimulationDataByDateQuery, useGetSimulationDataByNodeQuery, useGetSingleSimulationEntryQuery, + useGetMultipleSimulationEntryQuery, useGetMultipleSimulationDataByNodeQuery, useGetPercentileDataQuery, useGetScenarioParametersQuery, diff --git a/frontend/src/types/card.ts b/frontend/src/types/card.ts new file mode 100644 index 00000000..4c18ff04 --- /dev/null +++ b/frontend/src/types/card.ts @@ -0,0 +1,26 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {Dictionary} from 'util/util'; + +/** + * Represents the value of a card. + */ +export interface CardValue { + /** A dictionary of compartment values associated with the card.*/ + compartmentValues: Dictionary | null; + + /** A dictionary of start values */ + startValues: Dictionary | null; +} + +/** + * Represents the filter value for a card. + */ +export interface FilterValue { + /** The filter title. */ + filteredTitle: string; + + /** The filtered values. */ + filteredValues: Dictionary | null; +} diff --git a/frontend/src/types/cologneDisticts.ts b/frontend/src/types/cologneDistricts.ts similarity index 100% rename from frontend/src/types/cologneDisticts.ts rename to frontend/src/types/cologneDistricts.ts diff --git a/frontend/src/types/group.ts b/frontend/src/types/group.ts index 35301778..d268d88a 100644 --- a/frontend/src/types/group.ts +++ b/frontend/src/types/group.ts @@ -3,6 +3,9 @@ import {Dictionary} from 'util/util'; +/** + * Represents the response object returned from the server when fetching filtered information. + */ export interface GroupResponse { count: number; next: string | null; @@ -16,9 +19,19 @@ export interface GroupData { name: string; } +/** + * Represents the structure of a filter group. + */ export interface GroupFilter { + /** The unique identifier of the filter group. */ id: string; + + /** The display name of the filter group. */ name: string; + + /** Indicates whether the filter group is visible. */ isVisible: boolean; + + /** The dictionary of field selecte in the editor that it will be used to filter the info */ groups: Dictionary; } diff --git a/frontend/src/types/heatmapLegend.ts b/frontend/src/types/heatmapLegend.ts index 35244a0d..f5ae3b8e 100644 --- a/frontend/src/types/heatmapLegend.ts +++ b/frontend/src/types/heatmapLegend.ts @@ -1,11 +1,32 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 +/** + * Represents a heatmap legend. + */ export interface HeatmapLegend { + /** + * The name of the legend. + */ name: string; + + /** + * Indicates whether the legend values are normalized. + */ isNormalized: boolean; + + /** + * The steps in the legend, each containing a color and a corresponding value. + */ steps: { + /** + * The color associated with the value. + */ color: string; + + /** + * The value associated with the color. + */ value: number; }[]; } diff --git a/frontend/src/types/lineChart.ts b/frontend/src/types/lineChart.ts new file mode 100644 index 00000000..3231cf99 --- /dev/null +++ b/frontend/src/types/lineChart.ts @@ -0,0 +1,79 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {Color} from '@amcharts/amcharts5/.internal/core/util/Color'; + +/** + * Represents the data for a line chart. + */ +export interface LineChartData { + /** + * The values for the line chart. + */ + values: {day: string; value: number | number[]}[]; + + /** + * The name of the line chart. + */ + name?: string; + + /** + * The ID of the series. + */ + serieId: string | number; + + /** + * The field used for the Y-axis value. + */ + valueYField: string | number; + + /** + * The field used for the open Y-axis value. + */ + openValueYField?: string | number; + + /** + * Indicates whether the line chart is visible. + */ + visible?: boolean; + + /** + * The tooltip text for the line chart. + */ + tooltipText?: string; + + /** + * The stroke properties for the line chart. + */ + stroke: { + /** + * The color of the stroke. + */ + color?: Color; + + /** + * The width of the stroke. + */ + strokeWidth?: number; + + /** + * The dash array for the stroke. + */ + strokeDasharray?: number[]; + }; + + /** + * The fill color for the line chart. + */ + fill?: Color; + + /** + * The opacity of the fill color. + */ + fillOpacity?: number; + + /** + * The ID of the parent element. + */ + parentId?: string | number; +} diff --git a/frontend/src/types/localization.ts b/frontend/src/types/localization.ts new file mode 100644 index 00000000..f3a70350 --- /dev/null +++ b/frontend/src/types/localization.ts @@ -0,0 +1,26 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +/** + * Represents the Localization interface for providing translation and also formattation. + */ +export interface Localization { + /** + * A function that formats a number value as a string. + * @param value - The number value to be formatted. + * @returns The formatted number as a string. + */ + formatNumber?: (value: number) => string; + + /** + * A custom language string. + */ + customLang?: string; + + /** + * An object that contains key-value pairs for overriding specific localization strings. + */ + overrides?: { + [key: string]: string; + }; +} diff --git a/frontend/src/types/scenario.ts b/frontend/src/types/scenario.ts index af3cec92..8504159e 100644 --- a/frontend/src/types/scenario.ts +++ b/frontend/src/types/scenario.ts @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 +import {Scenario} from 'store/ScenarioSlice'; import {Dictionary} from 'util/util'; export interface SimulationModels { @@ -42,3 +43,10 @@ export interface SimulationDataByDate { export interface SimulationDataByNode { results: Array<{day: string; compartments: Dictionary}>; } + +export interface ScenarioList { + scenarios: { + [key: number]: Scenario; + }; + compartments: string[]; +} diff --git a/frontend/src/util/Theme.ts b/frontend/src/util/Theme.ts index ea9ba5eb..8753df61 100644 --- a/frontend/src/util/Theme.ts +++ b/frontend/src/util/Theme.ts @@ -3,7 +3,7 @@ // add List Element typography using module augmentation import React from 'react'; -import {createTheme, Theme} from '@mui/material/styles'; +import {Theme, createTheme} from '@mui/material/styles'; declare module '@mui/material/styles' { interface TypographyVariants { diff --git a/frontend/src/util/hooks.ts b/frontend/src/util/hooks.ts index 026fe040..c5711c07 100644 --- a/frontend/src/util/hooks.ts +++ b/frontend/src/util/hooks.ts @@ -101,3 +101,21 @@ export function useEffectDebugger(effectHook: {(): void}, dependencies: Array(value: T): T { + const ref = useRef(); + + if (!ref.current) { + ref.current = value; + } + + return ref.current; +} diff --git a/frontend/src/util/util.ts b/frontend/src/util/util.ts index 9928ac11..5aff6863 100644 --- a/frontend/src/util/util.ts +++ b/frontend/src/util/util.ts @@ -26,9 +26,27 @@ export function dateToISOString(date: Date | number): string { return `${year}-${month}-${day}`; } +/** + * Converts a hexadecimal color code to an RGB color code. + * @param hex - The hexadecimal color code to convert. + * @param alpha - The alpha value for the RGB color code (optional). + * @returns The RGB color code. + */ +export function hexToRGB(hex: string, alpha: number): string { + const r = parseInt(hex.slice(1, 3), 16), + g = parseInt(hex.slice(3, 5), 16), + b = parseInt(hex.slice(5, 7), 16); + + if (alpha) { + return 'rgba(' + r.toString() + ', ' + g.toString() + ', ' + b.toString() + ', ' + alpha.toString() + ')'; + } else { + return 'rgb(' + r.toString() + ', ' + g.toString() + ', ' + b.toString() + ')'; + } +} + /** * This is a type that can be used to describe object maps with a clear key/value structure. E.g: - * const ages: Dictionary = {: + * const ages: Dictionary = { * Aragorn: 87, * Arwen: 2901, * Bilbo: 129,