From 5a4184d2cca2ed73d5113de2202d5bd6c8ef1fd6 Mon Sep 17 00:00:00 2001
From: Sherjeel Shabih <sshabih@physik.hu-berlin.de>
Date: Fri, 11 Aug 2023 10:13:54 +0000
Subject: [PATCH] Improved styling and navigation when browsing nexus files

Changelog: Changed
---
 Dockerfile                                    |   1 -
 MANIFEST.in                                   |   6 +-
 dependencies/nomad-remote-tools-hub           |   2 +-
 dependencies/parsers/nexus                    |   2 +-
 gui/package.json                              |   5 +-
 gui/src/components/archive/ArchiveBrowser.js  |   6 +-
 gui/src/components/archive/Browser.js         |  11 +-
 .../components/entry/properties/NexusCard.js  |  11 +-
 gui/src/components/visualization/H5Web.css    |  38 ++
 gui/src/components/visualization/H5Web.js     |  14 +-
 gui/tests/artifacts.js                        |  41 +-
 gui/yarn.lock                                 | 532 +++++++-----------
 .../metainfo/eln/nexus_data_converter.py      |   4 +-
 nomad/metainfo/metainfo.py                    |   6 +-
 nomad/metainfo/nexus.py                       |   2 +-
 nomad/parsing/nexus/nexus.py                  |   2 +-
 pyproject.toml                                |   2 +-
 requirements-dev.txt                          | 180 +++---
 requirements.txt                              | 160 +++---
 tests/metainfo/test_metainfo.py               |  12 +
 20 files changed, 473 insertions(+), 564 deletions(-)
 create mode 100644 gui/src/components/visualization/H5Web.css

diff --git a/Dockerfile b/Dockerfile
index 62ba6bcdda..cdc439cea1 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -204,7 +204,6 @@ WORKDIR /app
 # transfer installed packages from the build stage
 COPY --chown=nomad:1000 scripts/run.sh .
 COPY --chown=nomad:1000 nomad/jupyterhub_config.py ./nomad/jupyterhub_config.py
-COPY --chown=nomad:1000 dependencies/nomad-remote-tools-hub/tools.json ./dependencies/nomad-remote-tools-hub/tools.json
 
 COPY --chown=nomad:1000 --from=dev_python /app/examples/data/uploads /app/examples/data/uploads
 COPY --chown=nomad:1000 --from=builder /usr/local/lib/python3.9/site-packages /usr/local/lib/python3.9/site-packages
diff --git a/MANIFEST.in b/MANIFEST.in
index 08b58091f3..6c5be2c1d0 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -21,8 +21,8 @@ recursive-include dependencies/parsers/eelsdb/eelsdbparser *.py nomad_plugin.yam
 include dependencies/parsers/electronic/README.md
 recursive-include dependencies/parsers/electronic/electronicparsers *.py *.json nomad_plugin.yaml
 include dependencies/parsers/nexus/README.md
-recursive-include dependencies/parsers/nexus/nexusutils *.py
-include dependencies/parsers/nexus/nexusutils/dataconverter/readers/hall/enum_map.json
-recursive-include dependencies/parsers/nexus/nexusutils/definitions *.xml *.xsd
+recursive-include dependencies/parsers/nexus/pynxtools *.py
+include dependencies/parsers/nexus/pynxtools/dataconverter/readers/hall/enum_map.json
+recursive-include dependencies/parsers/nexus/pynxtools/definitions *.xml *.xsd
 include dependencies/parsers/workflow/README.md
 recursive-include dependencies/parsers/workflow/workflowparsers *.py nomad_plugin.yaml
diff --git a/dependencies/nomad-remote-tools-hub b/dependencies/nomad-remote-tools-hub
index e2903bf942..e38fe92272 160000
--- a/dependencies/nomad-remote-tools-hub
+++ b/dependencies/nomad-remote-tools-hub
@@ -1 +1 @@
-Subproject commit e2903bf942b6823d6c0ea6d3ff7b3db67df28895
+Subproject commit e38fe9227295581c8811e88950d6b58afeaee2f9
diff --git a/dependencies/parsers/nexus b/dependencies/parsers/nexus
index e7fa508ed8..8c031e9c22 160000
--- a/dependencies/parsers/nexus
+++ b/dependencies/parsers/nexus
@@ -1 +1 @@
-Subproject commit e7fa508ed8ead8d40687db3676a3c3abc37129d2
+Subproject commit 8c031e9c22baa85e579ea47be62895827d17f204
diff --git a/gui/package.json b/gui/package.json
index 3d81a7fad2..a9919e35bc 100644
--- a/gui/package.json
+++ b/gui/package.json
@@ -9,8 +9,8 @@
     "@date-io/date-fns": "^1.3.13",
     "@fontsource/material-icons": "^4.2.1",
     "@fontsource/titillium-web": "^4.2.2",
-    "@h5web/app": "6.2.0",
-    "@h5web/lib": "6.2.0",
+    "@h5web/app": "8.0.0",
+    "@h5web/lib": "8.0.0",
     "@material-ui/core": "^4.12.4",
     "@material-ui/icons": "^4.11.3",
     "@material-ui/lab": "^4.0.0-alpha.61",
@@ -127,6 +127,7 @@
       "not Android <= 4.4"
     ],
     "development": [
+      ">0.2%",
       "last 1 chrome version",
       "last 1 firefox version",
       "last 1 safari version"
diff --git a/gui/src/components/archive/ArchiveBrowser.js b/gui/src/components/archive/ArchiveBrowser.js
index 0898f7d9f7..505634343f 100644
--- a/gui/src/components/archive/ArchiveBrowser.js
+++ b/gui/src/components/archive/ArchiveBrowser.js
@@ -64,7 +64,7 @@ import { apiBase } from '../../config'
 import { Alert } from '@material-ui/lab'
 import { complex, format } from 'mathjs'
 import ReactJson from 'react-json-view'
-import { range } from 'lodash'
+import { range, isNaN } from 'lodash'
 import { useDataStore, useEntryStoreObj } from '../DataStore'
 import { useEntryStore } from '../entry/EntryContext'
 import ArchiveSearchBar from './ArchiveSearchBar'
@@ -497,7 +497,9 @@ class SectionAdaptor extends ArchiveAdaptor {
     let urlSuffix = index ? `${name}/${index}` : name
     const property = this.def._properties[name] || (name === 'm_attributes' && this.def.attributes.find(attr => attr.name === index))
     let value = this.obj[name] === undefined || this.obj[name] === null ? property?.default : this.obj[name]
+    const text_index = index
     index = parseInt(index)
+    index = isNaN(index) ? text_index : index
     if (index < 0) index = index + value.length
     if (property.m_def === QuantityMDef && quantityUsesFullStorage(property)) {
       value = value[index]
@@ -509,7 +511,7 @@ class SectionAdaptor extends ArchiveAdaptor {
       let subSectionAdaptor
       let subSectionIndex = -1
       if (property.repeats) {
-        subSectionIndex = parseInt(index || 0)
+        subSectionIndex = index || 0
         subSectionAdaptor = await this.adaptorFactory(
           appendDataUrl(this.parsedObjUrl, `${name}/${subSectionIndex}`), value[subSectionIndex], sectionDef)
       } else {
diff --git a/gui/src/components/archive/Browser.js b/gui/src/components/archive/Browser.js
index 5d53cd99f9..2b26c69a70 100644
--- a/gui/src/components/archive/Browser.js
+++ b/gui/src/components/archive/Browser.js
@@ -119,6 +119,10 @@ const useBrowserStyles = makeStyles(theme => ({
     height: '100%',
     overflowY: 'hidden',
     width: 'fit-content'
+  },
+  sideLane: {
+    display: 'flex',
+    height: '100%'
   }
 }))
 export const Browser = React.memo(function Browser({adaptor, form}) {
@@ -191,7 +195,7 @@ export const Browser = React.memo(function Browser({adaptor, form}) {
         lane = {
           index: index,
           key: segment,
-          path: prev ? prev.path + '/' + encodeURI(escapeBadPathChars(segment?.replace(':', '/'))) : rootPath,
+          path: prev ? prev.path + '/' + encodeURI(escapeBadPathChars(segment)) : rootPath,
           next: null,
           prev: prev,
           initialized: false
@@ -313,8 +317,9 @@ export const Browser = React.memo(function Browser({adaptor, form}) {
         </Card>
         </Grid>
         {hdf5Path && hdf5Filename && adaptor?.obj?.metadata?.upload_id && <Grid item md={4} style={{visibility: (hdf5Path == null ? "hidden" : "visible")}}>
-          <Card>
-            <H5Web upload_id={adaptor?.obj?.metadata?.upload_id} filename={hdf5Filename} initialPath={(hdf5Path)} explorerOpen={false}/>
+          <Card className={classes.sideLane}>
+            {/* We use the key prop in the H5Web component here to force re-render on path changes while browsing with the browser. The prop, initialPath, does not re-render the component. */}
+            <H5Web key={hdf5Path} upload_id={adaptor?.obj?.metadata?.upload_id} filename={hdf5Filename} initialPath={hdf5Path} explorerOpen={false}/>
           </Card>
         </Grid>}
       </Grid>
diff --git a/gui/src/components/entry/properties/NexusCard.js b/gui/src/components/entry/properties/NexusCard.js
index 10d27416b6..2491fafd80 100644
--- a/gui/src/components/entry/properties/NexusCard.js
+++ b/gui/src/components/entry/properties/NexusCard.js
@@ -20,14 +20,21 @@
 import React from 'react'
 import PropTypes from 'prop-types'
 import H5Web from '../../visualization/H5Web'
-import { Card } from '@material-ui/core'
+import { Card, makeStyles } from '@material-ui/core'
+
+const useNexusCardStyles = makeStyles(theme => ({
+  root: {
+    height: 500
+  }
+}))
 
 const NexusCard = React.memo(function NexusCard({index}) {
+  const classes = useNexusCardStyles()
   if (index.parser_name !== 'parsers/nexus') {
     return null
   }
   return (
-    <Card style={{height: 500, overflowY: "scroll"}}>
+    <Card className={classes.root}>
       <H5Web upload_id={index.upload_id} filename={index.mainfile} initialPath="/"/>
     </Card>
   )
diff --git a/gui/src/components/visualization/H5Web.css b/gui/src/components/visualization/H5Web.css
new file mode 100644
index 0000000000..d5f33af1ff
--- /dev/null
+++ b/gui/src/components/visualization/H5Web.css
@@ -0,0 +1,38 @@
+._root_sdd7a_1 {
+    --primary: #a2b3f7;
+    --primary-light: #a2b3f7;
+    --primary-lighter: #ffffff;
+    --primary-dark: #2A4CDF;
+    --primary-bg: #ffffff;
+    --primary-light-bg: #ffffff;
+    --primary-dark-bg: #dde2d7;
+    --secondary: #2A4CDF;
+    --secondary-light: #eaedfc;
+    --secondary-lighter: #a2b3f7;
+    --secondary-dark: #2A4CDF;
+    --secondary-dark-15: #1b998b26;
+    --secondary-darker: #0e5846;
+    --secondary-bg: #ffffff;
+    --secondary-light-bg: #ffffff;
+    --monospace: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
+    --sans-serif: -apple-system, BlinkMacSystemFont, "Titillium Web", "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
+    --toolbar-height: 2.875rem;
+    --toolbarBtn-height: 2rem
+}
+
+/* Important for removing ugly scrollbars */
+.reflex-element::-webkit-scrollbar {
+    display: none;
+}
+
+._btnLike_1fvcz_11:hover {
+    background-color: #FDFEFF !important;
+    color: var(--primary-dark) !important
+}
+._btnLike_1fvcz_11 {
+    height: 1.625rem !important;
+    background-color: #FDFEFF !important;
+    border: 1px solid #bdbdbd;
+    box-shadow: #0000001a 0 0 0 1px, #0000001a 0 1px 4px;
+    color: #282828;
+}
\ No newline at end of file
diff --git a/gui/src/components/visualization/H5Web.js b/gui/src/components/visualization/H5Web.js
index da825874ae..cf47436c51 100644
--- a/gui/src/components/visualization/H5Web.js
+++ b/gui/src/components/visualization/H5Web.js
@@ -7,21 +7,13 @@ import { useErrors } from '../errors'
 
 import '@h5web/lib/dist/styles.css'
 import '@h5web/app/dist/styles.css'
-import { makeStyles } from '@material-ui/core'
-
-const useH5WebStyles = makeStyles(theme => ({
-  visualizerContainer: {
-    color: theme.palette.primary.main
-  }
-}))
+import './H5Web.css'
 
 const H5Web = ({upload_id, filename, initialPath, explorerOpen}) => {
   const {api} = useApi()
   const {raiseError} = useErrors()
   const [filepath, setFilepath] = useState(false)
 
-  const styles = useH5WebStyles()
-
   useEffect(() => {
     if (filename && upload_id) {
       if (filename.includes('.yaml') || filename.includes('.yml')) {
@@ -39,16 +31,14 @@ const H5Web = ({upload_id, filename, initialPath, explorerOpen}) => {
 
   if (filepath) {
     return (
-      <div className={styles.visualizerContainer} key={initialPath}>
       <H5GroveProvider
         url={appBase + '/h5grove/'}
         filepath={filepath}
         axiosConfig={{params: {file: filepath, upload_id: upload_id}, headers: {Authorization: "Bearer " + api?.keycloak?.token}}}
       >
-        <App initialPath={initialPath} explorerOpen={explorerOpen}/>
+        <App disableDarkMode initialPath={initialPath} explorerOpen={explorerOpen}/>
 
       </H5GroveProvider>
-      </div>
     )
   }
   return 'Loading...'
diff --git a/gui/tests/artifacts.js b/gui/tests/artifacts.js
index cdd71023c9..f17ef4a74a 100644
--- a/gui/tests/artifacts.js
+++ b/gui/tests/artifacts.js
@@ -56088,6 +56088,7 @@ window.nomadArtifacts = {
                     "apm",
                     "ellips",
                     "em_nion",
+                    "em_om",
                     "em_spctrscpy",
                     "example",
                     "hall",
@@ -56151,9 +56152,13 @@ window.nomadArtifacts = {
                     "NXxnb",
                     "NXxrot",
                     "NXaberration",
-                    "NXaperture",
+                    "NXaberration_model",
+                    "NXaberration_model_ceos",
+                    "NXaberration_model_nion",
+                    "NXadc",
                     "NXaperture_em",
                     "NXapm",
+                    "NXapm_composition_space_results",
                     "NXapm_input_ranging",
                     "NXapm_input_reconstruction",
                     "NXapm_paraprobe_config_clusterer",
@@ -56176,7 +56181,8 @@ window.nomadArtifacts = {
                     "NXapm_paraprobe_results_surfacer",
                     "NXapm_paraprobe_results_tessellator",
                     "NXapm_paraprobe_results_transcoder",
-                    "NXbeam",
+                    "NXbeam_path",
+                    "NXbeam_splitter",
                     "NXcalibration",
                     "NXcg_alpha_complex",
                     "NXcg_cylinder_set",
@@ -56200,6 +56206,7 @@ window.nomadArtifacts = {
                     "NXcg_unit_normal_set",
                     "NXchamber",
                     "NXchemical_composition",
+                    "NXcircuit_board",
                     "NXclustering",
                     "NXcollectioncolumn",
                     "NXcontainer",
@@ -56217,9 +56224,9 @@ window.nomadArtifacts = {
                     "NXcs_profiling_event",
                     "NXcsg",
                     "NXcxi_ptycho",
+                    "NXdac",
                     "NXdeflector",
                     "NXdelocalization",
-                    "NXdetector",
                     "NXdispersion",
                     "NXdispersion_function",
                     "NXdispersion_repeated_parameter",
@@ -56236,26 +56243,17 @@ window.nomadArtifacts = {
                     "NXem_ebsd_conventions",
                     "NXem_ebsd_crystal_structure_model",
                     "NXenergydispersion",
-                    "NXentry",
                     "NXevent_data_em",
                     "NXevent_data_em_set",
                     "NXfabrication",
+                    "NXfiber",
                     "NXgraph_edge_set",
                     "NXgraph_node_set",
                     "NXgraph_root",
                     "NXibeam_column",
-                    "NXimage_set_em",
+                    "NXimage_set",
                     "NXimage_set_em_adf",
-                    "NXimage_set_em_bf",
-                    "NXimage_set_em_bse",
-                    "NXimage_set_em_chamber",
-                    "NXimage_set_em_df",
-                    "NXimage_set_em_diffrac",
-                    "NXimage_set_em_ecci",
                     "NXimage_set_em_kikuchi",
-                    "NXimage_set_em_ronchigram",
-                    "NXimage_set_em_se",
-                    "NXinstrument",
                     "NXinteraction_vol_em",
                     "NXion",
                     "NXisocontour",
@@ -56263,24 +56261,23 @@ window.nomadArtifacts = {
                     "NXlab_electro_chemo_mechanical_preparation",
                     "NXlab_sample_mounting",
                     "NXlens_em",
+                    "NXlens_opt",
                     "NXmagnetic_kicker",
                     "NXmanipulator",
                     "NXmatch_filter",
                     "NXmpes",
                     "NXms",
-                    "NXms_atom_set",
-                    "NXms_crystal_set",
-                    "NXms_dislocation_set",
-                    "NXms_interface_set",
+                    "NXms_feature_set",
                     "NXms_score_config",
                     "NXms_score_results",
                     "NXms_snapshot",
                     "NXms_snapshot_set",
+                    "NXopt",
                     "NXoptical_system_em",
                     "NXorientation_set",
                     "NXpeak",
                     "NXpid",
-                    "NXprocess",
+                    "NXpolarizer_opt",
                     "NXprogram",
                     "NXpulser_apm",
                     "NXpump",
@@ -56289,7 +56286,6 @@ window.nomadArtifacts = {
                     "NXreflectron",
                     "NXregion",
                     "NXregistration",
-                    "NXsample",
                     "NXscanbox_em",
                     "NXsensor_scan",
                     "NXseparator",
@@ -56299,10 +56295,8 @@ window.nomadArtifacts = {
                     "NXsnshisto",
                     "NXsolenoid_magnet",
                     "NXsolid_geometry",
-                    "NXsource",
                     "NXspatial_filter",
-                    "NXspectrum_set_em_auger",
-                    "NXspectrum_set_em_cathodolum",
+                    "NXspectrum_set",
                     "NXspectrum_set_em_eels",
                     "NXspectrum_set_em_xray",
                     "NXspin_rotator",
@@ -56310,6 +56304,7 @@ window.nomadArtifacts = {
                     "NXstage_lab",
                     "NXsubsampling_filter",
                     "NXtransmission",
+                    "NXwaveplate",
                     "NXxpcs",
                     "NXroot"
                   ]
diff --git a/gui/yarn.lock b/gui/yarn.lock
index 8939f364bf..5441482765 100644
--- a/gui/yarn.lock
+++ b/gui/yarn.lock
@@ -1204,40 +1204,40 @@
   resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
   integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
 
-"@h5web/app@6.2.0":
-  version "6.2.0"
-  resolved "https://registry.yarnpkg.com/@h5web/app/-/app-6.2.0.tgz#6bf712f06cee709e30574ec6b558105ba5b40513"
-  integrity sha512-YyGNY5GWwEYVVyaMmb+gjJ/3G0eIhEau5OZHBkgNfTDYGBZs5IiZKTS9mWgLPUVNau55ZFl6SzfdOMU10tXiIw==
+"@h5web/app@8.0.0":
+  version "8.0.0"
+  resolved "https://registry.yarnpkg.com/@h5web/app/-/app-8.0.0.tgz#7071224daad6ad9f07cf56cc24aeb32251caaade"
+  integrity sha512-EelO52llpuBYvPDuH1uhxHocuxYP5ghP7CRetG00XPE+wpurWIrB93WcBqH7IVKmU8zbPtuisjw2KRQUIaaOxQ==
   dependencies:
-    "@h5web/lib" "6.2.0"
-    "@react-hookz/web" "14.2.2"
+    "@h5web/lib" "8.0.0"
+    "@react-hookz/web" "23.0.0"
     "@react-three/fiber" "7.0.26"
-    axios "0.27.2"
+    axios "1.3.4"
     d3-format "3.1.0"
     lodash "4.17.21"
     ndarray "1.0.19"
     ndarray-ops "1.2.2"
-    react-error-boundary "3.1.4"
-    react-icons "4.4.0"
-    react-reflex "4.0.9"
-    react-slider "2.0.1"
+    react-error-boundary "4.0.3"
+    react-icons "4.8.0"
+    react-reflex "4.0.12"
+    react-slider "2.0.4"
     react-suspense-fetch "0.4.1"
-    react-use "17.4.0"
     three "0.141.0"
-    zustand "4.0.0-rc.1"
+    zustand "4.3.7"
 
-"@h5web/lib@6.2.0":
-  version "6.2.0"
-  resolved "https://registry.yarnpkg.com/@h5web/lib/-/lib-6.2.0.tgz#56814d7649cfc1be916bd551fa94e28fb598c8ec"
-  integrity sha512-ay1A1nVwGvMB1QziSCXPobKCaAcvFzS1fumrRc7sUmEsXIxsnhbXssHGrrxMm4+p1B+JIj4bcntDfmjvoAzWKQ==
-  dependencies:
-    "@react-hookz/web" "14.2.2"
-    "@visx/axis" "2.10.0"
-    "@visx/grid" "2.10.0"
-    "@visx/scale" "2.2.2"
-    "@visx/shape" "2.10.0"
-    "@visx/tooltip" "2.10.0"
-    d3-array "3.1.6"
+"@h5web/lib@8.0.0":
+  version "8.0.0"
+  resolved "https://registry.yarnpkg.com/@h5web/lib/-/lib-8.0.0.tgz#69609760871e8be95bf84aa8b1a30370460d508f"
+  integrity sha512-aa5r8M6tc7lNcWaiKOiSzeTwZ1dtFn6GJdGHeOyzUAKSzEXBPoN2C50eFkbVs7nYBqMa2MpjxOztwKaJ37FslQ==
+  dependencies:
+    "@react-hookz/web" "23.0.0"
+    "@visx/axis" "3.1.0"
+    "@visx/drag" "3.0.1"
+    "@visx/grid" "3.0.1"
+    "@visx/scale" "3.0.0"
+    "@visx/shape" "3.0.0"
+    "@visx/tooltip" "3.1.2"
+    d3-array "3.2.3"
     d3-color "3.1.0"
     d3-format "3.1.0"
     d3-interpolate "3.0.1"
@@ -1247,12 +1247,12 @@
     ndarray "1.0.19"
     ndarray-ops "1.2.2"
     react-aria-menubutton "7.0.3"
-    react-icons "4.4.0"
+    react-icons "4.8.0"
     react-keyed-flatten-children "1.3.0"
     react-measure "2.5.2"
-    react-slider "2.0.1"
-    react-use "17.4.0"
-    react-window "1.8.7"
+    react-slider "2.0.4"
+    react-window "1.8.8"
+    zustand "4.3.7"
 
 "@hapi/address@2.x.x":
   version "2.1.4"
@@ -1751,17 +1751,17 @@
     schema-utils "^2.6.5"
     source-map "^0.7.3"
 
-"@react-hookz/deep-equal@^1.0.2":
+"@react-hookz/deep-equal@^1.0.4":
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/@react-hookz/deep-equal/-/deep-equal-1.0.4.tgz#68a71f36cbc88724b3ce6f4036183778b6e7f282"
   integrity sha512-N56fTrAPUDz/R423pag+n6TXWbvlBZDtTehaGFjK0InmN+V2OFWLE/WmORhmn6Ce7dlwH5+tQN1LJFw3ngTJVg==
 
-"@react-hookz/web@14.2.2":
-  version "14.2.2"
-  resolved "https://registry.yarnpkg.com/@react-hookz/web/-/web-14.2.2.tgz#eee0085f954e5b62d0a6c5b20d8786c28abfb9ad"
-  integrity sha512-6FeZHKV3FFOYnbSJMkkqXDoMuIX0HEFJlDF4LpHR7RsA3zrH2xzhtF8nSYZ+pG6fDIqYKID9yQuILFmbAWaqCQ==
+"@react-hookz/web@23.0.0":
+  version "23.0.0"
+  resolved "https://registry.yarnpkg.com/@react-hookz/web/-/web-23.0.0.tgz#d0470de7f9ec4f6eaedd2c13b9fb474d8f3a0d09"
+  integrity sha512-diBtlo17CJtZJ/Yb8veri7hZL7QPnqNZ+IAMHWWSb//nq+Z3XDHaXcozH7cyvMZj4gYwQeY/L/H4298etHxu1Q==
   dependencies:
-    "@react-hookz/deep-equal" "^1.0.2"
+    "@react-hookz/deep-equal" "^1.0.4"
 
 "@react-keycloak/core@^3.2.0":
   version "3.2.0"
@@ -2092,29 +2092,29 @@
   resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080"
   integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==
 
-"@types/d3-color@^1":
-  version "1.4.2"
-  resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-1.4.2.tgz#944f281d04a0f06e134ea96adbb68303515b2784"
-  integrity sha512-fYtiVLBYy7VQX+Kx7wU/uOIkGQn8aAEY8oWMoyja3N4dLd8Yf6XgSIR/4yWvMuveNOH5VShnqCgRqqh/UNanBA==
+"@types/d3-color@*":
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.0.tgz#6594da178ded6c7c3842f3cc0ac84b156f12f2d4"
+  integrity sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==
 
-"@types/d3-interpolate@^1.3.1":
-  version "1.4.2"
-  resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-1.4.2.tgz#88902a205f682773a517612299a44699285eed7b"
-  integrity sha512-ylycts6llFf8yAEs1tXzx2loxxzDZHseuhPokrqKprTQSTcD3JbJI1omZP1rphsELZO3Q+of3ff0ZS7+O6yVzg==
+"@types/d3-interpolate@^3.0.1":
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz#e7d17fa4a5830ad56fe22ce3b4fac8541a9572dc"
+  integrity sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==
   dependencies:
-    "@types/d3-color" "^1"
+    "@types/d3-color" "*"
 
 "@types/d3-path@^1", "@types/d3-path@^1.0.8":
   version "1.0.9"
   resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-1.0.9.tgz#73526b150d14cd96e701597cbf346cfd1fd4a58c"
   integrity sha512-NaIeSIBiFgSC6IGUBjZWcscUJEq7vpVu7KthHN8eieTV9d9MqkSOZLH4chq1PmcKy06PNe3axLeKmRIyxJ+PZQ==
 
-"@types/d3-scale@^3.3.0":
-  version "3.3.2"
-  resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-3.3.2.tgz#18c94e90f4f1c6b1ee14a70f14bfca2bd1c61d06"
-  integrity sha512-gGqr7x1ost9px3FvIfUMi5XA/F/yAf4UkUDtdQhpH92XCT0Oa7zkkRzY61gPVJq+DxpHn/btouw5ohWkbBsCzQ==
+"@types/d3-scale@^4.0.2":
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.3.tgz#7a5780e934e52b6f63ad9c24b105e33dd58102b5"
+  integrity sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==
   dependencies:
-    "@types/d3-time" "^2"
+    "@types/d3-time" "*"
 
 "@types/d3-shape@^1.3.1":
   version "1.3.8"
@@ -2123,7 +2123,12 @@
   dependencies:
     "@types/d3-path" "^1"
 
-"@types/d3-time@^2", "@types/d3-time@^2.0.0":
+"@types/d3-time@*":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.0.tgz#e1ac0f3e9e195135361fa1a1d62f795d87e6e819"
+  integrity sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==
+
+"@types/d3-time@^2.0.0":
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-2.1.1.tgz#743fdc821c81f86537cbfece07093ac39b4bc342"
   integrity sha512-9MVYlmIgmRR31C5b4FVSWtuMmBHh2mOWQYfl7XAYOa8dsnb7iEmUmRSWSFgXFtkjxO65d7hTUHQC+RhR/9IWFg==
@@ -2243,11 +2248,6 @@
     expect "^28.0.0"
     pretty-format "^28.0.0"
 
-"@types/js-cookie@^2.2.6":
-  version "2.2.7"
-  resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3"
-  integrity sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==
-
 "@types/js-levenshtein@^1.1.0":
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/@types/js-levenshtein/-/js-levenshtein-1.1.1.tgz#ba05426a43f9e4e30b631941e0aa17bf0c890ed5"
@@ -2639,99 +2639,117 @@
     "@typescript-eslint/types" "5.34.0"
     eslint-visitor-keys "^3.3.0"
 
-"@visx/axis@2.10.0":
-  version "2.10.0"
-  resolved "https://registry.yarnpkg.com/@visx/axis/-/axis-2.10.0.tgz#613fde76653edbefb795cafe2e11fc4c2294db46"
-  integrity sha512-myEcXPzD7ZmKiXuhue2lpiuTDgl3Glhe1LB+xoUDS8ZAW76Asd6PwurjoxSnq3tHCz0EDBh7YlgApeFy3Bw38A==
+"@visx/axis@3.1.0":
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/@visx/axis/-/axis-3.1.0.tgz#775b221e5abfdec25304c607eeae8cda1a8bade6"
+  integrity sha512-JDj/1VYx0JO0pHFtwoFtYcnqdoZFh/dpHImEl169S5nTslSFlIoNTXA/ekpBP6ELkEZ59gmF1X5k29x6MFBwCA==
   dependencies:
     "@types/react" "*"
-    "@visx/group" "2.10.0"
-    "@visx/point" "2.6.0"
-    "@visx/scale" "2.2.2"
-    "@visx/shape" "2.10.0"
-    "@visx/text" "2.10.0"
+    "@visx/group" "3.0.0"
+    "@visx/point" "3.0.1"
+    "@visx/scale" "3.0.0"
+    "@visx/shape" "3.0.0"
+    "@visx/text" "3.0.0"
     classnames "^2.3.1"
     prop-types "^15.6.0"
 
-"@visx/bounds@2.10.0":
-  version "2.10.0"
-  resolved "https://registry.yarnpkg.com/@visx/bounds/-/bounds-2.10.0.tgz#cd0bdd7db924a5a2151174edce09f867aaeaf3af"
-  integrity sha512-rY7WFTIjQaXA8tFL45O2qbtSRkyF4yF75HiWz06F7BVmJ9UjF2qlomB3Y1z6gk6ZiFhwQ4zxABjOVjAQPLn7nQ==
+"@visx/bounds@3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@visx/bounds/-/bounds-3.0.0.tgz#cf357cbff90a1fe5f95eb9d9288dd8794b744a7f"
+  integrity sha512-YQaSSER9erxlhppzRms6cvYdKqcIwk6eksrGdbJkBoHobhPo1JCIUXlmrA4qgrEnXInPJpueGE+PE5F+Dk12DA==
   dependencies:
     "@types/react" "*"
     "@types/react-dom" "*"
     prop-types "^15.5.10"
 
-"@visx/curve@2.1.0":
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/@visx/curve/-/curve-2.1.0.tgz#f614bfe3db66df7db7382db7a75ced1506b94602"
-  integrity sha512-9b6JOnx91gmOQiSPhUOxdsvcnW88fgqfTPKoVgQxidMsD/I3wksixtwo8TR/vtEz2aHzzsEEhlv1qK7Y3yaSDw==
+"@visx/curve@3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@visx/curve/-/curve-3.0.0.tgz#c54568472e00a38483c58cf52e4a6ddb2887c2d4"
+  integrity sha512-kvHJDLBeczTQ87ZExSTfRxej06l6o6UiQ0NHf9+xpAin06y6Qk1ThOHHWJTGM6KGzwlu7jEauJGHwZs6nMhDvA==
   dependencies:
     "@types/d3-shape" "^1.3.1"
     d3-shape "^1.0.6"
 
-"@visx/grid@2.10.0":
-  version "2.10.0"
-  resolved "https://registry.yarnpkg.com/@visx/grid/-/grid-2.10.0.tgz#fbc06d481921d8089d593f0d0a5cf0b53b191d89"
-  integrity sha512-2uj8vfwQ0f7EN1MuNne/1a94gyux19MZxBd36BqXmyUpnRxC4DSYQRra05tqoydUupe1mAlJZHUuKl2zDK7tOw==
+"@visx/drag@3.0.1":
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/@visx/drag/-/drag-3.0.1.tgz#753d5f471d4e31679ca4fddcb476cf2d5c7eb6e4"
+  integrity sha512-yi2AB/unUfNYBRKS4pmUOuz8MjaAAYjsQGYcD/s4LqeQjd+lBZF7CuNcYZ/maGNQAEUfgLr2czIzADanOMtMaw==
   dependencies:
     "@types/react" "*"
-    "@visx/curve" "2.1.0"
-    "@visx/group" "2.10.0"
-    "@visx/point" "2.6.0"
-    "@visx/scale" "2.2.2"
-    "@visx/shape" "2.10.0"
+    "@visx/event" "3.0.1"
+    "@visx/point" "3.0.1"
+    prop-types "^15.5.10"
+
+"@visx/event@3.0.1":
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/@visx/event/-/event-3.0.1.tgz#d5358f52ff5ef30036d955bd2b68b96472ff2d6f"
+  integrity sha512-tK1EUYQLLStBuoCMbm8LJ3VbDyCVI8HjT0pMRQxm+C75FSIVWvrThgrfrC9sWOFnEMEYWspZO7hI5zjsPKjLQA==
+  dependencies:
+    "@types/react" "*"
+    "@visx/point" "3.0.1"
+
+"@visx/grid@3.0.1":
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/@visx/grid/-/grid-3.0.1.tgz#d91085ed92e7e1c0c2e58710bc33b2f0f33b8e74"
+  integrity sha512-cln5CVvFG58C5Uz1Uf0KRBFmGmgD1NALOQdYDu5yPsTuY2yLzVYPvCIlYBMdUtE0uzfNq972SmkZHfZYs03jxQ==
+  dependencies:
+    "@types/react" "*"
+    "@visx/curve" "3.0.0"
+    "@visx/group" "3.0.0"
+    "@visx/point" "3.0.1"
+    "@visx/scale" "3.0.0"
+    "@visx/shape" "3.0.0"
     classnames "^2.3.1"
     prop-types "^15.6.2"
 
-"@visx/group@2.10.0":
-  version "2.10.0"
-  resolved "https://registry.yarnpkg.com/@visx/group/-/group-2.10.0.tgz#95839851832545621eb0d091866a61dafe552ae1"
-  integrity sha512-DNJDX71f65Et1+UgQvYlZbE66owYUAfcxTkC96Db6TnxV221VKI3T5l23UWbnMzwFBP9dR3PWUjjqhhF12N5pA==
+"@visx/group@3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@visx/group/-/group-3.0.0.tgz#e7f9752599bcc7e141ff5317a2a9a502577ab8df"
+  integrity sha512-SFjXhTMcsaVAb1/TVL1KM5vn8gQTIVgSx0ATdDl4BJSFp2ym1lO8LY4jpV4SFweaHnWxVwrrfGLTn5QsYnvmjQ==
   dependencies:
     "@types/react" "*"
     classnames "^2.3.1"
     prop-types "^15.6.2"
 
-"@visx/point@2.6.0":
-  version "2.6.0"
-  resolved "https://registry.yarnpkg.com/@visx/point/-/point-2.6.0.tgz#c4316ca409b5b829c5455f07118d8c14a92cc633"
-  integrity sha512-amBi7yMz4S2VSchlPdliznN41TuES64506ySI22DeKQ+mc1s1+BudlpnY90sM1EIw4xnqbKmrghTTGfy6SVqvQ==
+"@visx/point@3.0.1":
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/@visx/point/-/point-3.0.1.tgz#77587ddaabf6f3023f09f8a0ce33a2c27c9d64c8"
+  integrity sha512-S5WOBMgEP2xHcgs3A2BFB2vwzrk0tMmn3PGZAbQJ+lu4HlnalDP72klUnxLTH8xclNNvpUHtHM5eLIJXyHx6Pw==
 
-"@visx/scale@2.2.2":
-  version "2.2.2"
-  resolved "https://registry.yarnpkg.com/@visx/scale/-/scale-2.2.2.tgz#b8eafabdcf92bb45ab196058fe184772ad80fd25"
-  integrity sha512-3aDySGUTpe6VykDQmF+g2nz5paFu9iSPTcCOEgkcru0/v5tmGzUdvivy8CkYbr87HN73V/Jc53lGm+kJUQcLBw==
+"@visx/scale@3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@visx/scale/-/scale-3.0.0.tgz#727123f0c930d3346a4473e926831c45997e0312"
+  integrity sha512-WSf+wrxZEvu5TPGfGTafzzX1MbogbIxfD9ZKM9p7xfw65v23G0dNMy4bqVBUbOJigONoQkIZyqQ+gz5AJ/ioIg==
   dependencies:
-    "@types/d3-interpolate" "^1.3.1"
-    "@types/d3-scale" "^3.3.0"
+    "@types/d3-interpolate" "^3.0.1"
+    "@types/d3-scale" "^4.0.2"
     "@types/d3-time" "^2.0.0"
-    d3-interpolate "^1.4.0"
-    d3-scale "^3.3.0"
+    d3-interpolate "^3.0.1"
+    d3-scale "^4.0.2"
     d3-time "^2.1.1"
 
-"@visx/shape@2.10.0":
-  version "2.10.0"
-  resolved "https://registry.yarnpkg.com/@visx/shape/-/shape-2.10.0.tgz#126ba8029f30569847f652673dc003821c57d884"
-  integrity sha512-aRQBfclEWEPDmQmnB+BGN9Issg7u9lLrZ5LUSI3gfR9WAAHoNldxjpHRcYx8Y16A3YlCFVgWIBBL7pH0XUYcCA==
+"@visx/shape@3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@visx/shape/-/shape-3.0.0.tgz#a1d4bd0e12cc94c164252f175997932a09c24652"
+  integrity sha512-t6lpP9bIA1vwChDwiOUWl92ro29XF/M8IVNWRA0pm4LGxGGTACvxG3Agfcdi3JprahUVqPpnRCwuR36PDanq3Q==
   dependencies:
     "@types/d3-path" "^1.0.8"
     "@types/d3-shape" "^1.3.1"
     "@types/lodash" "^4.14.172"
     "@types/react" "*"
-    "@visx/curve" "2.1.0"
-    "@visx/group" "2.10.0"
-    "@visx/scale" "2.2.2"
+    "@visx/curve" "3.0.0"
+    "@visx/group" "3.0.0"
+    "@visx/scale" "3.0.0"
     classnames "^2.3.1"
     d3-path "^1.0.5"
     d3-shape "^1.2.0"
     lodash "^4.17.21"
     prop-types "^15.5.10"
 
-"@visx/text@2.10.0":
-  version "2.10.0"
-  resolved "https://registry.yarnpkg.com/@visx/text/-/text-2.10.0.tgz#2ff413f4dd35617e45b24d6082d7b856358afe4c"
-  integrity sha512-Wbt0Mq130akOahaby2Ziwkr62LuK6td9RcIWI9o4xsLE7GCIkxeUiVci0YUo2yewgwOLwR9F1guPuHPqYd+eYg==
+"@visx/text@3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@visx/text/-/text-3.0.0.tgz#9099c3605027b9ab4c54bde97518a648136c3629"
+  integrity sha512-LW6v5T/gpd9RGw83/ScXncYc6IlcfzXTpaN8WbbxLRI65gdvSqrykwAMR0cbpQmzoVFuZXljqOf0QslHGnBg1w==
   dependencies:
     "@types/lodash" "^4.14.172"
     "@types/react" "*"
@@ -2740,13 +2758,13 @@
     prop-types "^15.7.2"
     reduce-css-calc "^1.3.0"
 
-"@visx/tooltip@2.10.0":
-  version "2.10.0"
-  resolved "https://registry.yarnpkg.com/@visx/tooltip/-/tooltip-2.10.0.tgz#86d6a720af573dc9853d86d99ae35052bb1629f3"
-  integrity sha512-6Zrd79MIEfyuLBcZ1ypSeAkpQc8oLRNB7FQnegzl3Lje4LK5lJtuf5ST0mwK6G2Uv+GlOW9REJ6VK4gfAGkq9A==
+"@visx/tooltip@3.1.2":
+  version "3.1.2"
+  resolved "https://registry.yarnpkg.com/@visx/tooltip/-/tooltip-3.1.2.tgz#6c7bb36a296f4501adb99b59487412e39fe06f44"
+  integrity sha512-p46qztGRNkEDbxzc3V1virahvz3UQ29TzddUjA0oaTIBCrOd9UJuLvv1Tq9OpeUYPdbrO/ZRwaEeri2pbwv04Q==
   dependencies:
     "@types/react" "*"
-    "@visx/bounds" "2.10.0"
+    "@visx/bounds" "3.0.0"
     classnames "^2.3.1"
     prop-types "^15.5.10"
     react-use-measure "^2.0.4"
@@ -3029,11 +3047,6 @@
   resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.5.tgz#09fa51e356d07d0be200642b0e4f91d8e6dd408d"
   integrity sha512-V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A==
 
-"@xobotyi/scrollbar-width@^1.9.5":
-  version "1.9.5"
-  resolved "https://registry.yarnpkg.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d"
-  integrity sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==
-
 "@xtuc/ieee754@^1.2.0":
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
@@ -3636,13 +3649,14 @@ axios@0.21.4:
   dependencies:
     follow-redirects "^1.14.0"
 
-axios@0.27.2:
-  version "0.27.2"
-  resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972"
-  integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==
+axios@1.3.4:
+  version "1.3.4"
+  resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.4.tgz#f5760cefd9cfb51fd2481acf88c05f67c4523024"
+  integrity sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==
   dependencies:
-    follow-redirects "^1.14.9"
+    follow-redirects "^1.15.0"
     form-data "^4.0.0"
+    proxy-from-env "^1.1.0"
 
 axobject-query@^2.2.0:
   version "2.2.0"
@@ -5306,13 +5320,6 @@ css-has-pseudo@^0.10.0:
     postcss "^7.0.6"
     postcss-selector-parser "^5.0.0-rc.4"
 
-css-in-js-utils@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz#640ae6a33646d401fc720c54fc61c42cd76ae2bb"
-  integrity sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==
-  dependencies:
-    hyphenate-style-name "^1.0.3"
-
 css-loader@4.3.0:
   version "4.3.0"
   resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e"
@@ -5530,11 +5537,6 @@ csstype@^3.0.2:
   resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2"
   integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==
 
-csstype@^3.0.6:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9"
-  integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==
-
 cwise-compiler@^1.0.0:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/cwise-compiler/-/cwise-compiler-1.1.3.tgz#f4d667410e850d3a313a7d2db7b1e505bb034cc5"
@@ -5552,7 +5554,7 @@ d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0:
   resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f"
   integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==
 
-d3-array@2, d3-array@^2.3.0:
+d3-array@2:
   version "2.12.1"
   resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81"
   integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==
@@ -5566,10 +5568,10 @@ d3-array@2, d3-array@^2.3.0:
   dependencies:
     internmap "1 - 2"
 
-d3-array@3.1.6:
-  version "3.1.6"
-  resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.1.6.tgz#0342c835925826f49b4d16eb7027aec334ffc97d"
-  integrity sha512-DCbBBNuKOeiR9h04ySRBMW52TFVc91O9wJziuyXw6Ztmy8D3oZbmCkOO3UHKC7ceNJsN2Mavo9+vwV8EAEUXzA==
+d3-array@3.2.3:
+  version "3.2.3"
+  resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.3.tgz#39f1f4954e4a09ff69ac597c2d61906b04e84740"
+  integrity sha512-JRHwbQQ84XuAESWhvIPaUV4/1UYTBOLiOPGWqgFDHZS1D5QN9c57FbH3QpEnQMYiOXNzKUQyGTZf+EVO7RT5TQ==
   dependencies:
     internmap "1 - 2"
 
@@ -5607,11 +5609,6 @@ d3-color@1:
   resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a"
   integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==
 
-"d3-color@1 - 2":
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-2.0.0.tgz#8d625cab42ed9b8f601a1760a389f7ea9189d62e"
-  integrity sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==
-
 "d3-color@1 - 3", d3-color@3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2"
@@ -5673,11 +5670,6 @@ d3-format@1:
   resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.5.tgz#374f2ba1320e3717eb74a9356c67daee17a7edb4"
   integrity sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==
 
-"d3-format@1 - 2":
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-2.0.0.tgz#a10bcc0f986c372b729ba447382413aabf5b0767"
-  integrity sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==
-
 "d3-format@1 - 3", d3-format@3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641"
@@ -5695,27 +5687,20 @@ d3-hierarchy@1:
   resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz#2f6bee24caaea43f8dc37545fa01628559647a83"
   integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==
 
-d3-interpolate@1, d3-interpolate@^1.4.0:
+d3-interpolate@1:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987"
   integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==
   dependencies:
     d3-color "1"
 
-"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3.0.1:
+"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3.0.1, d3-interpolate@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d"
   integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==
   dependencies:
     d3-color "1 - 3"
 
-"d3-interpolate@1.2.0 - 2":
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-2.0.1.tgz#98be499cfb8a3b94d4ff616900501a64abc91163"
-  integrity sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==
-  dependencies:
-    d3-color "1 - 2"
-
 d3-path@1, d3-path@^1.0.5:
   version "1.0.9"
   resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf"
@@ -5764,7 +5749,7 @@ d3-scale@2:
     d3-time "1"
     d3-time-format "2"
 
-d3-scale@4.0.2:
+d3-scale@4.0.2, d3-scale@^4.0.2:
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396"
   integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==
@@ -5775,17 +5760,6 @@ d3-scale@4.0.2:
     d3-time "2.1.1 - 3"
     d3-time-format "2 - 4"
 
-d3-scale@^3.3.0:
-  version "3.3.0"
-  resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.3.0.tgz#28c600b29f47e5b9cd2df9749c206727966203f3"
-  integrity sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==
-  dependencies:
-    d3-array "^2.3.0"
-    d3-format "1 - 2"
-    d3-interpolate "1.2.0 - 2"
-    d3-time "^2.1.1"
-    d3-time-format "2 - 3"
-
 d3-selection@1, d3-selection@^1.1.0:
   version "1.4.2"
   resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.2.tgz#dcaa49522c0dbf32d6c1858afc26b6094555bc5c"
@@ -5805,13 +5779,6 @@ d3-time-format@2:
   dependencies:
     d3-time "1"
 
-"d3-time-format@2 - 3":
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-3.0.0.tgz#df8056c83659e01f20ac5da5fdeae7c08d5f1bb6"
-  integrity sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==
-  dependencies:
-    d3-time "1 - 2"
-
 "d3-time-format@2 - 4":
   version "4.1.0"
   resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a"
@@ -5824,13 +5791,6 @@ d3-time@1:
   resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1"
   integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==
 
-"d3-time@1 - 2", d3-time@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-2.1.1.tgz#e9d8a8a88691f4548e68ca085e5ff956724a6682"
-  integrity sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==
-  dependencies:
-    d3-array "2"
-
 "d3-time@1 - 3", "d3-time@2.1.1 - 3":
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.0.0.tgz#65972cb98ae2d4954ef5c932e8704061335d4975"
@@ -5838,6 +5798,13 @@ d3-time@1:
   dependencies:
     d3-array "2 - 3"
 
+d3-time@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-2.1.1.tgz#e9d8a8a88691f4548e68ca085e5ff956724a6682"
+  integrity sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==
+  dependencies:
+    d3-array "2"
+
 d3-timer@1:
   version "1.0.10"
   resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5"
@@ -7316,16 +7283,6 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
   resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
   integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
 
-fast-loops@^1.1.3:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/fast-loops/-/fast-loops-1.1.3.tgz#ce96adb86d07e7bf9b4822ab9c6fac9964981f75"
-  integrity sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==
-
-fast-shallow-equal@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz#d4dcaf6472440dcefa6f88b98e3251e27f25628b"
-  integrity sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==
-
 fast-url-parser@1.1.3:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d"
@@ -7333,11 +7290,6 @@ fast-url-parser@1.1.3:
   dependencies:
     punycode "^1.3.2"
 
-fastest-stable-stringify@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz#3757a6774f6ec8de40c4e86ec28ea02417214c76"
-  integrity sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==
-
 fastq@^1.6.0:
   version "1.13.0"
   resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
@@ -7636,7 +7588,7 @@ follow-redirects@^1.0.0, follow-redirects@^1.14.0:
   resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5"
   integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==
 
-follow-redirects@^1.14.9:
+follow-redirects@^1.15.0:
   version "1.15.2"
   resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
   integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
@@ -8692,14 +8644,6 @@ inline-style-parser@0.1.1:
   resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1"
   integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==
 
-inline-style-prefixer@^6.0.0:
-  version "6.0.4"
-  resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz#4290ed453ab0e4441583284ad86e41ad88384f44"
-  integrity sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==
-  dependencies:
-    css-in-js-utils "^3.1.0"
-    fast-loops "^1.1.3"
-
 inquirer@^8.2.0:
   version "8.2.4"
   resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4"
@@ -9827,11 +9771,6 @@ jest@26.6.0:
     import-local "^3.0.2"
     jest-cli "^26.6.0"
 
-js-cookie@^2.2.1:
-  version "2.2.1"
-  resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8"
-  integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==
-
 js-levenshtein@^1.1.6:
   version "1.1.6"
   resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
@@ -11436,20 +11375,6 @@ nan@^2.12.1:
   resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916"
   integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==
 
-nano-css@^5.3.1:
-  version "5.3.5"
-  resolved "https://registry.yarnpkg.com/nano-css/-/nano-css-5.3.5.tgz#3075ea29ffdeb0c7cb6d25edb21d8f7fa8e8fe8e"
-  integrity sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==
-  dependencies:
-    css-tree "^1.1.2"
-    csstype "^3.0.6"
-    fastest-stable-stringify "^2.0.2"
-    inline-style-prefixer "^6.0.0"
-    rtl-css-js "^1.14.0"
-    sourcemap-codec "^1.4.8"
-    stacktrace-js "^2.0.2"
-    stylis "^4.0.6"
-
 nanoclone@^0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4"
@@ -13260,6 +13185,11 @@ proxy-addr@~2.0.7:
     forwarded "0.2.0"
     ipaddr.js "1.9.1"
 
+proxy-from-env@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
+  integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+
 prr@~1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
@@ -13615,10 +13545,10 @@ react-dropzone@^14.2.3:
     file-selector "^0.6.0"
     prop-types "^15.8.1"
 
-react-error-boundary@3.1.4:
-  version "3.1.4"
-  resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-3.1.4.tgz#255db92b23197108757a888b01e5b729919abde0"
-  integrity sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==
+react-error-boundary@4.0.3:
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-4.0.3.tgz#f811497c06d53ea1206817ee82c6e5c6a27becd9"
+  integrity sha512-IzNKP/ViHWp2QRDgsDMirEcf0XLsLueN6Wgzm1TVwgbAH+paX8Z42VyKvZcFFRHgd+rPK2P4TLrOrHC/dommew==
   dependencies:
     "@babel/runtime" "^7.12.5"
 
@@ -13674,10 +13604,10 @@ react-highlight@^0.14.0:
   dependencies:
     highlight.js "^10.5.0"
 
-react-icons@4.4.0:
-  version "4.4.0"
-  resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.4.0.tgz#a13a8a20c254854e1ec9aecef28a95cdf24ef703"
-  integrity sha512-fSbvHeVYo/B5/L4VhB7sBA1i2tS8MkT0Hb9t2H1AVPkwGfVHLJCqyr2Py9dKMxsyM63Eng1GkdZfbWj+Fmv8Rg==
+react-icons@4.8.0:
+  version "4.8.0"
+  resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.8.0.tgz#621e900caa23b912f737e41be57f27f6b2bff445"
+  integrity sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg==
 
 react-infinite-scroller@^1.2.4:
   version "1.2.6"
@@ -13791,10 +13721,10 @@ react-reconciler@^0.26.2:
     object-assign "^4.1.1"
     scheduler "^0.20.2"
 
-react-reflex@4.0.9:
-  version "4.0.9"
-  resolved "https://registry.yarnpkg.com/react-reflex/-/react-reflex-4.0.9.tgz#3f20d0afacb43f5f37b93e0b56f5042b63b54d06"
-  integrity sha512-XFTNRekFK4ul8mzVd1lniKT/SI0FvNYhXyLNl5gagS1i3iW9QKlpFYcRfVhZlxxaYHb8UyLOs3+H4Ay5cjtbxQ==
+react-reflex@4.0.12:
+  version "4.0.12"
+  resolved "https://registry.yarnpkg.com/react-reflex/-/react-reflex-4.0.12.tgz#f479840ed82877fdab10a82443a5b3762af2f82f"
+  integrity sha512-sYgX0rW7xuGcs99WwXB/fPlPLzr3kiZhlTF+5Oijz+e2Hh64WlxIJdbrXMr4yA+vtn9Zi4vN/jF2CP7drWAAAQ==
   dependencies:
     "@babel/runtime" "^7.0.0"
     lodash.throttle "^4.1.1"
@@ -13938,10 +13868,10 @@ react-side-effect@^2.1.0:
   resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.2.tgz#dc6345b9e8f9906dc2eeb68700b615e0b4fe752a"
   integrity sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==
 
-react-slider@2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/react-slider/-/react-slider-2.0.1.tgz#51fb80aaebb98a07d6563b757a49c437a5142fed"
-  integrity sha512-EnPLeyPGQcgpU9i+OvdD6W1Fk+rHg7LOVGvREXqLnbSngYvnE+d++nus0iHho1kcDw6NzF1OXzqWXAEs2Nbl4Q==
+react-slider@2.0.4:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/react-slider/-/react-slider-2.0.4.tgz#21c656ffabc3bb4481cf6b49e6d647baeda83572"
+  integrity sha512-sWwQD01n6v+MbeLCYthJGZPc0kzOyhQHyd0bSo0edg+IAxTVQmj3Oy4SBK65eX6gNwS9meUn6Z5sIBUVmwAd9g==
   dependencies:
     prop-types "^15.8.1"
 
@@ -14012,11 +13942,6 @@ react-transition-group@^4.0.0, react-transition-group@^4.4.0:
     loose-envify "^1.4.0"
     prop-types "^15.6.2"
 
-react-universal-interface@^0.6.2:
-  version "0.6.2"
-  resolved "https://registry.yarnpkg.com/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b"
-  integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==
-
 react-use-measure@^2.0.4, react-use-measure@^2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/react-use-measure/-/react-use-measure-2.1.1.tgz#5824537f4ee01c9469c45d5f7a8446177c6cc4ba"
@@ -14024,32 +13949,20 @@ react-use-measure@^2.0.4, react-use-measure@^2.1.1:
   dependencies:
     debounce "^1.2.1"
 
-react-use@17.4.0:
-  version "17.4.0"
-  resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.4.0.tgz#cefef258b0a6c534a5c8021c2528ac6e1a4cdc6d"
-  integrity sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==
-  dependencies:
-    "@types/js-cookie" "^2.2.6"
-    "@xobotyi/scrollbar-width" "^1.9.5"
-    copy-to-clipboard "^3.3.1"
-    fast-deep-equal "^3.1.3"
-    fast-shallow-equal "^1.0.0"
-    js-cookie "^2.2.1"
-    nano-css "^5.3.1"
-    react-universal-interface "^0.6.2"
-    resize-observer-polyfill "^1.5.1"
-    screenfull "^5.1.0"
-    set-harmonic-interval "^1.0.1"
-    throttle-debounce "^3.0.1"
-    ts-easing "^0.2.0"
-    tslib "^2.1.0"
-
 react-virtualized-auto-sizer@^1.0.2:
   version "1.0.6"
   resolved "https://registry.yarnpkg.com/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.6.tgz#66c5b1c9278064c5ef1699ed40a29c11518f97ca"
   integrity sha512-7tQ0BmZqfVF6YYEWcIGuoR3OdYe8I/ZFbNclFlGOC3pMqunkYF/oL30NCjSGl9sMEb17AnzixDz98Kqc3N76HQ==
 
-react-window@1.8.7, react-window@^1.8.5:
+react-window@1.8.8:
+  version "1.8.8"
+  resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.8.tgz#1b52919f009ddf91970cbdb2050a6c7be44df243"
+  integrity sha512-D4IiBeRtGXziZ1n0XklnFGu7h9gU684zepqyKzgPNzrsrk7xOCxni+TCckjg2Nr/DiaEEGVVmnhYSlT2rB47dQ==
+  dependencies:
+    "@babel/runtime" "^7.0.0"
+    memoize-one ">=3.1.1 <6"
+
+react-window@^1.8.5:
   version "1.8.7"
   resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.7.tgz#5e9fd0d23f48f432d7022cdb327219353a15f0d4"
   integrity sha512-JHEZbPXBpKMmoNO1bNhoXOOLg/ujhL/BU4IqVU9r8eQPcy5KQnGHIHDRkJ0ns9IM5+Aq5LNwt3j8t3tIrePQzA==
@@ -14741,13 +14654,6 @@ rsvp@^4.8.4:
   resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
   integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
 
-rtl-css-js@^1.14.0:
-  version "1.16.1"
-  resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.16.1.tgz#4b48b4354b0ff917a30488d95100fbf7219a3e80"
-  integrity sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==
-  dependencies:
-    "@babel/runtime" "^7.1.2"
-
 run-async@^2.4.0:
   version "2.4.1"
   resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
@@ -14905,11 +14811,6 @@ schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1:
     ajv "^6.12.5"
     ajv-keywords "^3.5.2"
 
-screenfull@^5.1.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba"
-  integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==
-
 script-loader@^0.7.2:
   version "0.7.2"
   resolved "https://registry.yarnpkg.com/script-loader/-/script-loader-0.7.2.tgz#2016db6f86f25f5cf56da38915d83378bb166ba7"
@@ -15116,11 +15017,6 @@ set-cookie-parser@^2.4.6:
   resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz#ddd3e9a566b0e8e0862aca974a6ac0e01349430b"
   integrity sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==
 
-set-harmonic-interval@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249"
-  integrity sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==
-
 set-value@^2.0.0, set-value@^2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
@@ -15381,11 +15277,6 @@ source-map-url@^0.4.0:
   resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
   integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
 
-source-map@0.5.6:
-  version "0.5.6"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
-  integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==
-
 source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
   version "0.6.1"
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
@@ -15506,13 +15397,6 @@ stable@^0.1.8:
   resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
   integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
 
-stack-generator@^2.0.5:
-  version "2.0.10"
-  resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.10.tgz#8ae171e985ed62287d4f1ed55a1633b3fb53bb4d"
-  integrity sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==
-  dependencies:
-    stackframe "^1.3.4"
-
 stack-trace@0.0.10:
   version "0.0.10"
   resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
@@ -15530,23 +15414,6 @@ stackframe@^1.3.4:
   resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310"
   integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==
 
-stacktrace-gps@^3.0.4:
-  version "3.1.2"
-  resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz#0c40b24a9b119b20da4525c398795338966a2fb0"
-  integrity sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==
-  dependencies:
-    source-map "0.5.6"
-    stackframe "^1.3.4"
-
-stacktrace-js@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b"
-  integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==
-  dependencies:
-    error-stack-parser "^2.0.6"
-    stack-generator "^2.0.5"
-    stacktrace-gps "^3.0.4"
-
 static-extend@^0.1.1:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
@@ -15846,11 +15713,6 @@ stylehacks@^4.0.0:
     postcss "^7.0.0"
     postcss-selector-parser "^3.0.0"
 
-stylis@^4.0.6:
-  version "4.1.3"
-  resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7"
-  integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==
-
 supports-color@6.0.0:
   version "6.0.0"
   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a"
@@ -16132,11 +15994,6 @@ throat@^5.0.0:
   resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"
   integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==
 
-throttle-debounce@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb"
-  integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==
-
 through2-filter@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254"
@@ -16338,11 +16195,6 @@ tryer@^1.0.1:
   resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
   integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
 
-ts-easing@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/ts-easing/-/ts-easing-0.2.0.tgz#c8a8a35025105566588d87dbda05dd7fbfa5a4ec"
-  integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==
-
 ts-node@^10.7.0:
   version "10.9.1"
   resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b"
@@ -16832,10 +16684,10 @@ use-query-params@^0.6.0:
   dependencies:
     serialize-query-params "^0.3.0"
 
-use-sync-external-store@1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.1.0.tgz#3343c3fe7f7e404db70f8c687adf5c1652d34e82"
-  integrity sha512-SEnieB2FPKEVne66NpXPd1Np4R1lTNKfjuy3XdIoPQKYBAFdzbzSZlSn1KJZUiihQLQC5Znot4SBz1EOTBwQAQ==
+use-sync-external-store@1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"
+  integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==
 
 use@^3.1.0:
   version "3.1.1"
@@ -17920,12 +17772,12 @@ yup@^0.32.11:
     property-expr "^2.0.4"
     toposort "^2.0.2"
 
-zustand@4.0.0-rc.1:
-  version "4.0.0-rc.1"
-  resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.0.0-rc.1.tgz#ec30a3afc03728adec7e1bd7bcc3592176372201"
-  integrity sha512-qgcs7zLqBdHu0PuT3GW4WCIY5SgXdsv30GQMu9Qpp1BA2aS+sNS8l4x0hWuyEhjXkN+701aGWawhKDv6oWJAcw==
+zustand@4.3.7:
+  version "4.3.7"
+  resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.3.7.tgz#501b1f0393a7f1d103332e45ab574be5747fedce"
+  integrity sha512-dY8ERwB9Nd21ellgkBZFhudER8KVlelZm8388B5nDAXhO/+FZDhYMuRnqDgu5SYyRgz/iaf8RKnbUs/cHfOGlQ==
   dependencies:
-    use-sync-external-store "1.1.0"
+    use-sync-external-store "1.2.0"
 
 zustand@^3.5.1:
   version "3.7.2"
diff --git a/nomad/datamodel/metainfo/eln/nexus_data_converter.py b/nomad/datamodel/metainfo/eln/nexus_data_converter.py
index e6cb4c68a8..3124927e59 100644
--- a/nomad/datamodel/metainfo/eln/nexus_data_converter.py
+++ b/nomad/datamodel/metainfo/eln/nexus_data_converter.py
@@ -7,8 +7,8 @@ from nomad.datamodel.data import EntryData
 from nomad.metainfo import Package, Quantity, MEnum
 from nomad.units import ureg
 
-from nexusutils.dataconverter.convert import get_names_of_all_readers, convert  # pylint: disable=import-error
-from nexusutils.nexus.nexus import get_app_defs_names  # pylint: disable=import-error
+from pynxtools.dataconverter.convert import get_names_of_all_readers, convert  # pylint: disable=import-error
+from pynxtools.nexus.nexus import get_app_defs_names  # pylint: disable=import-error
 
 
 m_package = Package(name='nexus_data_converter')
diff --git a/nomad/metainfo/metainfo.py b/nomad/metainfo/metainfo.py
index 3ebc9de68a..5295ccd897 100644
--- a/nomad/metainfo/metainfo.py
+++ b/nomad/metainfo/metainfo.py
@@ -2763,9 +2763,9 @@ class MSection(metaclass=MObjectMeta):  # TODO find a way to make this a subclas
             if isinstance(copy, Definition):
                 copy.more = deepcopy(self.more)
             for sub_section_def in self.m_def.all_sub_sections.values():
-                sub_sections_copy = [
-                    sub_section.m_copy(deep=True, parent=copy)
-                    for sub_section in self.m_get_sub_sections(sub_section_def)]
+                sub_sections_copy = MSubSectionList(self, sub_section_def)
+                for sub_section in self.m_get_sub_sections(sub_section_def):
+                    sub_sections_copy.append(sub_section.m_copy(deep=True, parent=copy))
 
                 if sub_section_def.repeats:
                     copy.__dict__[sub_section_def.name] = sub_sections_copy
diff --git a/nomad/metainfo/nexus.py b/nomad/metainfo/nexus.py
index 7ce1f486c3..9b25bd8117 100644
--- a/nomad/metainfo/nexus.py
+++ b/nomad/metainfo/nexus.py
@@ -27,7 +27,7 @@ from typing import Dict, List, Optional, Union
 import numpy as np
 from toposort import toposort_flatten
 
-from nexusutils.nexus import nexus  # pylint: disable=import-error
+from pynxtools.nexus import nexus  # pylint: disable=import-error
 from nomad.datamodel import EntryArchive
 from nomad.metainfo import (
     Attribute, Bytes, Datetime, Definition, MEnum, Package, Property, Quantity, Section, SubSection)
diff --git a/nomad/parsing/nexus/nexus.py b/nomad/parsing/nexus/nexus.py
index c5426c2cd2..83bee213ac 100644
--- a/nomad/parsing/nexus/nexus.py
+++ b/nomad/parsing/nexus/nexus.py
@@ -21,7 +21,7 @@ from typing import Optional
 
 import numpy as np
 
-from nexusutils.nexus import nexus as read_nexus  # pylint: disable=import-error
+from pynxtools.nexus import nexus as read_nexus  # pylint: disable=import-error
 from nomad.datamodel import EntryArchive
 from nomad.metainfo import MSection, nexus
 from nomad.metainfo.util import MQuantity, MSubSectionList, resolve_variadic_name
diff --git a/pyproject.toml b/pyproject.toml
index 0d5baab978..c32b8f00b8 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -65,7 +65,7 @@ parsing = [
     'quippy-ase==0.9.14'
 ]
 infrastructure = [
-    'h5grove>=1.0.0',
+    'h5grove[fastapi]==1.3.0',
     'optimade[mongo]==0.22.1',
     'structlog',
     'elasticsearch==7.17.1',
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 94f31a0bd1..ad35998ae7 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -9,15 +9,13 @@ alabaster==0.7.12         # via -r requirements.txt, sphinx
 alembic==1.9.1            # via -r requirements.txt, jupyterhub
 amqp==5.1.1               # via -r requirements.txt, kombu
 aniso8601==7.0.0          # via -r requirements.txt, nomad-lab (pyproject.toml)
-anyio==3.6.2              # via -r requirements.txt, httpcore, jupyter-server, starlette, watchfiles
-appnope==0.1.3            # via -r requirements.txt, ipykernel, ipython
-argon2-cffi==21.3.0       # via -r requirements.txt, jupyter-server, nbclassic, notebook
-argon2-cffi-bindings==21.2.0  # via -r requirements.txt, argon2-cffi
+anyio==3.6.2              # via -r requirements.txt, httpcore, starlette, watchfiles
 arrow==1.2.3              # via -r requirements.txt, isoduration
 asciitree==0.3.3          # via -r requirements.txt, zarr
 ase==3.19.0               # via -r requirements.txt, asr, ifes-apt-tc-data-modeling, nomad-lab (pyproject.toml), quippy-ase
 asgiref==3.6.0            # via -r requirements.txt, nomad-lab (pyproject.toml)
 asr==0.4.1                # via -r requirements.txt, nomad-lab (pyproject.toml)
+asteval==0.9.31           # via -r requirements.txt, lmfit
 astroid==2.11.7           # via nomad-lab (pyproject.toml), pylint
 asttokens==2.1.0          # via devtools
 astunparse==1.6.3         # via -r requirements.txt, mdtraj
@@ -25,16 +23,16 @@ async-generator==1.10     # via -r requirements.txt, jupyterhub
 async-timeout==4.0.2      # via -r requirements.txt, redis
 atpublic==3.1.1           # via aiosmtpd
 attrs==22.2.0             # via -r requirements.txt, aiosmtpd, cattrs, jsonschema, pytest, requests-cache
-babel==2.11.0             # via -r requirements.txt, jupyterlab-server, sphinx
+babel==2.11.0             # via -r requirements.txt, sphinx
 backcall==0.2.0           # via -r requirements.txt, ipython
 bagit==1.8.1              # via -r requirements.txt, nomad-lab (pyproject.toml)
 basicauth==0.4.1          # via -r requirements.txt, nomad-lab (pyproject.toml)
 bcrypt==3.2.0             # via -r requirements.txt, nomad-lab (pyproject.toml)
-beautifulsoup4==4.11.1    # via -r requirements.txt, bs4, nbconvert
+beautifulsoup4==4.11.1    # via -r requirements.txt, bs4
 billiard==3.6.4.0         # via -r requirements.txt, celery
 biopython==1.80           # via -r requirements.txt, mdanalysis
 bitarray==2.3.5           # via -r requirements.txt, nomad-lab (pyproject.toml)
-bleach==5.0.1             # via -r requirements.txt, nbconvert, readme-renderer
+bleach==5.0.1             # via readme-renderer
 bs4==0.0.1                # via -r requirements.txt, nomad-lab (pyproject.toml)
 build==0.9.0              # via nomad-lab (pyproject.toml), pip-tools
 cachetools==4.2.4         # via -r requirements.txt, nomad-lab (pyproject.toml)
@@ -42,7 +40,7 @@ cattrs==22.2.0            # via -r requirements.txt, requests-cache
 celery[redis]==5.2.7      # via -r requirements.txt, nomad-lab (pyproject.toml)
 certifi==2022.12.7        # via -r requirements.txt, elasticsearch, httpcore, httpx, requests
 certipy==0.1.3            # via -r requirements.txt, jupyterhub
-cffi==1.15.1              # via -r requirements.txt, argon2-cffi-bindings, bcrypt, cryptography
+cffi==1.15.1              # via -r requirements.txt, bcrypt, cryptography
 cftime==1.6.2             # via -r requirements.txt, netcdf4
 charset-normalizer==2.0.12  # via -r requirements.txt, requests
 click==8.1.3              # via -r requirements.txt, asr, celery, click-didyoumean, click-plugins, click-repl, flask, mkdocs, mkdocs-click, nomad-lab (pyproject.toml), pip-tools, uvicorn
@@ -53,13 +51,14 @@ cloudpickle==2.2.0        # via -r requirements.txt, dask
 colorama==0.4.6           # via twine
 commonmark==0.9.1         # via -r requirements.txt, recommonmark
 coverage==6.5.0           # via pytest-cov
-cryptography==39.0.0      # via -r requirements.txt, nomad-lab (pyproject.toml), pyjwt, pyopenssl, rfc3161ng
+cryptography==39.0.0      # via -r requirements.txt, nomad-lab (pyproject.toml), pyjwt, pyopenssl, rfc3161ng, secretstorage
 cycler==0.11.0            # via -r requirements.txt, matplotlib
-dask[array]==2022.2.0     # via -r requirements.txt, hyperspy
+dask[array]==2022.2.0     # via -r requirements.txt, hyperspy, kikuchipy, orix, pyxem
 debugpy==1.6.5            # via -r requirements.txt, ipykernel
 decorator==5.1.1          # via -r requirements.txt, ipyparallel, ipython, validators
-defusedxml==0.7.1         # via -r requirements.txt, nbconvert
 devtools==0.8.0           # via nomad-lab (pyproject.toml)
+diffpy-structure==3.1.0   # via -r requirements.txt, diffsims, kikuchipy, orix
+diffsims==0.5.2           # via -r requirements.txt, kikuchipy, pyxem
 dill==0.3.6               # via -r requirements.txt, hyperspy, pylint
 dnspython==2.2.1          # via -r requirements.txt, email-validator
 docker==6.0.1             # via -r requirements.txt, dockerspawner
@@ -79,12 +78,12 @@ exceptiongroup==1.1.1     # via -r requirements.txt, cattrs
 execnet==1.9.0            # via pytest-xdist
 executing==0.10.0         # via devtools
 f90wrap==0.2.13           # via -r requirements.txt, quippy-ase
-fastapi==0.92.0           # via -r requirements.txt, nomad-lab (pyproject.toml)
+fabio==2023.6.0           # via -r requirements.txt, pyfai, silx
+fastapi==0.92.0           # via -r requirements.txt, h5grove, nomad-lab (pyproject.toml)
 fasteners==0.18           # via -r requirements.txt, mdanalysis, zarr
-fastjsonschema==2.16.2    # via -r requirements.txt, nbformat
 filelock==3.3.1           # via -r requirements.txt, nomad-lab (pyproject.toml)
 flask==2.2.2              # via -r requirements.txt, asr
-flatdict==4.0.1           # via -r requirements.txt, nexusutils (dependencies/parsers/nexus/pyproject.toml)
+flatdict==4.0.1           # via -r requirements.txt, pynxtools (dependencies/parsers/nexus/pyproject.toml)
 fonttools==4.38.0         # via -r requirements.txt, matplotlib
 fqdn==1.5.1               # via -r requirements.txt, jsonschema
 fsspec==2022.11.0         # via -r requirements.txt, dask, hyperspy
@@ -96,66 +95,65 @@ greenlet==2.0.1           # via -r requirements.txt, sqlalchemy
 griddataformats==0.7.0    # via -r requirements.txt, mdanalysis
 gsd==2.7.0                # via -r requirements.txt, mdanalysis
 h11==0.14.0               # via -r requirements.txt, httpcore, uvicorn
-h5grove==1.2.0            # via -r requirements.txt, jupyterlab-h5web, nomad-lab (pyproject.toml)
-h5py==3.6.0               # via -r requirements.txt, h5grove, hyperspy, ifes-apt-tc-data-modeling, jupyterlab-h5web, nomad-lab (pyproject.toml), phonopy, pyscf
+h5grove[fastapi]==1.3.0   # via -r requirements.txt, nomad-lab (pyproject.toml)
+h5py==3.6.0               # via -r requirements.txt, h5grove, hyperspy, ifes-apt-tc-data-modeling, kikuchipy, nionswift, nomad-lab (pyproject.toml), orix, phonopy, pyfai, silx
 hjson==3.0.2              # via -r requirements.txt, nomad-lab (pyproject.toml)
 html5lib==1.1             # via -r requirements.txt, nomad-lab (pyproject.toml)
 httpcore==0.16.3          # via -r requirements.txt, httpx
 httptools==0.5.0          # via -r requirements.txt, uvicorn
 httpx==0.23.3             # via -r requirements.txt, nomad-lab (pyproject.toml)
-hyperspy==1.7.3           # via -r requirements.txt, nexusutils (dependencies/parsers/nexus/pyproject.toml)
+hyperspy==1.7.5           # via -r requirements.txt, kikuchipy, pynxtools (dependencies/parsers/nexus/pyproject.toml), pyxem
 idna==3.4                 # via -r requirements.txt, anyio, email-validator, jsonschema, requests, rfc3986
-ifes-apt-tc-data-modeling==0.0.6  # via -r requirements.txt, nexusutils (dependencies/parsers/nexus/pyproject.toml)
-imageio==2.24.0           # via -r requirements.txt, hyperspy, scikit-image
+ifes-apt-tc-data-modeling==0.0.9  # via -r requirements.txt, pynxtools (dependencies/parsers/nexus/pyproject.toml)
+imageio==2.24.0           # via -r requirements.txt, hyperspy, kikuchipy, nionswift, nionswift-io, nionui, scikit-image
 imagesize==1.4.1          # via -r requirements.txt, sphinx
-importlib-metadata==4.13.0  # via -r requirements.txt, flask, hyperspy, jupyterlab-server, keyring, markdown, mkdocs, nbconvert, nomad-lab (pyproject.toml), sphinx, twine
+importlib-metadata==4.13.0  # via -r requirements.txt, flask, hyperspy, keyring, markdown, mkdocs, nomad-lab (pyproject.toml), sphinx, twine
 inflection==0.5.1         # via -r requirements.txt, nomad-lab (pyproject.toml)
-ipykernel==6.16.2         # via -r requirements.txt, ipyparallel, nbclassic, notebook
+ipykernel==6.16.2         # via -r requirements.txt, ipyparallel, ipywidgets
 ipyparallel==8.4.1        # via -r requirements.txt, hyperspy
-ipython==7.34.0           # via -r requirements.txt, hyperspy, ipykernel, ipyparallel, jupyterlab
-ipython-genutils==0.2.0   # via -r requirements.txt, nbclassic, notebook
+ipython==7.34.0           # via -r requirements.txt, hyperspy, ipykernel, ipyparallel, ipywidgets
+ipywidgets==8.0.7         # via -r requirements.txt, pyxem
 isodate==0.6.1            # via -r requirements.txt, rdflib
 isoduration==20.11.0      # via -r requirements.txt, jsonschema
 isort==4.3.21             # via pylint
 itsdangerous==2.1.2       # via -r requirements.txt, flask, nomad-lab (pyproject.toml)
 jaraco-classes==3.2.3     # via keyring
 jedi==0.18.2              # via -r requirements.txt, ipython
-jinja2==3.0.3             # via -r requirements.txt, flask, hyperspy, jupyter-server, jupyterhub, jupyterlab, jupyterlab-server, mkdocs, mkdocs-macros-plugin, mkdocs-material, nbclassic, nbconvert, notebook, sphinx
+jeepney==0.8.0            # via keyring, secretstorage
+jinja2==3.0.3             # via -r requirements.txt, flask, hyperspy, jupyterhub, mkdocs, mkdocs-macros-plugin, mkdocs-material, sphinx
 jmespath==0.10.0          # via -r requirements.txt, nomad-lab (pyproject.toml)
 joblib==1.1.0             # via -r requirements.txt, mdanalysis, nomad-lab (pyproject.toml), scikit-learn
-json5==0.9.11             # via -r requirements.txt, jupyterlab-server
 jsonpointer==2.3          # via -r requirements.txt, jsonschema
-jsonschema[format]==4.17.3  # via -r requirements.txt, jupyter-telemetry, jupyterlab-server, nbformat, nomad-lab (pyproject.toml), oauthenticator
-jupyter-client==7.4.8     # via -r requirements.txt, ipykernel, ipyparallel, jupyter-server, nbclassic, nbclient, notebook
-jupyter-core==4.12.0      # via -r requirements.txt, jupyter-client, jupyter-server, jupyterlab, nbclassic, nbclient, nbconvert, nbformat, notebook
-jupyter-server==1.23.4    # via -r requirements.txt, jupyterlab, jupyterlab-h5web, jupyterlab-server, nbclassic, notebook-shim
+jsonschema[format]==4.17.3  # via -r requirements.txt, jupyter-telemetry, nomad-lab (pyproject.toml), oauthenticator
+jupyter-client==7.4.8     # via -r requirements.txt, ipykernel, ipyparallel
+jupyter-core==4.12.0      # via -r requirements.txt, jupyter-client
 jupyter-telemetry==0.1.0  # via -r requirements.txt, jupyterhub
 jupyterhub==1.4.2         # via -r requirements.txt, dockerspawner, nomad-lab (pyproject.toml), oauthenticator
-jupyterlab==3.5.3         # via -r requirements.txt, ifes-apt-tc-data-modeling, nexusutils (dependencies/parsers/nexus/pyproject.toml)
-jupyterlab-h5web==7.0.0   # via -r requirements.txt, ifes-apt-tc-data-modeling, nexusutils (dependencies/parsers/nexus/pyproject.toml)
-jupyterlab-pygments==0.2.2  # via -r requirements.txt, nbconvert
-jupyterlab-server==2.21.0  # via -r requirements.txt, jupyterlab
+jupyterlab-widgets==3.0.8  # via -r requirements.txt, ipywidgets
 keyring==23.11.0          # via twine
+kikuchipy==0.8.6          # via -r requirements.txt, pynxtools (dependencies/parsers/nexus/pyproject.toml)
 kiwisolver==1.4.4         # via -r requirements.txt, matplotlib
 kombu==5.2.4              # via -r requirements.txt, celery
-lark==1.1.5               # via -r requirements.txt, nexusutils (dependencies/parsers/nexus/pyproject.toml), optimade
+lark==1.1.5               # via -r requirements.txt, optimade, pynxtools (dependencies/parsers/nexus/pyproject.toml)
 latexcodec==2.0.1         # via -r requirements.txt, pybtex
 lazy-object-proxy==1.9.0  # via astroid
 llvmlite==0.39.1          # via -r requirements.txt, numba
+lmfit==1.2.2              # via -r requirements.txt, pyxem
 locket==1.0.0             # via -r requirements.txt, partd
 lxml==4.7.1               # via -r requirements.txt, nomad-lab (pyproject.toml)
 m2r==0.2.1                # via -r requirements.txt, nomad-lab (pyproject.toml)
 mako==1.2.4               # via -r requirements.txt, alembic
 markdown==3.4.1           # via mkdocs, mkdocs-click, mkdocs-material, pymdown-extensions
-markupsafe==2.1.1         # via -r requirements.txt, jinja2, mako, nbconvert, nomad-lab (pyproject.toml), werkzeug
-matplotlib==3.5.3         # via -r requirements.txt, ase, asr, hyperspy, mdanalysis, phonopy, pymatgen, radioactivedecay
+markupsafe==2.1.1         # via -r requirements.txt, jinja2, mako, nomad-lab (pyproject.toml), werkzeug
+matplotlib==3.5.3         # via -r requirements.txt, ase, asr, diffsims, hyperspy, kikuchipy, matplotlib-scalebar, mdanalysis, orix, phonopy, pyfai, pymatgen, pyxem, radioactivedecay
 matplotlib-inline==0.1.6  # via -r requirements.txt, ipykernel, ipython
+matplotlib-scalebar==0.8.1  # via -r requirements.txt, orix
 mccabe==0.6.1             # via pylint
 mdanalysis==2.5.0         # via -r requirements.txt, nomad-lab (pyproject.toml)
 mdtraj==1.9.6             # via -r requirements.txt, nomad-lab (pyproject.toml)
 memoization==0.4.0        # via -r requirements.txt, nomad-lab (pyproject.toml)
 mergedeep==1.3.4          # via mkdocs
-mistune==2.0.4            # via -r requirements.txt, m2r, nbconvert
+mistune==2.0.4            # via -r requirements.txt, m2r
 mkdocs==1.2.3             # via mkdocs-macros-plugin, mkdocs-material, mkdocs-redirects, nomad-lab (pyproject.toml)
 mkdocs-click==0.8.0       # via nomad-lab (pyproject.toml)
 mkdocs-macros-plugin==0.6.3  # via nomad-lab (pyproject.toml)
@@ -171,34 +169,34 @@ mp-api==0.30.10           # via -r requirements.txt, pymatgen
 mpmath==1.2.1             # via -r requirements.txt, sympy
 mrcfile==1.4.3            # via -r requirements.txt, griddataformats
 msgpack==1.0.4            # via -r requirements.txt, mmtf-python, mp-api, nomad-lab (pyproject.toml)
-mypy==1.0.1               # via nexusutils (dependencies/parsers/nexus/pyproject.toml), nomad-lab (pyproject.toml)
+mypy==1.0.1               # via nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml)
 mypy-extensions==0.4.3    # via mypy
 names==0.3.0              # via nomad-lab (pyproject.toml)
 natsort==8.2.0            # via -r requirements.txt, hyperspy
-nbclassic==0.5.3          # via -r requirements.txt, jupyterlab, notebook
-nbclient==0.7.2           # via -r requirements.txt, nbconvert
-nbconvert==7.2.7          # via -r requirements.txt, jupyter-server, nbclassic, notebook
-nbformat==5.7.3           # via -r requirements.txt, jupyter-server, nbclassic, nbclient, nbconvert, notebook
-nest-asyncio==1.5.6       # via -r requirements.txt, ipykernel, jupyter-client, nbclassic, notebook
+nest-asyncio==1.5.6       # via -r requirements.txt, ipykernel, jupyter-client
 netcdf4==1.5.4            # via -r requirements.txt, nomad-lab (pyproject.toml)
 networkx==2.6.3           # via -r requirements.txt, matid (dependencies/matid/pyproject.toml), mdanalysis, pymatgen, radioactivedecay, scikit-image
-notebook==6.5.3           # via -r requirements.txt, jupyterlab
-notebook-shim==0.2.2      # via -r requirements.txt, nbclassic
+niondata==0.15.5          # via -r requirements.txt, nionswift, nionswift-io
+nionswift==0.16.8         # via -r requirements.txt, pynxtools (dependencies/parsers/nexus/pyproject.toml)
+nionswift-io==0.15.1      # via -r requirements.txt, nionswift
+nionui==0.6.11            # via -r requirements.txt, nionswift
+nionutils==0.4.7          # via -r requirements.txt, niondata, nionswift, nionswift-io, nionui
 nptyping==1.4.4           # via -r requirements.txt, nomad-lab (pyproject.toml)
-numba==0.56.4             # via -r requirements.txt, hyperspy, sparse
+numba==0.56.4             # via -r requirements.txt, diffsims, hyperspy, kikuchipy, orix, pyxem, sparse
 numcodecs==0.10.2         # via -r requirements.txt, zarr
-numexpr==2.8.4            # via -r requirements.txt, hyperspy
-numpy==1.22.4             # via -r requirements.txt, ase, biopython, cftime, dask, f90wrap, griddataformats, gsd, h5grove, h5py, hyperspy, ifes-apt-tc-data-modeling, imageio, matplotlib, mdanalysis, mdtraj, mrcfile, netcdf4, nomad-lab (pyproject.toml), nptyping, numba, numcodecs, numexpr, pandas, phonopy, pymatgen, pyscf, pywavelets, quippy-ase, radioactivedecay, scikit-image, scikit-learn, scipy, sparse, spglib, tifffile, xarray, zarr
+numexpr==2.8.4            # via -r requirements.txt, hyperspy, pyfai
+numpy==1.22.4             # via -r requirements.txt, ase, biopython, cftime, dask, diffsims, f90wrap, fabio, griddataformats, gsd, h5grove, h5py, hyperspy, ifes-apt-tc-data-modeling, imageio, kikuchipy, lmfit, matplotlib, mdanalysis, mdtraj, mrcfile, netcdf4, niondata, nionswift, nionswift-io, nionui, nomad-lab (pyproject.toml), nptyping, numba, numcodecs, numexpr, numpy-quaternion, orix, pandas, phonopy, pyfai, pymatgen, pywavelets, pyxem, quippy-ase, radioactivedecay, scikit-image, scikit-learn, scipy, silx, sparse, spglib, tifffile, xarray, zarr
+numpy-quaternion==2022.4.3  # via -r requirements.txt, orix
 oauthenticator==15.1.0    # via -r requirements.txt, nomad-lab (pyproject.toml)
 oauthlib==3.2.2           # via -r requirements.txt, jupyterhub
 openpyxl==3.1.2           # via -r requirements.txt, nomad-lab (pyproject.toml)
 optimade[mongo]==0.22.1   # via -r requirements.txt, nomad-lab (pyproject.toml)
+orix==0.11.1              # via -r requirements.txt, diffsims, kikuchipy, pyxem
 orjson==3.6.0             # via -r requirements.txt, h5grove, nomad-lab (pyproject.toml)
-packaging==23.0           # via -r requirements.txt, build, dask, docker, hyperspy, ipykernel, jupyter-server, jupyterlab, jupyterlab-server, matplotlib, mdanalysis, mkdocs, mongomock, nbconvert, pint, pytest, scikit-image, sphinx, xarray
+packaging==23.0           # via -r requirements.txt, build, dask, docker, hyperspy, ipykernel, matplotlib, mdanalysis, mkdocs, mongomock, pint, pooch, pytest, scikit-image, sphinx
 palettable==3.3.0         # via -r requirements.txt, pymatgen
 pamela==1.0.0             # via -r requirements.txt, jupyterhub
 pandas==1.3.5             # via -r requirements.txt, ifes-apt-tc-data-modeling, nomad-lab (pyproject.toml), panedr, pymatgen, xarray
-pandocfilters==1.5.0      # via -r requirements.txt, nbconvert
 panedr==0.2               # via -r requirements.txt, nomad-lab (pyproject.toml)
 parmed==3.0.0             # via -r requirements.txt, nomad-lab (pyproject.toml)
 parso==0.8.3              # via -r requirements.txt, jedi
@@ -208,28 +206,31 @@ pep517==0.13.0            # via build
 pexpect==4.8.0            # via -r requirements.txt, ipython
 phonopy==2.11.0           # via -r requirements.txt, asr, nomad-lab (pyproject.toml)
 pickleshare==0.7.5        # via -r requirements.txt, ipython
-pillow==9.4.0             # via -r requirements.txt, imageio, matplotlib, scikit-image
+pillow==9.4.0             # via -r requirements.txt, imageio, matplotlib, nionswift, scikit-image
 pint==0.17                # via -r requirements.txt, hyperspy, nomad-lab (pyproject.toml)
-pip-tools==6.13.0         # via nomad-lab (pyproject.toml)
+pip-tools==6.13.0         # via nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml)
 pkginfo==1.8.3            # via twine
-platformdirs==3.1.1       # via -r requirements.txt, pylint, requests-cache
+platformdirs==3.1.1       # via -r requirements.txt, pooch, pylint, requests-cache
 plotly==5.11.0            # via -r requirements.txt, asr, pymatgen
 pluggy==0.13.1            # via pytest
+pooch==1.7.0              # via -r requirements.txt, kikuchipy, orix
 prettytable==3.6.0        # via -r requirements.txt, hyperspy
-prometheus-client==0.15.0  # via -r requirements.txt, jupyter-server, jupyterhub, nbclassic, notebook
+prometheus-client==0.15.0  # via -r requirements.txt, jupyterhub
 prompt-toolkit==3.0.36    # via -r requirements.txt, click-repl, ipython
-psutil==5.9.4             # via -r requirements.txt, ipykernel, ipyparallel
-ptyprocess==0.7.0         # via -r requirements.txt, pexpect, terminado
+psutil==5.9.4             # via -r requirements.txt, diffsims, ipykernel, ipyparallel, pyxem
+ptyprocess==0.7.0         # via -r requirements.txt, pexpect
 py==1.11.0                # via pytest, pytest-forked
 pyasn1==0.4.8             # via -r requirements.txt, pyasn1-modules, python-jose, rfc3161ng, rsa
 pyasn1-modules==0.2.8     # via -r requirements.txt, rfc3161ng
 pybtex==0.24.0            # via -r requirements.txt, emmet-core, pymatgen
-pycodestyle==2.8.0        # via nexusutils (dependencies/parsers/nexus/pyproject.toml), nomad-lab (pyproject.toml)
+pycifrw==4.4.5            # via -r requirements.txt, diffpy-structure
+pycodestyle==2.8.0        # via nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml)
 pycparser==2.21           # via -r requirements.txt, cffi
 pydantic==1.10.9          # via -r requirements.txt, emmet-core, fastapi, nomad-lab (pyproject.toml), optimade
-pygments==2.14.0          # via -r requirements.txt, ipython, mkdocs-material, nbconvert, readme-renderer, sphinx
+pyfai==2023.5.0           # via -r requirements.txt, pyxem
+pygments==2.14.0          # via -r requirements.txt, ipython, mkdocs-material, readme-renderer, sphinx
 pyjwt[crypto]==2.6.0      # via -r requirements.txt, nomad-lab (pyproject.toml)
-pylint==2.13.9            # via nexusutils (dependencies/parsers/nexus/pyproject.toml), nomad-lab (pyproject.toml), pylint-mongoengine, pylint-plugin-utils
+pylint==2.13.9            # via nomad-lab (pyproject.toml), pylint-mongoengine, pylint-plugin-utils, pynxtools (dependencies/parsers/nexus/pyproject.toml)
 pylint-mongoengine==0.4.0  # via nomad-lab (pyproject.toml)
 pylint-plugin-utils==0.7  # via nomad-lab (pyproject.toml), pylint-mongoengine
 pymatgen==2023.2.28       # via -r requirements.txt, asr, emmet-core, mp-api, nomad-lab (pyproject.toml)
@@ -238,11 +239,10 @@ pymongo==3.12.1           # via -r requirements.txt, mongoengine, nomad-lab (pyp
 pyopenssl==23.0.0         # via -r requirements.txt, certipy
 pyparsing==3.0.9          # via -r requirements.txt, matplotlib, mdtraj, rdflib
 pyrsistent==0.19.3        # via -r requirements.txt, jsonschema
-pyscf==2.0.1 ; sys_platform == "darwin"  # via -r requirements.txt, electronicparsers (dependencies/parsers/electronic/pyproject.toml)
-pytest==5.4.3             # via nexusutils (dependencies/parsers/nexus/pyproject.toml), nomad-lab (pyproject.toml), pytest-cov, pytest-forked, pytest-timeout, pytest-xdist
-pytest-cov==2.7.1         # via nexusutils (dependencies/parsers/nexus/pyproject.toml), nomad-lab (pyproject.toml)
+pytest==5.4.3             # via nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml), pytest-cov, pytest-forked, pytest-timeout, pytest-xdist
+pytest-cov==2.7.1         # via nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml)
 pytest-forked==1.6.0      # via pytest-xdist
-pytest-timeout==1.4.2     # via nexusutils (dependencies/parsers/nexus/pyproject.toml), nomad-lab (pyproject.toml)
+pytest-timeout==1.4.2     # via nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml)
 pytest-xdist==1.34.0      # via nomad-lab (pyproject.toml)
 python-dateutil==2.8.2    # via -r requirements.txt, arrow, elasticsearch-dsl, ghp-import, hyperspy, ipyparallel, jupyter-client, jupyterhub, matplotlib, mkdocs-macros-plugin, pandas, rfc3161ng
 python-dotenv==0.21.0     # via -r requirements.txt, uvicorn
@@ -253,20 +253,22 @@ python-keycloak==0.26.1   # via -r requirements.txt, nomad-lab (pyproject.toml)
 python-logstash==0.4.6    # via -r requirements.txt, nomad-lab (pyproject.toml)
 python-magic==0.4.24      # via -r requirements.txt, nomad-lab (pyproject.toml)
 python-multipart==0.0.5   # via -r requirements.txt, nomad-lab (pyproject.toml)
-pytz==2022.7.1            # via -r requirements.txt, babel, celery, nomad-lab (pyproject.toml), pandas
+pytz==2022.7.1            # via -r requirements.txt, babel, celery, nionswift, nomad-lab (pyproject.toml), pandas
+pytz-deprecation-shim==0.1.0.post0  # via -r requirements.txt, tzlocal
 pywavelets==1.3.0         # via -r requirements.txt, scikit-image
-pyyaml==6.0               # via -r requirements.txt, dask, hyperspy, mkdocs, mkdocs-macros-plugin, nomad-lab (pyproject.toml), phonopy, pybtex, pyyaml-env-tag, uvicorn
+pyxem==0.15.1             # via -r requirements.txt, pynxtools (dependencies/parsers/nexus/pyproject.toml)
+pyyaml==6.0               # via -r requirements.txt, dask, hyperspy, kikuchipy, mkdocs, mkdocs-macros-plugin, nomad-lab (pyproject.toml), phonopy, pybtex, pyyaml-env-tag, uvicorn
 pyyaml-env-tag==0.1       # via mkdocs
 pyzeo==0.1.4              # via -r requirements.txt, nomad-lab (pyproject.toml)
-pyzmq==25.0.0             # via -r requirements.txt, ipykernel, ipyparallel, jupyter-client, jupyter-server, nbclassic, notebook
+pyzmq==25.0.0             # via -r requirements.txt, ipykernel, ipyparallel, jupyter-client
 quippy-ase==0.9.14        # via -r requirements.txt, nomad-lab (pyproject.toml)
 radioactivedecay==0.4.17  # via -r requirements.txt, ifes-apt-tc-data-modeling
 rdflib==5.0.0             # via -r requirements.txt, nomad-lab (pyproject.toml)
 readme-renderer==37.3     # via twine
 recommonmark==0.7.1       # via -r requirements.txt, nomad-lab (pyproject.toml)
 redis==4.4.2              # via -r requirements.txt, celery
-requests==2.28.2          # via -r requirements.txt, docker, hyperspy, jupyterhub, jupyterlab-server, mp-api, nomad-lab (pyproject.toml), oauthenticator, optimade, pymatgen, python-gitlab, python-keycloak, requests-cache, requests-toolbelt, rfc3161ng, sphinx, twine
-requests-cache==1.0.1     # via -r requirements.txt, nexusutils (dependencies/parsers/nexus/pyproject.toml)
+requests==2.28.2          # via -r requirements.txt, docker, hyperspy, jupyterhub, mp-api, nomad-lab (pyproject.toml), oauthenticator, optimade, pooch, pymatgen, python-gitlab, python-keycloak, requests-cache, requests-toolbelt, rfc3161ng, sphinx, twine
+requests-cache==1.0.1     # via -r requirements.txt, pynxtools (dependencies/parsers/nexus/pyproject.toml)
 requests-toolbelt==0.10.1  # via python-gitlab, twine
 rfc3161ng==2.1.3          # via -r requirements.txt, nomad-lab (pyproject.toml)
 rfc3339-validator==0.1.4  # via -r requirements.txt, jsonschema
@@ -277,12 +279,13 @@ rsa==4.9                  # via -r requirements.txt, python-jose
 ruamel-yaml==0.17.21      # via -r requirements.txt, jupyter-telemetry, oauthenticator, pymatgen
 ruamel-yaml-clib==0.2.7   # via -r requirements.txt, ruamel-yaml
 runstats==2.0.0           # via -r requirements.txt, nomad-lab (pyproject.toml)
-scikit-image==0.19.3      # via -r requirements.txt, hyperspy
-scikit-learn==1.0.2       # via -r requirements.txt, nomad-lab (pyproject.toml)
-scipy==1.7.1              # via -r requirements.txt, ase, griddataformats, hyperspy, mdanalysis, mdtraj, nomad-lab (pyproject.toml), pymatgen, pyscf, radioactivedecay, scikit-image, scikit-learn, sparse
-send2trash==1.8.0         # via -r requirements.txt, jupyter-server, nbclassic, notebook
+scikit-image==0.19.3      # via -r requirements.txt, hyperspy, kikuchipy, pyxem
+scikit-learn==1.0.2       # via -r requirements.txt, kikuchipy, nomad-lab (pyproject.toml), pyxem
+scipy==1.7.1              # via -r requirements.txt, ase, diffsims, griddataformats, hyperspy, kikuchipy, lmfit, mdanalysis, mdtraj, niondata, nionswift, nomad-lab (pyproject.toml), orix, pyfai, pymatgen, pyxem, radioactivedecay, scikit-image, scikit-learn, sparse
+secretstorage==3.3.3      # via keyring
 sentinels==1.0.0          # via -r requirements.txt, mongomock
-six==1.16.0               # via -r requirements.txt, asttokens, astunparse, basicauth, bcrypt, bleach, click-repl, ecdsa, elasticsearch-dsl, griddataformats, html5lib, isodate, latexcodec, pybtex, pytest-xdist, python-dateutil, python-multipart, rdflib, rfc3339-validator, url-normalize, validators
+silx==1.1.2               # via -r requirements.txt, pyfai
+six==1.16.0               # via -r requirements.txt, asttokens, astunparse, basicauth, bcrypt, bleach, click-repl, diffpy-structure, ecdsa, elasticsearch-dsl, griddataformats, html5lib, isodate, latexcodec, pybtex, pytest-xdist, python-dateutil, python-multipart, rdflib, rfc3339-validator, url-normalize, validators
 smmap==5.0.0              # via -r requirements.txt, gitdb
 sniffio==1.3.0            # via -r requirements.txt, anyio, httpcore, httpx
 snowballstemmer==2.2.0    # via -r requirements.txt, sphinx
@@ -303,31 +306,32 @@ sympy==1.10.1             # via -r requirements.txt, hyperspy, pymatgen, radioac
 tabulate==0.8.9           # via -r requirements.txt, nomad-lab (pyproject.toml), pymatgen
 tenacity==8.1.0           # via -r requirements.txt, plotly
 termcolor==2.1.0          # via mkdocs-macros-plugin
-terminado==0.17.1         # via -r requirements.txt, jupyter-server, nbclassic, notebook
 threadpoolctl==3.1.0      # via -r requirements.txt, mdanalysis, scikit-learn
 tifffile==2021.11.2       # via -r requirements.txt, h5grove, hyperspy, scikit-image
-tinycss2==1.2.1           # via -r requirements.txt, nbconvert
-tomli==2.0.1              # via -r requirements.txt, build, jupyterlab, mypy, pep517, pylint
+tomli==2.0.1              # via build, mypy, pep517, pylint
 toolz==0.12.0             # via -r requirements.txt, dask, hyperspy, partd
 toposort==1.9             # via -r requirements.txt, nomad-lab (pyproject.toml)
-tornado==6.2              # via -r requirements.txt, ipykernel, ipyparallel, jupyter-client, jupyter-server, jupyterhub, jupyterlab, nbclassic, notebook, terminado
-tqdm==4.64.1              # via -r requirements.txt, hyperspy, ipyparallel, mdanalysis, pymatgen, twine
-traitlets==5.8.1          # via -r requirements.txt, ipykernel, ipyparallel, ipython, jupyter-client, jupyter-core, jupyter-server, jupyter-telemetry, jupyterhub, matplotlib-inline, nbclassic, nbclient, nbconvert, nbformat, notebook
+tornado==6.2              # via -r requirements.txt, ipykernel, ipyparallel, jupyter-client, jupyterhub
+tqdm==4.64.1              # via -r requirements.txt, diffsims, hyperspy, ipyparallel, kikuchipy, mdanalysis, orix, pymatgen, twine
+traitlets==5.8.1          # via -r requirements.txt, ipykernel, ipyparallel, ipython, ipywidgets, jupyter-client, jupyter-core, jupyter-telemetry, jupyterhub, matplotlib-inline
 traits==6.4.1             # via -r requirements.txt, hyperspy
+transforms3d==0.4.1       # via -r requirements.txt, diffsims, pyxem
 twine==3.4.2              # via nomad-lab (pyproject.toml)
 typed-ast==1.4.2          # via nomad-lab (pyproject.toml)
-types-pytz==2022.7.0.0    # via nexusutils (dependencies/parsers/nexus/pyproject.toml)
-types-pyyaml==6.0.12.1    # via nexusutils (dependencies/parsers/nexus/pyproject.toml)
-types-requests==2.28.11.16  # via nexusutils (dependencies/parsers/nexus/pyproject.toml)
+types-pytz==2022.7.0.0    # via pynxtools (dependencies/parsers/nexus/pyproject.toml)
+types-pyyaml==6.0.12.1    # via pynxtools (dependencies/parsers/nexus/pyproject.toml)
+types-requests==2.28.11.16  # via pynxtools (dependencies/parsers/nexus/pyproject.toml)
 types-urllib3==1.26.25.8  # via types-requests
 typing-extensions==4.4.0  # via -r requirements.txt, astroid, emmet-core, gitpython, mp-api, mypy, numcodecs, pydantic, pylint, starlette
 typish==1.9.3             # via -r requirements.txt, nptyping
-uncertainties==3.1.7      # via -r requirements.txt, pymatgen
+tzdata==2023.3            # via -r requirements.txt, pytz-deprecation-shim
+tzlocal==4.3              # via -r requirements.txt, nionswift, pynxtools (dependencies/parsers/nexus/pyproject.toml)
+uncertainties==3.1.7      # via -r requirements.txt, lmfit, pymatgen
 unidecode==1.3.2          # via -r requirements.txt, nomad-lab (pyproject.toml)
 uri-template==1.2.0       # via -r requirements.txt, jsonschema
 url-normalize==1.4.3      # via -r requirements.txt, requests-cache
 urllib3==1.26.14          # via -r requirements.txt, docker, elasticsearch, requests, requests-cache
-uvicorn[standard]==0.20.0  # via -r requirements.txt, nomad-lab (pyproject.toml)
+uvicorn[standard]==0.20.0  # via -r requirements.txt, h5grove, nomad-lab (pyproject.toml)
 uvloop==0.17.0            # via -r requirements.txt, uvicorn
 validators==0.18.2        # via -r requirements.txt, nomad-lab (pyproject.toml)
 vine==5.0.0               # via -r requirements.txt, amqp, celery, kombu
@@ -335,14 +339,16 @@ watchdog==2.1.9           # via mkdocs
 watchfiles==0.18.1        # via -r requirements.txt, uvicorn
 wcwidth==0.2.5            # via -r requirements.txt, prettytable, prompt-toolkit, pytest
 webcolors==1.12           # via -r requirements.txt, jsonschema
-webencodings==0.5.1       # via -r requirements.txt, bleach, html5lib, tinycss2
-websocket-client==1.4.2   # via -r requirements.txt, docker, jupyter-server
+webencodings==0.5.1       # via -r requirements.txt, bleach, html5lib
+websocket-client==1.4.2   # via -r requirements.txt, docker
 websockets==10.4          # via -r requirements.txt, uvicorn
 werkzeug==2.2.2           # via -r requirements.txt, flask
 wheel==0.38.4             # via -r requirements.txt, astunparse, pip-tools
+widgetsnbextension==4.0.8  # via -r requirements.txt, ipywidgets
 wrapt==1.12.1             # via -r requirements.txt, astroid, nomad-lab (pyproject.toml)
-xarray==2023.1.0          # via -r requirements.txt, nomad-lab (pyproject.toml)
+xarray==0.20.2            # via -r requirements.txt, nomad-lab (pyproject.toml)
 zarr==2.12.0              # via -r requirements.txt, hyperspy
+zipfile37==0.1.3          # via -r requirements.txt, pynxtools (dependencies/parsers/nexus/pyproject.toml)
 zipp==3.11.0              # via -r requirements.txt, importlib-metadata
 zipstream-new==1.1.5      # via -r requirements.txt, nomad-lab (pyproject.toml)
 
diff --git a/requirements.txt b/requirements.txt
index d46fdc4816..df5bf564ab 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,45 +2,42 @@
 # This file is autogenerated by pip-compile with Python 3.9
 # by the following command:
 #
-#    pip-compile --annotation-style=line --config=pyproject.toml --extra=infrastructure --extra=parsing --output-file=requirements.txt --resolver=backtracking dependencies/matid/pyproject.toml dependencies/nomad-dos-fingerprints/pyproject.toml dependencies/parsers/atomistic/pyproject.toml dependencies/parsers/database/pyproject.toml dependencies/parsers/eelsdb/pyproject.toml dependencies/parsers/electronic/pyproject.toml dependencies/parsers/nexus/pyproject.toml dependencies/parsers/workflow/pyproject.toml pyproject.toml
+#    pip-compile --annotation-style=line --extra=infrastructure --extra=parsing --output-file=requirements.txt --resolver=backtracking dependencies/matid/pyproject.toml dependencies/nomad-dos-fingerprints/pyproject.toml dependencies/parsers/atomistic/pyproject.toml dependencies/parsers/database/pyproject.toml dependencies/parsers/eelsdb/pyproject.toml dependencies/parsers/electronic/pyproject.toml dependencies/parsers/nexus/pyproject.toml dependencies/parsers/workflow/pyproject.toml pyproject.toml
 #
 alabaster==0.7.12         # via sphinx
 alembic==1.9.1            # via jupyterhub
 amqp==5.1.1               # via kombu
 aniso8601==7.0.0          # via nomad-lab (pyproject.toml)
-anyio==3.6.2              # via httpcore, jupyter-server, starlette, watchfiles
-appnope==0.1.3            # via ipykernel, ipython
-argon2-cffi==21.3.0       # via jupyter-server, nbclassic, notebook
-argon2-cffi-bindings==21.2.0  # via argon2-cffi
+anyio==3.6.2              # via httpcore, starlette, watchfiles
 arrow==1.2.3              # via isoduration
 asciitree==0.3.3          # via zarr
 ase==3.19.0               # via asr, ifes-apt-tc-data-modeling, matid (dependencies/matid/pyproject.toml), nomad-lab (pyproject.toml), quippy-ase
 asgiref==3.6.0            # via nomad-lab (pyproject.toml)
 asr==0.4.1                # via nomad-lab (pyproject.toml), workflowparsers (dependencies/parsers/workflow/pyproject.toml)
+asteval==0.9.31           # via lmfit
 astunparse==1.6.3         # via mdtraj
 async-generator==1.10     # via jupyterhub
 async-timeout==4.0.2      # via redis
 attrs==22.2.0             # via cattrs, jsonschema, requests-cache
-babel==2.11.0             # via jupyterlab-server, sphinx
+babel==2.11.0             # via sphinx
 backcall==0.2.0           # via ipython
 bagit==1.8.1              # via nomad-lab (pyproject.toml)
 basicauth==0.4.1          # via nomad-lab (pyproject.toml)
 bcrypt==3.2.0             # via nomad-lab (pyproject.toml)
-beautifulsoup4==4.11.1    # via bs4, nbconvert
+beautifulsoup4==4.11.1    # via bs4
 billiard==3.6.4.0         # via celery
 biopython==1.80           # via mdanalysis
 bitarray==2.3.5           # via nomad-dos-fingerprints (dependencies/nomad-dos-fingerprints/pyproject.toml), nomad-lab (pyproject.toml)
-bleach==5.0.1             # via nbconvert
 bs4==0.0.1                # via nomad-lab (pyproject.toml)
 cachetools==4.2.4         # via nomad-lab (pyproject.toml)
 cattrs==22.2.0            # via requests-cache
 celery[redis]==5.2.7      # via nomad-lab (pyproject.toml)
 certifi==2022.12.7        # via elasticsearch, httpcore, httpx, requests
 certipy==0.1.3            # via jupyterhub
-cffi==1.15.1              # via argon2-cffi-bindings, bcrypt, cryptography
+cffi==1.15.1              # via bcrypt, cryptography
 cftime==1.6.2             # via netcdf4
 charset-normalizer==2.0.12  # via requests
-click==8.1.3              # via asr, celery, click-didyoumean, click-plugins, click-repl, flask, nexusutils (dependencies/parsers/nexus/pyproject.toml), nomad-lab (pyproject.toml), uvicorn
+click==8.1.3              # via asr, celery, click-didyoumean, click-plugins, click-repl, flask, nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml), uvicorn
 click-didyoumean==0.3.0   # via celery
 click-plugins==1.1.1      # via celery
 click-repl==0.2.0         # via celery
@@ -48,10 +45,11 @@ cloudpickle==2.2.0        # via dask
 commonmark==0.9.1         # via recommonmark
 cryptography==39.0.0      # via nomad-lab (pyproject.toml), pyjwt, pyopenssl, rfc3161ng
 cycler==0.11.0            # via matplotlib
-dask[array]==2022.2.0     # via hyperspy
+dask[array]==2022.2.0     # via hyperspy, kikuchipy, orix, pyxem
 debugpy==1.6.5            # via ipykernel
 decorator==5.1.1          # via ipyparallel, ipython, validators
-defusedxml==0.7.1         # via nbconvert
+diffpy-structure==3.1.0   # via diffsims, kikuchipy, orix
+diffsims==0.5.2           # via kikuchipy, pyxem
 dill==0.3.6               # via hyperspy
 dnspython==2.2.1          # via email-validator
 docker==6.0.1             # via dockerspawner
@@ -68,75 +66,73 @@ escapism==1.0.1           # via dockerspawner
 et-xmlfile==1.1.0         # via openpyxl
 exceptiongroup==1.1.1     # via cattrs
 f90wrap==0.2.13           # via quippy-ase
-fastapi==0.92.0           # via nomad-lab (pyproject.toml)
+fabio==2023.6.0           # via pyfai, silx
+fastapi==0.92.0           # via h5grove, nomad-lab (pyproject.toml)
 fasteners==0.18           # via mdanalysis, zarr
-fastjsonschema==2.16.2    # via nbformat
 filelock==3.3.1           # via nomad-lab (pyproject.toml)
 flask==2.2.2              # via asr
-flatdict==4.0.1           # via nexusutils (dependencies/parsers/nexus/pyproject.toml)
+flatdict==4.0.1           # via pynxtools (dependencies/parsers/nexus/pyproject.toml)
 fonttools==4.38.0         # via matplotlib
 fqdn==1.5.1               # via jsonschema
 fsspec==2022.11.0         # via dask, hyperspy
 future==0.18.2            # via uncertainties
 gitdb==4.0.10             # via gitpython
-gitpython==3.1.24         # via nexusutils (dependencies/parsers/nexus/pyproject.toml), nomad-lab (pyproject.toml)
+gitpython==3.1.24         # via nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml)
 greenlet==2.0.1           # via sqlalchemy
 griddataformats==0.7.0    # via mdanalysis
 gsd==2.7.0                # via mdanalysis
 h11==0.14.0               # via httpcore, uvicorn
-h5grove==1.2.0            # via jupyterlab-h5web, nomad-lab (pyproject.toml)
-h5py==3.6.0               # via electronicparsers (dependencies/parsers/electronic/pyproject.toml), h5grove, hyperspy, ifes-apt-tc-data-modeling, jupyterlab-h5web, nomad-lab (pyproject.toml), phonopy, pyscf
+h5grove[fastapi]==1.3.0   # via nomad-lab (pyproject.toml)
+h5py==3.6.0               # via electronicparsers (dependencies/parsers/electronic/pyproject.toml), h5grove, hyperspy, ifes-apt-tc-data-modeling, kikuchipy, nionswift, nomad-lab (pyproject.toml), orix, phonopy, pyfai, silx
 hjson==3.0.2              # via nomad-lab (pyproject.toml)
 html5lib==1.1             # via nomad-lab (pyproject.toml)
 httpcore==0.16.3          # via httpx
 httptools==0.5.0          # via uvicorn
 httpx==0.23.3             # via nomad-lab (pyproject.toml)
-hyperspy==1.7.3           # via nexusutils (dependencies/parsers/nexus/pyproject.toml)
+hyperspy==1.7.5           # via kikuchipy, pynxtools (dependencies/parsers/nexus/pyproject.toml), pyxem
 idna==3.4                 # via anyio, email-validator, jsonschema, requests, rfc3986
-ifes-apt-tc-data-modeling==0.0.6  # via nexusutils (dependencies/parsers/nexus/pyproject.toml)
-imageio==2.24.0           # via hyperspy, scikit-image
+ifes-apt-tc-data-modeling==0.0.9  # via pynxtools (dependencies/parsers/nexus/pyproject.toml)
+imageio==2.24.0           # via hyperspy, kikuchipy, nionswift, nionswift-io, nionui, scikit-image
 imagesize==1.4.1          # via sphinx
-importlib-metadata==4.13.0  # via flask, hyperspy, jupyterlab-server, nbconvert, nomad-lab (pyproject.toml), sphinx
+importlib-metadata==4.13.0  # via flask, hyperspy, nomad-lab (pyproject.toml), sphinx
 inflection==0.5.1         # via nomad-lab (pyproject.toml)
-ipykernel==6.16.2         # via ipyparallel, nbclassic, notebook
+ipykernel==6.16.2         # via ipyparallel, ipywidgets
 ipyparallel==8.4.1        # via hyperspy
-ipython==7.34.0           # via hyperspy, ipykernel, ipyparallel, jupyterlab
-ipython-genutils==0.2.0   # via nbclassic, notebook
+ipython==7.34.0           # via hyperspy, ipykernel, ipyparallel, ipywidgets
+ipywidgets==8.0.7         # via pyxem
 isodate==0.6.1            # via rdflib
 isoduration==20.11.0      # via jsonschema
 itsdangerous==2.1.2       # via flask, nomad-lab (pyproject.toml)
 jedi==0.18.2              # via ipython
-jinja2==3.0.3             # via flask, hyperspy, jupyter-server, jupyterhub, jupyterlab, jupyterlab-server, nbclassic, nbconvert, notebook, sphinx
+jinja2==3.0.3             # via flask, hyperspy, jupyterhub, sphinx
 jmespath==0.10.0          # via nomad-lab (pyproject.toml)
 joblib==1.1.0             # via mdanalysis, nomad-lab (pyproject.toml), scikit-learn
-json5==0.9.11             # via jupyterlab-server
 jsonpointer==2.3          # via jsonschema
-jsonschema[format]==4.17.3  # via jupyter-telemetry, jupyterlab-server, nbformat, nomad-lab (pyproject.toml), oauthenticator
-jupyter-client==7.4.8     # via ipykernel, ipyparallel, jupyter-server, nbclassic, nbclient, notebook
-jupyter-core==4.12.0      # via jupyter-client, jupyter-server, jupyterlab, nbclassic, nbclient, nbconvert, nbformat, notebook
-jupyter-server==1.23.4    # via jupyterlab, jupyterlab-h5web, jupyterlab-server, nbclassic, notebook-shim
+jsonschema[format]==4.17.3  # via jupyter-telemetry, nomad-lab (pyproject.toml), oauthenticator
+jupyter-client==7.4.8     # via ipykernel, ipyparallel
+jupyter-core==4.12.0      # via jupyter-client
 jupyter-telemetry==0.1.0  # via jupyterhub
 jupyterhub==1.4.2         # via dockerspawner, nomad-lab (pyproject.toml), oauthenticator
-jupyterlab==3.5.3         # via ifes-apt-tc-data-modeling, nexusutils (dependencies/parsers/nexus/pyproject.toml)
-jupyterlab-h5web==7.0.0   # via ifes-apt-tc-data-modeling, nexusutils (dependencies/parsers/nexus/pyproject.toml)
-jupyterlab-pygments==0.2.2  # via nbconvert
-jupyterlab-server==2.21.0  # via jupyterlab
+jupyterlab-widgets==3.0.8  # via ipywidgets
+kikuchipy==0.8.6          # via pynxtools (dependencies/parsers/nexus/pyproject.toml)
 kiwisolver==1.4.4         # via matplotlib
 kombu==5.2.4              # via celery
-lark==1.1.5               # via nexusutils (dependencies/parsers/nexus/pyproject.toml), optimade
+lark==1.1.5               # via optimade, pynxtools (dependencies/parsers/nexus/pyproject.toml)
 latexcodec==2.0.1         # via pybtex
 llvmlite==0.39.1          # via numba
+lmfit==1.2.2              # via pyxem
 locket==1.0.0             # via partd
 lxml==4.7.1               # via atomisticparsers (dependencies/parsers/atomistic/pyproject.toml), nomad-lab (pyproject.toml)
 m2r==0.2.1                # via nomad-lab (pyproject.toml)
 mako==1.2.4               # via alembic
-markupsafe==2.1.1         # via jinja2, mako, nbconvert, werkzeug
-matplotlib==3.5.3         # via ase, asr, hyperspy, mdanalysis, phonopy, pymatgen, radioactivedecay
+markupsafe==2.1.1         # via jinja2, mako, werkzeug
+matplotlib==3.5.3         # via ase, asr, diffsims, hyperspy, kikuchipy, matplotlib-scalebar, mdanalysis, orix, phonopy, pyfai, pymatgen, pyxem, radioactivedecay
 matplotlib-inline==0.1.6  # via ipykernel, ipython
+matplotlib-scalebar==0.8.1  # via orix
 mdanalysis==2.5.0         # via atomisticparsers (dependencies/parsers/atomistic/pyproject.toml), nomad-lab (pyproject.toml)
 mdtraj==1.9.6             # via nomad-lab (pyproject.toml)
 memoization==0.4.0        # via nomad-lab (pyproject.toml)
-mistune==2.0.4            # via m2r, nbconvert
+mistune==2.0.4            # via m2r
 mmtf-python==1.1.3        # via mdanalysis
 mongoengine==0.25.0       # via nomad-lab (pyproject.toml)
 mongomock==4.1.2          # via optimade
@@ -146,30 +142,30 @@ mpmath==1.2.1             # via sympy
 mrcfile==1.4.3            # via griddataformats
 msgpack==1.0.4            # via mmtf-python, mp-api, nomad-lab (pyproject.toml)
 natsort==8.2.0            # via hyperspy
-nbclassic==0.5.3          # via jupyterlab, notebook
-nbclient==0.7.2           # via nbconvert
-nbconvert==7.2.7          # via jupyter-server, nbclassic, notebook
-nbformat==5.7.3           # via jupyter-server, nbclassic, nbclient, nbconvert, notebook
-nest-asyncio==1.5.6       # via ipykernel, jupyter-client, nbclassic, notebook
+nest-asyncio==1.5.6       # via ipykernel, jupyter-client
 netcdf4==1.5.4            # via electronicparsers (dependencies/parsers/electronic/pyproject.toml), nomad-lab (pyproject.toml)
 networkx==2.6.3           # via matid (dependencies/matid/pyproject.toml), mdanalysis, pymatgen, radioactivedecay, scikit-image
-notebook==6.5.3           # via jupyterlab
-notebook-shim==0.2.2      # via nbclassic
+niondata==0.15.5          # via nionswift, nionswift-io
+nionswift==0.16.8         # via pynxtools (dependencies/parsers/nexus/pyproject.toml)
+nionswift-io==0.15.1      # via nionswift
+nionui==0.6.11            # via nionswift
+nionutils==0.4.7          # via niondata, nionswift, nionswift-io, nionui
 nptyping==1.4.4           # via nomad-lab (pyproject.toml)
-numba==0.56.4             # via hyperspy, sparse
+numba==0.56.4             # via diffsims, hyperspy, kikuchipy, orix, pyxem, sparse
 numcodecs==0.10.2         # via zarr
-numexpr==2.8.4            # via hyperspy
-numpy==1.22.4             # via ase, biopython, cftime, dask, f90wrap, griddataformats, gsd, h5grove, h5py, hyperspy, ifes-apt-tc-data-modeling, imageio, matid (dependencies/matid/pyproject.toml), matplotlib, mdanalysis, mdtraj, mrcfile, netcdf4, nomad-lab (pyproject.toml), nptyping, numba, numcodecs, numexpr, pandas, phonopy, pymatgen, pyscf, pywavelets, quippy-ase, radioactivedecay, scikit-image, scikit-learn, scipy, sparse, spglib, tifffile, xarray, zarr
+numexpr==2.8.4            # via hyperspy, pyfai
+numpy==1.22.4             # via ase, biopython, cftime, dask, diffsims, f90wrap, fabio, griddataformats, gsd, h5grove, h5py, hyperspy, ifes-apt-tc-data-modeling, imageio, kikuchipy, lmfit, matid (dependencies/matid/pyproject.toml), matplotlib, mdanalysis, mdtraj, mrcfile, netcdf4, niondata, nionswift, nionswift-io, nionui, nomad-lab (pyproject.toml), nptyping, numba, numcodecs, numexpr, numpy-quaternion, orix, pandas, phonopy, pyfai, pymatgen, pywavelets, pyxem, quippy-ase, radioactivedecay, scikit-image, scikit-learn, scipy, silx, sparse, spglib, tifffile, xarray, zarr
+numpy-quaternion==2022.4.3  # via orix
 oauthenticator==15.1.0    # via nomad-lab (pyproject.toml)
 oauthlib==3.2.2           # via jupyterhub
 openpyxl==3.1.2           # via nomad-lab (pyproject.toml)
 optimade[mongo]==0.22.1   # via nomad-lab (pyproject.toml)
+orix==0.11.1              # via diffsims, kikuchipy, pyxem
 orjson==3.6.0             # via h5grove, nomad-lab (pyproject.toml)
-packaging==23.0           # via dask, docker, hyperspy, ipykernel, jupyter-server, jupyterlab, jupyterlab-server, matplotlib, mdanalysis, mongomock, nbconvert, pint, scikit-image, sphinx, xarray
+packaging==23.0           # via dask, docker, hyperspy, ipykernel, matplotlib, mdanalysis, mongomock, pint, pooch, scikit-image, sphinx
 palettable==3.3.0         # via pymatgen
 pamela==1.0.0             # via jupyterhub
 pandas==1.3.5             # via eelsdbconverter (dependencies/parsers/eelsdb/pyproject.toml), ifes-apt-tc-data-modeling, nomad-lab (pyproject.toml), panedr, pymatgen, xarray
-pandocfilters==1.5.0      # via nbconvert
 panedr==0.2               # via atomisticparsers (dependencies/parsers/atomistic/pyproject.toml), nomad-lab (pyproject.toml)
 parmed==3.0.0             # via nomad-lab (pyproject.toml)
 parso==0.8.3              # via jedi
@@ -178,28 +174,30 @@ passlib==1.7.4            # via nomad-lab (pyproject.toml)
 pexpect==4.8.0            # via ipython
 phonopy==2.11.0           # via asr, nomad-lab (pyproject.toml), workflowparsers (dependencies/parsers/workflow/pyproject.toml)
 pickleshare==0.7.5        # via ipython
-pillow==9.4.0             # via imageio, matplotlib, scikit-image
+pillow==9.4.0             # via imageio, matplotlib, nionswift, scikit-image
 pint==0.17                # via hyperspy, nomad-lab (pyproject.toml)
-platformdirs==3.1.1       # via requests-cache
+platformdirs==3.1.1       # via pooch, requests-cache
 plotly==5.11.0            # via asr, pymatgen
+pooch==1.7.0              # via kikuchipy, orix
 prettytable==3.6.0        # via hyperspy
-prometheus-client==0.15.0  # via jupyter-server, jupyterhub, nbclassic, notebook
+prometheus-client==0.15.0  # via jupyterhub
 prompt-toolkit==3.0.36    # via click-repl, ipython
-psutil==5.9.4             # via ipykernel, ipyparallel
-ptyprocess==0.7.0         # via pexpect, terminado
+psutil==5.9.4             # via diffsims, ipykernel, ipyparallel, pyxem
+ptyprocess==0.7.0         # via pexpect
 pyasn1==0.4.8             # via pyasn1-modules, python-jose, rfc3161ng, rsa
 pyasn1-modules==0.2.8     # via rfc3161ng
 pybtex==0.24.0            # via emmet-core, pymatgen
+pycifrw==4.4.5            # via diffpy-structure
 pycparser==2.21           # via cffi
 pydantic==1.10.9          # via emmet-core, fastapi, nomad-lab (pyproject.toml), optimade
-pygments==2.14.0          # via ipython, nbconvert, sphinx
+pyfai==2023.5.0           # via pyxem
+pygments==2.14.0          # via ipython, sphinx
 pyjwt[crypto]==2.6.0      # via nomad-lab (pyproject.toml)
 pymatgen==2023.2.28       # via asr, emmet-core, mp-api, nomad-lab (pyproject.toml)
 pymongo==3.12.1           # via mongoengine, nomad-lab (pyproject.toml), optimade
 pyopenssl==23.0.0         # via certipy
 pyparsing==3.0.9          # via matplotlib, mdtraj, rdflib
 pyrsistent==0.19.3        # via jsonschema
-pyscf==2.0.1 ; sys_platform == "darwin"  # via electronicparsers (dependencies/parsers/electronic/pyproject.toml)
 python-dateutil==2.8.2    # via arrow, elasticsearch-dsl, hyperspy, ipyparallel, jupyter-client, jupyterhub, matplotlib, pandas, rfc3161ng
 python-dotenv==0.21.0     # via uvicorn
 python-jose==3.3.0        # via python-keycloak
@@ -208,18 +206,20 @@ python-keycloak==0.26.1   # via nomad-lab (pyproject.toml)
 python-logstash==0.4.6    # via nomad-lab (pyproject.toml)
 python-magic==0.4.24      # via nomad-lab (pyproject.toml)
 python-multipart==0.0.5   # via nomad-lab (pyproject.toml)
-pytz==2022.7.1            # via babel, celery, nexusutils (dependencies/parsers/nexus/pyproject.toml), nomad-lab (pyproject.toml), pandas
+pytz==2022.7.1            # via babel, celery, nionswift, nomad-lab (pyproject.toml), pandas, pynxtools (dependencies/parsers/nexus/pyproject.toml)
+pytz-deprecation-shim==0.1.0.post0  # via tzlocal
 pywavelets==1.3.0         # via scikit-image
-pyyaml==6.0               # via dask, electronicparsers (dependencies/parsers/electronic/pyproject.toml), hyperspy, nomad-lab (pyproject.toml), phonopy, pybtex, uvicorn
+pyxem==0.15.1             # via pynxtools (dependencies/parsers/nexus/pyproject.toml)
+pyyaml==6.0               # via dask, electronicparsers (dependencies/parsers/electronic/pyproject.toml), hyperspy, kikuchipy, nomad-lab (pyproject.toml), phonopy, pybtex, uvicorn
 pyzeo==0.1.4              # via nomad-lab (pyproject.toml)
-pyzmq==25.0.0             # via ipykernel, ipyparallel, jupyter-client, jupyter-server, nbclassic, notebook
+pyzmq==25.0.0             # via ipykernel, ipyparallel, jupyter-client
 quippy-ase==0.9.14        # via nomad-lab (pyproject.toml)
 radioactivedecay==0.4.17  # via ifes-apt-tc-data-modeling
 rdflib==5.0.0             # via nomad-lab (pyproject.toml)
 recommonmark==0.7.1       # via nomad-lab (pyproject.toml)
 redis==4.4.2              # via celery
-requests==2.28.2          # via docker, hyperspy, jupyterhub, jupyterlab-server, mp-api, nexusutils (dependencies/parsers/nexus/pyproject.toml), nomad-lab (pyproject.toml), oauthenticator, optimade, pymatgen, python-keycloak, requests-cache, rfc3161ng, sphinx
-requests-cache==1.0.1     # via nexusutils (dependencies/parsers/nexus/pyproject.toml)
+requests==2.28.2          # via docker, eelsdbconverter (dependencies/parsers/eelsdb/pyproject.toml), hyperspy, jupyterhub, mp-api, nomad-lab (pyproject.toml), oauthenticator, optimade, pooch, pymatgen, python-keycloak, requests-cache, rfc3161ng, sphinx
+requests-cache==1.0.1     # via pynxtools (dependencies/parsers/nexus/pyproject.toml)
 rfc3161ng==2.1.3          # via nomad-lab (pyproject.toml)
 rfc3339-validator==0.1.4  # via jsonschema
 rfc3986[idna2008]==1.5.0  # via httpx
@@ -228,12 +228,12 @@ rsa==4.9                  # via python-jose
 ruamel-yaml==0.17.21      # via jupyter-telemetry, oauthenticator, pymatgen
 ruamel-yaml-clib==0.2.7   # via ruamel-yaml
 runstats==2.0.0           # via nomad-lab (pyproject.toml)
-scikit-image==0.19.3      # via hyperspy
-scikit-learn==1.0.2       # via matid (dependencies/matid/pyproject.toml), nomad-lab (pyproject.toml)
-scipy==1.7.1              # via ase, griddataformats, hyperspy, matid (dependencies/matid/pyproject.toml), mdanalysis, mdtraj, nomad-lab (pyproject.toml), pymatgen, pyscf, radioactivedecay, scikit-image, scikit-learn, sparse
-send2trash==1.8.0         # via jupyter-server, nbclassic, notebook
+scikit-image==0.19.3      # via hyperspy, kikuchipy, pyxem
+scikit-learn==1.0.2       # via kikuchipy, matid (dependencies/matid/pyproject.toml), nomad-lab (pyproject.toml), pyxem
+scipy==1.7.1              # via ase, diffsims, griddataformats, hyperspy, kikuchipy, lmfit, matid (dependencies/matid/pyproject.toml), mdanalysis, mdtraj, niondata, nionswift, nomad-lab (pyproject.toml), orix, pyfai, pymatgen, pyxem, radioactivedecay, scikit-image, scikit-learn, sparse
 sentinels==1.0.0          # via mongomock
-six==1.16.0               # via astunparse, basicauth, bcrypt, bleach, click-repl, ecdsa, elasticsearch-dsl, griddataformats, html5lib, isodate, latexcodec, pybtex, python-dateutil, python-multipart, rdflib, rfc3339-validator, url-normalize, validators
+silx==1.1.2               # via pyfai
+six==1.16.0               # via astunparse, basicauth, bcrypt, click-repl, diffpy-structure, ecdsa, elasticsearch-dsl, griddataformats, html5lib, isodate, latexcodec, pybtex, python-dateutil, python-multipart, rdflib, rfc3339-validator, url-normalize, validators
 smmap==5.0.0              # via gitdb
 sniffio==1.3.0            # via anyio, httpcore, httpx
 snowballstemmer==2.2.0    # via sphinx
@@ -253,39 +253,41 @@ structlog==22.3.0         # via nomad-lab (pyproject.toml)
 sympy==1.10.1             # via hyperspy, pymatgen, radioactivedecay
 tabulate==0.8.9           # via nomad-lab (pyproject.toml), pymatgen
 tenacity==8.1.0           # via plotly
-terminado==0.17.1         # via jupyter-server, nbclassic, notebook
 threadpoolctl==3.1.0      # via mdanalysis, scikit-learn
 tifffile==2021.11.2       # via h5grove, hyperspy, scikit-image
-tinycss2==1.2.1           # via nbconvert
-tomli==2.0.1              # via jupyterlab
 toolz==0.12.0             # via dask, hyperspy, partd
 toposort==1.9             # via nomad-lab (pyproject.toml)
-tornado==6.2              # via ipykernel, ipyparallel, jupyter-client, jupyter-server, jupyterhub, jupyterlab, nbclassic, notebook, terminado
-tqdm==4.64.1              # via hyperspy, ipyparallel, mdanalysis, pymatgen
-traitlets==5.8.1          # via ipykernel, ipyparallel, ipython, jupyter-client, jupyter-core, jupyter-server, jupyter-telemetry, jupyterhub, matplotlib-inline, nbclassic, nbclient, nbconvert, nbformat, notebook
+tornado==6.2              # via ipykernel, ipyparallel, jupyter-client, jupyterhub
+tqdm==4.64.1              # via diffsims, hyperspy, ipyparallel, kikuchipy, mdanalysis, orix, pymatgen
+traitlets==5.8.1          # via ipykernel, ipyparallel, ipython, ipywidgets, jupyter-client, jupyter-core, jupyter-telemetry, jupyterhub, matplotlib-inline
 traits==6.4.1             # via hyperspy
+transforms3d==0.4.1       # via diffsims, pyxem
 typing-extensions==4.4.0  # via emmet-core, gitpython, mp-api, numcodecs, pydantic, starlette
 typish==1.9.3             # via nptyping
-uncertainties==3.1.7      # via pymatgen
+tzdata==2023.3            # via pytz-deprecation-shim
+tzlocal==4.3              # via nionswift, pynxtools (dependencies/parsers/nexus/pyproject.toml)
+uncertainties==3.1.7      # via lmfit, pymatgen
 unidecode==1.3.2          # via nomad-lab (pyproject.toml)
 uri-template==1.2.0       # via jsonschema
 url-normalize==1.4.3      # via requests-cache
 urllib3==1.26.14          # via docker, elasticsearch, requests, requests-cache
-uvicorn[standard]==0.20.0  # via nomad-lab (pyproject.toml)
+uvicorn[standard]==0.20.0  # via h5grove, nomad-lab (pyproject.toml)
 uvloop==0.17.0            # via uvicorn
 validators==0.18.2        # via nomad-lab (pyproject.toml)
 vine==5.0.0               # via amqp, celery, kombu
 watchfiles==0.18.1        # via uvicorn
 wcwidth==0.2.5            # via prettytable, prompt-toolkit
 webcolors==1.12           # via jsonschema
-webencodings==0.5.1       # via bleach, html5lib, tinycss2
-websocket-client==1.4.2   # via docker, jupyter-server
+webencodings==0.5.1       # via html5lib
+websocket-client==1.4.2   # via docker
 websockets==10.4          # via uvicorn
 werkzeug==2.2.2           # via flask
 wheel==0.38.4             # via astunparse
+widgetsnbextension==4.0.8  # via ipywidgets
 wrapt==1.12.1             # via nomad-lab (pyproject.toml)
-xarray==2023.1.0          # via nexusutils (dependencies/parsers/nexus/pyproject.toml), nomad-lab (pyproject.toml)
+xarray==0.20.2            # via nomad-lab (pyproject.toml), pynxtools (dependencies/parsers/nexus/pyproject.toml)
 zarr==2.12.0              # via hyperspy
+zipfile37==0.1.3          # via pynxtools (dependencies/parsers/nexus/pyproject.toml)
 zipp==3.11.0              # via importlib-metadata
 zipstream-new==1.1.5      # via nomad-lab (pyproject.toml)
 
diff --git a/tests/metainfo/test_metainfo.py b/tests/metainfo/test_metainfo.py
index bd0035aac4..7329991ff7 100644
--- a/tests/metainfo/test_metainfo.py
+++ b/tests/metainfo/test_metainfo.py
@@ -778,6 +778,18 @@ class TestM1:
         assert copy.systems[0].m_parent_index == 0
         assert copy.systems[0].m_parent_sub_section is run.systems[0].m_parent_sub_section
 
+    def test_copy_keeps_m_sub_section_list(self):
+        run = Run()
+        run.m_create(Parsing).parser_name = 'test'
+        system = run.m_create(System)
+        system.atom_labels = ['H', 'O']
+
+        copy = run.m_copy(deep=True)
+        copy.systems.append(System())
+
+        copy2 = copy.m_copy(deep=True)
+        copy2.m_to_dict()
+
     def test_not_default_defaults(self):
         class TestSection(MSection):
             int_quantity = Quantity(type=int)
-- 
GitLab