From 3a41d5c81ad4c9e22a4675f7250db935d5525835 Mon Sep 17 00:00:00 2001
From: Bradlee Speice <bradlee@speice.io>
Date: Sun, 17 Nov 2024 17:30:07 -0500
Subject: [PATCH] Render the gasket

Need to get rid of Plotly, unfortuantely - causes issues with hydration. Seems like Victory is better able to handle what I need.
---
 .../{ => 1-introduction}/1-introduction.mdx   |   41 +-
 .../1-introduction/Gasket.jsx                 |   43 +
 .../1-introduction/biunit.ts                  |    3 +
 .../1-introduction/plot.ts                    |   32 +
 .../1-introduction/randint.ts                 |    3 +
 .../1-introduction/scope.ts                   |   14 +
 blog/2024-11-15-playing-with-fire/utility.ts  |   29 -
 docusaurus.config.ts                          |    3 +-
 package-lock.json                             | 2008 +++++++++++++----
 package.json                                  |   11 +-
 10 files changed, 1737 insertions(+), 450 deletions(-)
 rename blog/2024-11-15-playing-with-fire/{ => 1-introduction}/1-introduction.mdx (83%)
 create mode 100644 blog/2024-11-15-playing-with-fire/1-introduction/Gasket.jsx
 create mode 100644 blog/2024-11-15-playing-with-fire/1-introduction/biunit.ts
 create mode 100644 blog/2024-11-15-playing-with-fire/1-introduction/plot.ts
 create mode 100644 blog/2024-11-15-playing-with-fire/1-introduction/randint.ts
 create mode 100644 blog/2024-11-15-playing-with-fire/1-introduction/scope.ts
 delete mode 100644 blog/2024-11-15-playing-with-fire/utility.ts

diff --git a/blog/2024-11-15-playing-with-fire/1-introduction.mdx b/blog/2024-11-15-playing-with-fire/1-introduction/1-introduction.mdx
similarity index 83%
rename from blog/2024-11-15-playing-with-fire/1-introduction.mdx
rename to blog/2024-11-15-playing-with-fire/1-introduction/1-introduction.mdx
index d1a756b..8331205 100644
--- a/blog/2024-11-15-playing-with-fire/1-introduction.mdx
+++ b/blog/2024-11-15-playing-with-fire/1-introduction/1-introduction.mdx
@@ -1,6 +1,6 @@
 ---
 slug: 2024/11/playing-with-fire
-title: "Playing with fire: Introduction"
+title: "Playing with fire: The fractal flame algorithm"
 date: 2024-11-15 12:00:00
 authors: [bspeice]
 tags: []
@@ -12,9 +12,9 @@ Wikipedia [describes](https://en.wikipedia.org/wiki/Fractal_flame) fractal flame
 
 I think of them a different way: beauty in mathematics.
 
-import isDarkMode from "@site/src/isDarkMode";
-import bannerDark from "./banner-dark.png"
-import bannerLight from "./banner-light.png"
+import isDarkMode from '@site/src/isDarkMode'
+import bannerDark from '../banner-dark.png'
+import bannerLight from '../banner-light.png'
 
 <center>
     <!-- Why are these backwards? -->
@@ -201,6 +201,8 @@ $$
 
 ### The chaos game
 
+import CodeBlock from '@theme/CodeBlock'
+
 Next, how do we find out all the points in $S$? The paper lays out an algorithm called the "chaos game":
 
 $$
@@ -212,4 +214,33 @@ $$
 &\hspace{1cm} \text{plot}(x,y) \text{ except during the first 20 iterations} \\
 \}
 \end{align*}
-$$
\ No newline at end of file
+$$
+
+Let's turn this into code, one piece at a time.
+
+First, the "bi-unit square" is the range $[-1, 1]$. We can pick a random point like this:
+
+import biunitSource from '!!raw-loader!./biunit'
+
+<CodeBlock language="typescript">{biunitSource}</CodeBlock>
+
+Next, we need to choose a random integer from $0$ to $n - 1$:
+
+import randintSource from '!!raw-loader!./randint'
+
+<CodeBlock language="typescript">{randintSource}</CodeBlock>
+
+Finally, implementing the `plot` function. Web browsers have a [Canvas API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API)
+we can use for 2D graphics. In our case, the plot function will take an $(x,y)$ coordinate and plot it by
+coloring the corresponding pixel in an [ImageData](https://developer.mozilla.org/en-US/docs/Web/API/ImageData):
+
+import plotSource from '!!raw-loader!./plot'
+
+<CodeBlock language="typescript">{plotSource}</CodeBlock>
+
+import Playground from '@theme/Playground'
+import Scope from './scope'
+
+import Gasket from '!!raw-loader!./Gasket'
+
+<Playground scope={Scope}>{Gasket}</Playground>
diff --git a/blog/2024-11-15-playing-with-fire/1-introduction/Gasket.jsx b/blog/2024-11-15-playing-with-fire/1-introduction/Gasket.jsx
new file mode 100644
index 0000000..59f25f0
--- /dev/null
+++ b/blog/2024-11-15-playing-with-fire/1-introduction/Gasket.jsx
@@ -0,0 +1,43 @@
+function Gasket(props) {
+    const iterations = 1000;
+    const functions = [
+        (x, y) => [x / 2, y / 2],
+        (x, y) => [(x + 1) / 2, y / 2],
+        (x, y) => [x / 2, (y + 1) / 2]
+    ]
+
+    function chaosGame(image) {
+        var [x, y] = [randomBiUnit(), randomBiUnit()];
+
+        for (var i = 0; i < iterations; i++) {
+            const f = functions[randomInteger(0, functions.length)];
+            [x, y] = f(x, y);
+
+            if (i > 20) {
+                plot(x, y, image);
+            }
+        }
+    }
+
+    function onClickRender() {
+        /** @type{HTMLCanvasElement} */
+        const canvas = document.getElementById('canvas-gasket');
+        const context = canvas.getContext('2d');
+        const image = context.createImageData(canvas.width, canvas.height);
+        chaosGame(image);
+        context.putImageData(image, 0, 0);
+    }
+
+    return <div style={{width: '100%'}}>
+        <center>
+            <button onClick={onClickRender}>Play chaos game</button>
+            <hr/>
+        </center>
+        <div>
+            <canvas
+                id={'canvas-gasket'}
+                style={{width: '100%', aspectRatio: '1 / 1'}}
+            />
+        </div>
+    </div>
+}
diff --git a/blog/2024-11-15-playing-with-fire/1-introduction/biunit.ts b/blog/2024-11-15-playing-with-fire/1-introduction/biunit.ts
new file mode 100644
index 0000000..c8e17c6
--- /dev/null
+++ b/blog/2024-11-15-playing-with-fire/1-introduction/biunit.ts
@@ -0,0 +1,3 @@
+export default function randomBiUnit(): number {
+    return Math.random() * 2 - 1;
+}
\ No newline at end of file
diff --git a/blog/2024-11-15-playing-with-fire/1-introduction/plot.ts b/blog/2024-11-15-playing-with-fire/1-introduction/plot.ts
new file mode 100644
index 0000000..3bf9f03
--- /dev/null
+++ b/blog/2024-11-15-playing-with-fire/1-introduction/plot.ts
@@ -0,0 +1,32 @@
+export default function plot(x: number, y: number, image: ImageData) {
+    // Translate (x,y) coordinates to pixel coordinates.
+    // The display range we care about is x=[0, 1], y=[0, 1],
+    // so our pixelX and pixelY coordinates are easy to calculate:
+    const pixelX = Math.floor(x * image.width);
+    const pixelY = Math.floor(y * image.height);
+
+    // If we have an (x,y) coordinate outside the display range,
+    // skip it
+    if (
+        pixelX < 0 ||
+        pixelX > image.width ||
+        pixelY < 0 ||
+        pixelY > image.height
+    ) {
+        return;
+    }
+
+    // ImageData is an array that contains four bytes per pixel
+    // (one for each of the red, green, blue, and alpha values).
+    // The (pixelX, pixelY) coordinates are used to find where
+    // in the image we need to write.
+    const index = pixelY * (image.width * 4) + pixelX * 4;
+
+    // Set the pixel to black by writing a 0 to the first three
+    // bytes (red, green, blue), and 256 to the last byte (alpha),
+    // starting at our index:
+    image.data[index] = 0;
+    image.data[index + 1] = 0;
+    image.data[index + 2] = 0;
+    image.data[index + 3] = 0xff;
+}
\ No newline at end of file
diff --git a/blog/2024-11-15-playing-with-fire/1-introduction/randint.ts b/blog/2024-11-15-playing-with-fire/1-introduction/randint.ts
new file mode 100644
index 0000000..0e922ba
--- /dev/null
+++ b/blog/2024-11-15-playing-with-fire/1-introduction/randint.ts
@@ -0,0 +1,3 @@
+export default function randomInteger(min: number, max: number): number {
+    return Math.floor(Math.random() * (max - min)) + min;
+}
\ No newline at end of file
diff --git a/blog/2024-11-15-playing-with-fire/1-introduction/scope.ts b/blog/2024-11-15-playing-with-fire/1-introduction/scope.ts
new file mode 100644
index 0000000..2d4c411
--- /dev/null
+++ b/blog/2024-11-15-playing-with-fire/1-introduction/scope.ts
@@ -0,0 +1,14 @@
+import React from 'react';
+
+import randomBiUnit from './biunit';
+import plot from './plot';
+import randomInteger from './randint';
+
+
+const Scope = {
+    React,
+    plot,
+    randomBiUnit,
+    randomInteger
+}
+export default Scope;
\ No newline at end of file
diff --git a/blog/2024-11-15-playing-with-fire/utility.ts b/blog/2024-11-15-playing-with-fire/utility.ts
deleted file mode 100644
index 13c0039..0000000
--- a/blog/2024-11-15-playing-with-fire/utility.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * Generate a uniform random number in the range (-1, 1)
- * 
- * @returns
- */
-export function randomBiUnit() {
-  return Math.random() * 2 - 1;
-}
-
-/**
- * Generate a uniform random integer in the range [min, max)
- * 
- * @param min 
- * @param max 
- * @returns 
- */
-export function randomInteger(min: number, max: number) {
-  return Math.floor(Math.random() * (max - min)) + min;
-}
-
-// https://stackoverflow.com/a/34356351
-export function hexToBytes(hex: string) {
-  var bytes = [];
-  for (var i = 0; i < hex.length; i += 2) {
-    bytes.push(parseInt(hex.substring(i, i + 2), 16));
-  }
-
-  return bytes;
-}
\ No newline at end of file
diff --git a/docusaurus.config.ts b/docusaurus.config.ts
index 9667860..e2ee794 100644
--- a/docusaurus.config.ts
+++ b/docusaurus.config.ts
@@ -28,13 +28,14 @@ const config: Config = {
     locales: ['en'],
   },
 
+  themes: ['@docusaurus/theme-live-codeblock'],
   presets: [
     [
       'classic',
       {
         docs: false,
         blog: {
-          routeBasePath: "/",
+          routeBasePath: '/',
           blogSidebarTitle: 'All posts',
           blogSidebarCount: 'ALL',
           showReadingTime: true,
diff --git a/package-lock.json b/package-lock.json
index b581d29..4878ca7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,19 +8,22 @@
       "name": "speice-io",
       "version": "0.0.0",
       "dependencies": {
-        "@docusaurus/core": "^3.6.0",
-        "@docusaurus/faster": "^3.5.2",
-        "@docusaurus/preset-classic": "^3.6.0",
+        "@docusaurus/core": "^3.6.1",
+        "@docusaurus/faster": "^3.6.1",
+        "@docusaurus/preset-classic": "^3.6.1",
+        "@docusaurus/theme-live-codeblock": "^3.6.1",
         "@mdx-js/react": "^3.0.0",
         "clsx": "^2.0.0",
         "docusaurus-lunr-search": "^3.5.0",
         "plotly.js": "^2.35.2",
         "prism-react-renderer": "^2.3.0",
+        "raw-loader": "^4.0.2",
         "react": "^18.0.0",
         "react-dom": "^18.0.0",
         "react-plotly.js": "^2.6.0",
         "rehype-katex": "^7.0.1",
-        "remark-math": "^6.0.0"
+        "remark-math": "^6.0.0",
+        "victory": "^37.3.2"
       },
       "devDependencies": {
         "@docusaurus/module-type-aliases": "^3.6.0",
@@ -33,31 +36,31 @@
       }
     },
     "node_modules/@algolia/autocomplete-core": {
-      "version": "1.17.6",
-      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.6.tgz",
-      "integrity": "sha512-lkDoW4I7h2kKlIgf3pUt1LqvxyYKkVyiypoGLlUnhPSnCpmeOwudM6rNq6YYsCmdQtnDQoW5lUNNuj6ASg3qeg==",
+      "version": "1.17.7",
+      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz",
+      "integrity": "sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==",
       "dependencies": {
-        "@algolia/autocomplete-plugin-algolia-insights": "1.17.6",
-        "@algolia/autocomplete-shared": "1.17.6"
+        "@algolia/autocomplete-plugin-algolia-insights": "1.17.7",
+        "@algolia/autocomplete-shared": "1.17.7"
       }
     },
     "node_modules/@algolia/autocomplete-plugin-algolia-insights": {
-      "version": "1.17.6",
-      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.6.tgz",
-      "integrity": "sha512-17NnaacuFzSWVuZu4NKzVeaFIe9Abpw8w+/gjc7xhZFtqj+GadufzodIdchwiB2eM2cDdiR3icW7gbNTB3K2YA==",
+      "version": "1.17.7",
+      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz",
+      "integrity": "sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==",
       "dependencies": {
-        "@algolia/autocomplete-shared": "1.17.6"
+        "@algolia/autocomplete-shared": "1.17.7"
       },
       "peerDependencies": {
         "search-insights": ">= 1 < 3"
       }
     },
     "node_modules/@algolia/autocomplete-preset-algolia": {
-      "version": "1.17.6",
-      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.6.tgz",
-      "integrity": "sha512-Cvg5JENdSCMuClwhJ1ON1/jSuojaYMiUW2KePm18IkdCzPJj/NXojaOxw58RFtQFpJgfVW8h2E8mEoDtLlMdeA==",
+      "version": "1.17.7",
+      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz",
+      "integrity": "sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==",
       "dependencies": {
-        "@algolia/autocomplete-shared": "1.17.6"
+        "@algolia/autocomplete-shared": "1.17.7"
       },
       "peerDependencies": {
         "@algolia/client-search": ">= 4.9.1 < 6",
@@ -65,9 +68,9 @@
       }
     },
     "node_modules/@algolia/autocomplete-shared": {
-      "version": "1.17.6",
-      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.6.tgz",
-      "integrity": "sha512-aq/3V9E00Tw2GC/PqgyPGXtqJUlVc17v4cn1EUhSc+O/4zd04Uwb3UmPm8KDaYQQOrkt1lwvCj2vG2wRE5IKhw==",
+      "version": "1.17.7",
+      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz",
+      "integrity": "sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==",
       "peerDependencies": {
         "@algolia/client-search": ">= 4.9.1 < 6",
         "algoliasearch": ">= 4.9.1 < 6"
@@ -95,14 +98,14 @@
       }
     },
     "node_modules/@algolia/client-abtesting": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.13.0.tgz",
-      "integrity": "sha512-6CoQjlMi1pmQYMQO8tXfuGxSPf6iKX5FP9MuMe6IWmvC81wwTvOehnwchyBl2wuPVhcw2Ar53K53mQ60DAC64g==",
+      "version": "5.14.2",
+      "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.14.2.tgz",
+      "integrity": "sha512-7fq1tWIy1aNJEaNHxWy3EwDkuo4k22+NBnxq9QlYVSLLXtr6HqmAm6bQgNNzGT3vm21iKqWO9efk+HIhEM1SzQ==",
       "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@algolia/client-common": "5.14.2",
+        "@algolia/requester-browser-xhr": "5.14.2",
+        "@algolia/requester-fetch": "5.14.2",
+        "@algolia/requester-node-http": "5.14.2"
       },
       "engines": {
         "node": ">= 14.0.0"
@@ -168,22 +171,22 @@
       }
     },
     "node_modules/@algolia/client-common": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.13.0.tgz",
-      "integrity": "sha512-2SP6bGGWOTN920MLZv8s7yIR3OqY03vEe4U+vb2MGdL8a/8EQznF3L/nTC/rGf/hvEfZlX2tGFxPJaF2waravg==",
+      "version": "5.14.2",
+      "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.14.2.tgz",
+      "integrity": "sha512-BW1Qzhh9tMKEsWSQQsiOEcHAd6g7zxq9RpPVmyxbDO/O4eA4vyN+Qz5Jzo686kuYdIQKqIPCEtob/JM89tk57g==",
       "engines": {
         "node": ">= 14.0.0"
       }
     },
     "node_modules/@algolia/client-insights": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.13.0.tgz",
-      "integrity": "sha512-ldHTe+LVgC6L4Wr6doAQQ7Ku0jAdhaaPg1T+IHzmmiRZb2Uq5OsjW2yC65JifOmzPCiMkIZE2mGRpWgkn5ktlw==",
+      "version": "5.14.2",
+      "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.14.2.tgz",
+      "integrity": "sha512-17zg6pqifKORvvrMIqW6HhwUry9RKRXLgADrgFjZ6PZvGB4oVs12dwRG2/HMrIlpxd9cjeQfdlEgHj6lbAf6QA==",
       "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@algolia/client-common": "5.14.2",
+        "@algolia/requester-browser-xhr": "5.14.2",
+        "@algolia/requester-fetch": "5.14.2",
+        "@algolia/requester-node-http": "5.14.2"
       },
       "engines": {
         "node": ">= 14.0.0"
@@ -209,28 +212,28 @@
       }
     },
     "node_modules/@algolia/client-query-suggestions": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.13.0.tgz",
-      "integrity": "sha512-pYo0jbLUtPDN1r341UHTaF2fgN5rbaZfDZqjPRKPM+FRlRmxFxqFQm1UUfpkSUWYGn7lECwDpbKYiKUf81MTwA==",
+      "version": "5.14.2",
+      "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.14.2.tgz",
+      "integrity": "sha512-gvCX/cczU76Bu1sGcxxTdoIwxe+FnuC1IlW9SF/gzxd3ZzsgzBpzD2puIJqt9fHQsjLxVGkJqKev2FtExnJYZg==",
       "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@algolia/client-common": "5.14.2",
+        "@algolia/requester-browser-xhr": "5.14.2",
+        "@algolia/requester-fetch": "5.14.2",
+        "@algolia/requester-node-http": "5.14.2"
       },
       "engines": {
         "node": ">= 14.0.0"
       }
     },
     "node_modules/@algolia/client-search": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.13.0.tgz",
-      "integrity": "sha512-s2ge3uZ6Zg2sPSFibqijgEYsuorxcc8KVHg3I95nOPHvFHdnBtSHymhZvq4sp/fu8ijt/Y8jLwkuqm5myn+2Sg==",
+      "version": "5.14.2",
+      "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.14.2.tgz",
+      "integrity": "sha512-0imdBZDjqxrshw0+eyJUgnkRAbS2W93UQ3BVj8VjN4xQylIMf0fWs72W7MZFdHlH78JJYydevgzqvGMcV0Z1CA==",
       "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@algolia/client-common": "5.14.2",
+        "@algolia/requester-browser-xhr": "5.14.2",
+        "@algolia/requester-fetch": "5.14.2",
+        "@algolia/requester-node-http": "5.14.2"
       },
       "engines": {
         "node": ">= 14.0.0"
@@ -242,14 +245,14 @@
       "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ=="
     },
     "node_modules/@algolia/ingestion": {
-      "version": "1.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.13.0.tgz",
-      "integrity": "sha512-fm5LEOe4FPDOc1D+M9stEs8hfcdmbdD+pt9og5shql6ueTZJANDbFoQhDOpiPJizR/ps1GwmjkWfUEywx3sV+Q==",
+      "version": "1.14.2",
+      "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.14.2.tgz",
+      "integrity": "sha512-/p4rBNkW0fgCpCwrwre+jHfzlFQsLemgaAQqyui8NPxw95Wgf3p+DKxYzcmh8dygT7ub7FwztTW+uURLX1uqIQ==",
       "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@algolia/client-common": "5.14.2",
+        "@algolia/requester-browser-xhr": "5.14.2",
+        "@algolia/requester-fetch": "5.14.2",
+        "@algolia/requester-node-http": "5.14.2"
       },
       "engines": {
         "node": ">= 14.0.0"
@@ -269,14 +272,14 @@
       }
     },
     "node_modules/@algolia/monitoring": {
-      "version": "1.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.13.0.tgz",
-      "integrity": "sha512-e8Hshlnm2G5fapyUgWTBwhJ22yXcnLtPC4LWZKx7KOvv35GcdoHtlUBX94I/sWCJLraUr65JvR8qOo3LXC43dg==",
+      "version": "1.14.2",
+      "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.14.2.tgz",
+      "integrity": "sha512-81R57Y/mS0uNhWpu6cNEfkbkADLW4bP0BNjuPpxAypobv7WzYycUnbMvv1YkN6OsociB4+3M7HfsVzj4Nc09vA==",
       "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@algolia/client-common": "5.14.2",
+        "@algolia/requester-browser-xhr": "5.14.2",
+        "@algolia/requester-fetch": "5.14.2",
+        "@algolia/requester-node-http": "5.14.2"
       },
       "engines": {
         "node": ">= 14.0.0"
@@ -336,11 +339,11 @@
       }
     },
     "node_modules/@algolia/requester-browser-xhr": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.13.0.tgz",
-      "integrity": "sha512-NV6oSCt5lFuzfsVQoSBpewEWf/h4ySr7pv2bfwu9yF/jc/g39pig8+YpuqsxlRWBm/lTGVA2V0Ai9ySwrNumIA==",
+      "version": "5.14.2",
+      "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.14.2.tgz",
+      "integrity": "sha512-irUvkK+TGBhyivtNCIIbVgNUgbUoHOSk8m/kFX4ddto/PUPmLFRRNNnMHtJ1+OzrJ/uD3Am4FUK2Yt+xgQr05w==",
       "dependencies": {
-        "@algolia/client-common": "5.13.0"
+        "@algolia/client-common": "5.14.2"
       },
       "engines": {
         "node": ">= 14.0.0"
@@ -352,22 +355,22 @@
       "integrity": "sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA=="
     },
     "node_modules/@algolia/requester-fetch": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.13.0.tgz",
-      "integrity": "sha512-094bK4rumf+rXJazxv3mq6eKRM0ep5AxIo8T0YmOdldswQt79apeufFiPLN19nHEWH22xR2FelimD+T/wRSP+Q==",
+      "version": "5.14.2",
+      "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.14.2.tgz",
+      "integrity": "sha512-UNBg5mM4MIYdxPuVjyDL22BC6P87g7WuM91Z1Ky0J19aEGvCSF+oR+9autthROFXdRnAa1rACOjuqn95iBbKpw==",
       "dependencies": {
-        "@algolia/client-common": "5.13.0"
+        "@algolia/client-common": "5.14.2"
       },
       "engines": {
         "node": ">= 14.0.0"
       }
     },
     "node_modules/@algolia/requester-node-http": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.13.0.tgz",
-      "integrity": "sha512-JY5xhEYMgki53Wm+A6R2jUpOUdD0zZnBq+PC5R1TGMNOYL1s6JjDrJeMsvaI2YWxYMUSoCnRoltN/yf9RI8n3A==",
+      "version": "5.14.2",
+      "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.14.2.tgz",
+      "integrity": "sha512-CTFA03YiLcnpP+JoLRqjHt5pqDHuKWJpLsIBY/60Gmw8pjALZ3TwvbAquRX4Vy+yrin178NxMuU+ilZ54f2IrQ==",
       "dependencies": {
-        "@algolia/client-common": "5.13.0"
+        "@algolia/client-common": "5.14.2"
       },
       "engines": {
         "node": ">= 14.0.0"
@@ -2024,18 +2027,18 @@
       }
     },
     "node_modules/@docsearch/css": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.7.0.tgz",
-      "integrity": "sha512-1OorbTwi1eeDmr0v5t+ckSRlt1zM5GHjm92iIl3kUu7im3GHuP+csf6E0WBg8pdXQczTWP9J9+o9n+Vg6DH5cQ=="
+      "version": "3.8.0",
+      "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.8.0.tgz",
+      "integrity": "sha512-pieeipSOW4sQ0+bE5UFC51AOZp9NGxg89wAlZ1BAQFaiRAGK1IKUaPQ0UGZeNctJXyqZ1UvBtOQh2HH+U5GtmA=="
     },
     "node_modules/@docsearch/react": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.7.0.tgz",
-      "integrity": "sha512-8e6tdDfkYoxafEEPuX5eE1h9cTkLvhe4KgoFkO5JCddXSQONnN1FHcDZRI4r8894eMpbYq6rdJF0dVYh8ikwNQ==",
+      "version": "3.8.0",
+      "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.8.0.tgz",
+      "integrity": "sha512-WnFK720+iwTVt94CxY3u+FgX6exb3BfN5kE9xUY6uuAH/9W/UFboBZFLlrw/zxFRHoHZCOXRtOylsXF+6LHI+Q==",
       "dependencies": {
-        "@algolia/autocomplete-core": "1.17.6",
-        "@algolia/autocomplete-preset-algolia": "1.17.6",
-        "@docsearch/css": "3.7.0",
+        "@algolia/autocomplete-core": "1.17.7",
+        "@algolia/autocomplete-preset-algolia": "1.17.7",
+        "@docsearch/css": "3.8.0",
         "algoliasearch": "^5.12.0"
       },
       "peerDependencies": {
@@ -2060,74 +2063,74 @@
       }
     },
     "node_modules/@docsearch/react/node_modules/@algolia/client-analytics": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.13.0.tgz",
-      "integrity": "sha512-pS3qyXiWTwKnrt/jE79fqkNqZp7kjsFNlJDcBGkSWid74DNc6DmArlkvPqyLxnoaYGjUGACT6g56n7E3mVV2TA==",
+      "version": "5.14.2",
+      "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.14.2.tgz",
+      "integrity": "sha512-5Nm5cOOyAGcY+hKNJVmR2jgoGn1nvoANS8W5EfB8yAaUqUxL3lFNUHSkFafAMTCOcVKNDkZQYjUDbOOfdYJLqw==",
       "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@algolia/client-common": "5.14.2",
+        "@algolia/requester-browser-xhr": "5.14.2",
+        "@algolia/requester-fetch": "5.14.2",
+        "@algolia/requester-node-http": "5.14.2"
       },
       "engines": {
         "node": ">= 14.0.0"
       }
     },
     "node_modules/@docsearch/react/node_modules/@algolia/client-personalization": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.13.0.tgz",
-      "integrity": "sha512-RnCfOSN4OUJDuMNHFca2M8lY64Tmw0kQOZikge4TknTqHmlbKJb8IbJE7Rol79Z80W2Y+B1ydcjV7DPje4GMRA==",
+      "version": "5.14.2",
+      "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.14.2.tgz",
+      "integrity": "sha512-5IYt8vbmTA52xyuaZKFwiRoDPeh7hiOC9aBZqqp9fVs6BU01djI/T8pGJXawvwczltCPYzNsdbllV3rqiDbxmQ==",
       "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@algolia/client-common": "5.14.2",
+        "@algolia/requester-browser-xhr": "5.14.2",
+        "@algolia/requester-fetch": "5.14.2",
+        "@algolia/requester-node-http": "5.14.2"
       },
       "engines": {
         "node": ">= 14.0.0"
       }
     },
     "node_modules/@docsearch/react/node_modules/@algolia/recommend": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.13.0.tgz",
-      "integrity": "sha512-53/wW96oaj1FKMzGdFcZ/epygfTppLDUvgI1thLkd475EtVZCH3ZZVUNCEvf1AtnNyH1RnItkFzX8ayWCpx2PQ==",
+      "version": "5.14.2",
+      "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.14.2.tgz",
+      "integrity": "sha512-OwELnAZxCUyfjYjqsrFmC7Vfa12kqwbDdLUV0oi4j+4pxDsfPgkiZ6iCH2uPw6X8VK88Hl3InPt+RPaZvcrCWg==",
       "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@algolia/client-common": "5.14.2",
+        "@algolia/requester-browser-xhr": "5.14.2",
+        "@algolia/requester-fetch": "5.14.2",
+        "@algolia/requester-node-http": "5.14.2"
       },
       "engines": {
         "node": ">= 14.0.0"
       }
     },
     "node_modules/@docsearch/react/node_modules/algoliasearch": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.13.0.tgz",
-      "integrity": "sha512-04lyQX3Ev/oLYQx+aagamQDXvkUUfX1mwrLrus15+9fNaYj28GDxxEzbwaRfvmHFcZyoxvup7mMtDTTw8SrTEQ==",
+      "version": "5.14.2",
+      "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.14.2.tgz",
+      "integrity": "sha512-aYjI4WLamMxbhdJ2QAA99VbDCJOGzMOdT2agh57bi40n86ufkhZSIAf6mkocr7NmtBLtwCnSHvD5NJ+Ky5elWw==",
       "dependencies": {
-        "@algolia/client-abtesting": "5.13.0",
-        "@algolia/client-analytics": "5.13.0",
-        "@algolia/client-common": "5.13.0",
-        "@algolia/client-insights": "5.13.0",
-        "@algolia/client-personalization": "5.13.0",
-        "@algolia/client-query-suggestions": "5.13.0",
-        "@algolia/client-search": "5.13.0",
-        "@algolia/ingestion": "1.13.0",
-        "@algolia/monitoring": "1.13.0",
-        "@algolia/recommend": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@algolia/client-abtesting": "5.14.2",
+        "@algolia/client-analytics": "5.14.2",
+        "@algolia/client-common": "5.14.2",
+        "@algolia/client-insights": "5.14.2",
+        "@algolia/client-personalization": "5.14.2",
+        "@algolia/client-query-suggestions": "5.14.2",
+        "@algolia/client-search": "5.14.2",
+        "@algolia/ingestion": "1.14.2",
+        "@algolia/monitoring": "1.14.2",
+        "@algolia/recommend": "5.14.2",
+        "@algolia/requester-browser-xhr": "5.14.2",
+        "@algolia/requester-fetch": "5.14.2",
+        "@algolia/requester-node-http": "5.14.2"
       },
       "engines": {
         "node": ">= 14.0.0"
       }
     },
     "node_modules/@docusaurus/babel": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.6.0.tgz",
-      "integrity": "sha512-7CsoQFiadoq7AHSUIQNkI/lGfg9AQ2ZBzsf9BqfZGXkHwWDy6twuohEaG0PgQv1npSRSAB2dioVxhRSErnqKNA==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.6.1.tgz",
+      "integrity": "sha512-JcKaunW8Ml2nTnfnvFc55T00Y+aCpNWnf1KY/gG+wWxHYDH0IdXOOz+k6NAlEAerW8+VYLfUqRIqHZ7N/DVXvQ==",
       "dependencies": {
         "@babel/core": "^7.25.9",
         "@babel/generator": "^7.25.9",
@@ -2139,8 +2142,8 @@
         "@babel/runtime": "^7.25.9",
         "@babel/runtime-corejs3": "^7.25.9",
         "@babel/traverse": "^7.25.9",
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
+        "@docusaurus/logger": "3.6.1",
+        "@docusaurus/utils": "3.6.1",
         "babel-plugin-dynamic-import-node": "^2.3.3",
         "fs-extra": "^11.1.1",
         "tslib": "^2.6.0"
@@ -2150,16 +2153,16 @@
       }
     },
     "node_modules/@docusaurus/bundler": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.6.0.tgz",
-      "integrity": "sha512-o5T9HXkPKH0OQAifTxEXaebcO8kaz3tU1+wlIShZ2DKJHlsyWX3N4rToWBHroWnV/ZCT2XN3kLRzXASqrnb9Tw==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.6.1.tgz",
+      "integrity": "sha512-vHSEx8Ku9x/gfIC6k4xb8J2nTxagLia0KvZkPZhxfkD1+n8i+Dj4BZPWTmv+kCA17RbgAvECG0XRZ0/ZEspQBQ==",
       "dependencies": {
         "@babel/core": "^7.25.9",
-        "@docusaurus/babel": "3.6.0",
-        "@docusaurus/cssnano-preset": "3.6.0",
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
+        "@docusaurus/babel": "3.6.1",
+        "@docusaurus/cssnano-preset": "3.6.1",
+        "@docusaurus/logger": "3.6.1",
+        "@docusaurus/types": "3.6.1",
+        "@docusaurus/utils": "3.6.1",
         "autoprefixer": "^10.4.14",
         "babel-loader": "^9.2.1",
         "clean-css": "^5.3.2",
@@ -2184,7 +2187,7 @@
         "node": ">=18.0"
       },
       "peerDependencies": {
-        "@docusaurus/faster": "3.5.2"
+        "@docusaurus/faster": "*"
       },
       "peerDependenciesMeta": {
         "@docusaurus/faster": {
@@ -2193,17 +2196,17 @@
       }
     },
     "node_modules/@docusaurus/core": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.6.0.tgz",
-      "integrity": "sha512-lvRgMoKJJSRDt9+HhAqFcICV4kp/mw1cJJrLxIw4Q2XZnFGM1XUuwcbuaqWmGog+NcOLZaPCcCtZbn60EMCtjQ==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.6.1.tgz",
+      "integrity": "sha512-cDKxPihiM2z7G+4QtpTczS7uxNfNG6naSqM65OmAJET0CFRHbc9mDlLFtQF0lsVES91SHqfcGaaLZmi2FjdwWA==",
       "dependencies": {
-        "@docusaurus/babel": "3.6.0",
-        "@docusaurus/bundler": "3.6.0",
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/mdx-loader": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-common": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
+        "@docusaurus/babel": "3.6.1",
+        "@docusaurus/bundler": "3.6.1",
+        "@docusaurus/logger": "3.6.1",
+        "@docusaurus/mdx-loader": "3.6.1",
+        "@docusaurus/utils": "3.6.1",
+        "@docusaurus/utils-common": "3.6.1",
+        "@docusaurus/utils-validation": "3.6.1",
         "boxen": "^6.2.1",
         "chalk": "^4.1.2",
         "chokidar": "^3.5.3",
@@ -2254,9 +2257,9 @@
       }
     },
     "node_modules/@docusaurus/cssnano-preset": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.6.0.tgz",
-      "integrity": "sha512-h3jlOXqqzNSoU+C4CZLNpFtD+v2xr1UBf4idZpwMgqid9r6lb5GS7tWKnQnauio6OipacbHbDXEX3JyT1PlDkg==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.6.1.tgz",
+      "integrity": "sha512-ZxYUmNeyQHW2w4/PJ7d07jQDuxzmKr9uPAQ6IVe5dTkeIeV0mDBB3jOLeJkNoI42Ru9JKEqQ9aVDtM9ct6QHnw==",
       "dependencies": {
         "cssnano-preset-advanced": "^6.1.2",
         "postcss": "^8.4.38",
@@ -2268,29 +2271,28 @@
       }
     },
     "node_modules/@docusaurus/faster": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/@docusaurus/faster/-/faster-3.5.2.tgz",
-      "integrity": "sha512-ALeXHDiHv3WQ+/61Da5SKf0ceRVZ3BXJRCcgGXqOPrYCsTXD+LhyFcYZc27FlfzInWlq95546YZbAEWKEARAFw==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/faster/-/faster-3.6.1.tgz",
+      "integrity": "sha512-W3a9m7Q/fEeOpOw9/XktLCHRtp1sV2AdZWMCjH3kP1jY1TDyLFFiHJ0+1uwVpOw4/oPJqZSTRKP+IdW4+65NgQ==",
       "dependencies": {
+        "@docusaurus/types": "3.6.1",
         "@rspack/core": "^1.0.14",
         "@swc/core": "^1.7.39",
         "@swc/html": "^1.7.39",
         "browserslist": "^4.24.2",
         "lightningcss": "^1.27.0",
         "swc-loader": "^0.2.6",
+        "tslib": "^2.6.0",
         "webpack": "^5.95.0"
       },
       "engines": {
         "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "@docusaurus/types": "*"
       }
     },
     "node_modules/@docusaurus/logger": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.6.0.tgz",
-      "integrity": "sha512-BcQhoXilXW0607cH/kO6P5Gt5KxCGfoJ+QDKNf3yO2S09/RsITlW+0QljXPbI3DklTrHrhRDmgGk1yX4nUhWTA==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.6.1.tgz",
+      "integrity": "sha512-OvetI/nnOMBSqCkUzKAQhnIjhxduECK4qTu3tq/8/h/qqvLsvKURojm04WPE54L+Uy+UXMas0hnbBJd8zDlEOw==",
       "dependencies": {
         "chalk": "^4.1.2",
         "tslib": "^2.6.0"
@@ -2300,13 +2302,13 @@
       }
     },
     "node_modules/@docusaurus/mdx-loader": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.6.0.tgz",
-      "integrity": "sha512-GhRzL1Af/AdSSrGesSPOU/iP/aXadTGmVKuysCxZDrQR2RtBtubQZ9aw+KvdFVV7R4K/CsbgD6J5oqrXlEPk3Q==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.6.1.tgz",
+      "integrity": "sha512-KPIsYi0S3X3/rNrW3V1fgOu5t6ahYWc31zTHHod8pacFxdmk9Uf6uuw+Jd6Cly1ilgal+41Ku+s0gmMuqKqiqg==",
       "dependencies": {
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
+        "@docusaurus/logger": "3.6.1",
+        "@docusaurus/utils": "3.6.1",
+        "@docusaurus/utils-validation": "3.6.1",
         "@mdx-js/mdx": "^3.0.0",
         "@slorber/remark-comment": "^1.0.0",
         "escape-html": "^1.0.3",
@@ -2338,11 +2340,11 @@
       }
     },
     "node_modules/@docusaurus/module-type-aliases": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.6.0.tgz",
-      "integrity": "sha512-szTrIN/6/fuk0xkf3XbRfdTFJzRQ8d1s3sQj5++58wltrT7v3yn1149oc9ryYjMpRcbsarGloQwMu7ofPe4XPg==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.6.1.tgz",
+      "integrity": "sha512-J+q1jgm7TnEfVIUZImSFeLA1rghb6nwtoB9siHdcgKpDqFJ9/S7xhQL2aEKE7iZMZYzpu+2F390E9A7GkdEJNA==",
       "dependencies": {
-        "@docusaurus/types": "3.6.0",
+        "@docusaurus/types": "3.6.1",
         "@types/history": "^4.7.11",
         "@types/react": "*",
         "@types/react-router-config": "*",
@@ -2356,18 +2358,18 @@
       }
     },
     "node_modules/@docusaurus/plugin-content-blog": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.6.0.tgz",
-      "integrity": "sha512-o4aT1/E0Ldpzs/hQff5uyoSriAhS/yqBhqSn+fvSw465AaqRsva6O7CZSYleuBq6x2bewyE3QJq2PcTiHhAd8g==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.6.1.tgz",
+      "integrity": "sha512-FUmsn3xg/XD/K/4FQd8XHrs92aQdZO5LUtpHnRvO1/6DY87SMz6B6ERAN9IGQQld//M2/LVTHkZy8oVhQZQHIQ==",
       "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/mdx-loader": "3.6.0",
-        "@docusaurus/theme-common": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-common": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
+        "@docusaurus/core": "3.6.1",
+        "@docusaurus/logger": "3.6.1",
+        "@docusaurus/mdx-loader": "3.6.1",
+        "@docusaurus/theme-common": "3.6.1",
+        "@docusaurus/types": "3.6.1",
+        "@docusaurus/utils": "3.6.1",
+        "@docusaurus/utils-common": "3.6.1",
+        "@docusaurus/utils-validation": "3.6.1",
         "cheerio": "1.0.0-rc.12",
         "feed": "^4.2.2",
         "fs-extra": "^11.1.1",
@@ -2389,19 +2391,19 @@
       }
     },
     "node_modules/@docusaurus/plugin-content-docs": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.6.0.tgz",
-      "integrity": "sha512-c5gZOxocJKO/Zev2MEZInli+b+VNswDGuKHE6QtFgidhAJonwjh2kwj967RvWFaMMk62HlLJLZ+IGK2XsVy4Aw==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.6.1.tgz",
+      "integrity": "sha512-Uq8kyn5DYCDmkUlB9sWChhWghS4lUFNiQU+RXcAXJ3qCVXsBpPsh6RF+npQG1N+j4wAbjydM1iLLJJzp+x3eMQ==",
       "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/mdx-loader": "3.6.0",
-        "@docusaurus/module-type-aliases": "3.6.0",
-        "@docusaurus/theme-common": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-common": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
+        "@docusaurus/core": "3.6.1",
+        "@docusaurus/logger": "3.6.1",
+        "@docusaurus/mdx-loader": "3.6.1",
+        "@docusaurus/module-type-aliases": "3.6.1",
+        "@docusaurus/theme-common": "3.6.1",
+        "@docusaurus/types": "3.6.1",
+        "@docusaurus/utils": "3.6.1",
+        "@docusaurus/utils-common": "3.6.1",
+        "@docusaurus/utils-validation": "3.6.1",
         "@types/react-router-config": "^5.0.7",
         "combine-promises": "^1.1.0",
         "fs-extra": "^11.1.1",
@@ -2420,15 +2422,15 @@
       }
     },
     "node_modules/@docusaurus/plugin-content-pages": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.6.0.tgz",
-      "integrity": "sha512-RKHhJrfkadHc7+tt1cP48NWifOrhkSRMPdXNYytzhoQrXlP6Ph+3tfQ4/n+nT0S3Y9+wwRxYqRqA380ZLt+QtQ==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.6.1.tgz",
+      "integrity": "sha512-TZtL+2zq20gqGalzoIT2rEF1T4YCZ26jTvlCJXs78+incIajfdHtmdOq7rQW0oV7oqTjpGllbp788nY/vY9jgw==",
       "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/mdx-loader": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
+        "@docusaurus/core": "3.6.1",
+        "@docusaurus/mdx-loader": "3.6.1",
+        "@docusaurus/types": "3.6.1",
+        "@docusaurus/utils": "3.6.1",
+        "@docusaurus/utils-validation": "3.6.1",
         "fs-extra": "^11.1.1",
         "tslib": "^2.6.0",
         "webpack": "^5.88.1"
@@ -2442,13 +2444,13 @@
       }
     },
     "node_modules/@docusaurus/plugin-debug": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.6.0.tgz",
-      "integrity": "sha512-o8T1Rl94COLdSlKvjYLQpRJQRU8WWZ8EX1B0yV0dQLNN8reyH7MQW+6z1ig4sQFfH3pnjPWVGHfuEjcib5m7Eg==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.6.1.tgz",
+      "integrity": "sha512-DeKPZtoVExDSYCbzoz7y5Dhc6+YPqRWfVGwEEUyKopSyQYefp0OV8hvASmbJCn2WyThRgspOUhog3FSEhz+agw==",
       "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
+        "@docusaurus/core": "3.6.1",
+        "@docusaurus/types": "3.6.1",
+        "@docusaurus/utils": "3.6.1",
         "fs-extra": "^11.1.1",
         "react-json-view-lite": "^1.2.0",
         "tslib": "^2.6.0"
@@ -2462,13 +2464,13 @@
       }
     },
     "node_modules/@docusaurus/plugin-google-analytics": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.6.0.tgz",
-      "integrity": "sha512-kgRFbfpi6Hshj75YUztKyEMtI/kw0trPRwoTN4g+W1NK99R/vh8phTvhBTIMnDbetU79795LkwfG0rZ/ce6zWQ==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.6.1.tgz",
+      "integrity": "sha512-ZEoERiDHxSfhaEeT35ukQ892NzGHWiUvfxUsnPiRuGEhMoQlxMSp60shBuSZ1sUKuZlndoEl5qAXJg09Wls/Sg==",
       "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
+        "@docusaurus/core": "3.6.1",
+        "@docusaurus/types": "3.6.1",
+        "@docusaurus/utils-validation": "3.6.1",
         "tslib": "^2.6.0"
       },
       "engines": {
@@ -2480,13 +2482,13 @@
       }
     },
     "node_modules/@docusaurus/plugin-google-gtag": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.6.0.tgz",
-      "integrity": "sha512-nqu4IfjaO4UX+dojHL2BxHRS+sKj31CIMWYo49huQ3wTET0Oc3u/WGTaKd3ShTPDhkgiRhTOSTPUwJWrU55nHg==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.6.1.tgz",
+      "integrity": "sha512-u/E9vXUsZxYaV6Brvfee8NiH/iR0cMml9P/ifz4EpH/Jfxdbw8rbCT0Nm/h7EFgEY48Uqkl5huSbIvFB9n8aTQ==",
       "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
+        "@docusaurus/core": "3.6.1",
+        "@docusaurus/types": "3.6.1",
+        "@docusaurus/utils-validation": "3.6.1",
         "@types/gtag.js": "^0.0.12",
         "tslib": "^2.6.0"
       },
@@ -2499,13 +2501,13 @@
       }
     },
     "node_modules/@docusaurus/plugin-google-tag-manager": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.6.0.tgz",
-      "integrity": "sha512-OU6c5xI0nOVbEc9eImGvvsgNWe4vGm97t/W3aLHjWsHyNk3uwFNBQMHRvBUwAi9k/K3kyC5E7DWnc67REhdLOw==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.6.1.tgz",
+      "integrity": "sha512-By+NKkGYV8tSo8/RyS1OXikOtqsko5jJZ/uioJfBjsBGgSbiMJ+Y/HogFBke0mgSvf7NPGKZTbYm5+FJ8YUtPQ==",
       "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
+        "@docusaurus/core": "3.6.1",
+        "@docusaurus/types": "3.6.1",
+        "@docusaurus/utils-validation": "3.6.1",
         "tslib": "^2.6.0"
       },
       "engines": {
@@ -2517,16 +2519,16 @@
       }
     },
     "node_modules/@docusaurus/plugin-sitemap": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.6.0.tgz",
-      "integrity": "sha512-YB5XMdf9FjLhgbHY/cDbYhVxsgcpPIjxY9769HUgFOB7GVzItTLOR71W035R1BiR2CA5QAn3XOSg36WLRxlhQQ==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.6.1.tgz",
+      "integrity": "sha512-i8R/GTKew4Cufb+7YQTwfPcNOhKTJzZ1VZ5OqQwI9c3pZK2TltQyhqKDVN94KCTbSSKvOYYytYfRAB2uPnH1/A==",
       "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-common": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
+        "@docusaurus/core": "3.6.1",
+        "@docusaurus/logger": "3.6.1",
+        "@docusaurus/types": "3.6.1",
+        "@docusaurus/utils": "3.6.1",
+        "@docusaurus/utils-common": "3.6.1",
+        "@docusaurus/utils-validation": "3.6.1",
         "fs-extra": "^11.1.1",
         "sitemap": "^7.1.1",
         "tslib": "^2.6.0"
@@ -2540,23 +2542,23 @@
       }
     },
     "node_modules/@docusaurus/preset-classic": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.6.0.tgz",
-      "integrity": "sha512-kpGNdQzr/Dpm7o3b1iaQrz4DMDx3WIeBbl4V4P4maa2zAQkTdlaP4CMgA5oKrRrpqPLnQFsUM/b+qf2glhl2Tw==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.6.1.tgz",
+      "integrity": "sha512-b90Y1XRH9e+oa/E3NmiFEFOwgYUd+knFcZUy81nM3FJs038WbEA0T55NQsuPW0s7nOsCShQ7dVFyKxV+Wp31Nw==",
       "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/plugin-content-blog": "3.6.0",
-        "@docusaurus/plugin-content-docs": "3.6.0",
-        "@docusaurus/plugin-content-pages": "3.6.0",
-        "@docusaurus/plugin-debug": "3.6.0",
-        "@docusaurus/plugin-google-analytics": "3.6.0",
-        "@docusaurus/plugin-google-gtag": "3.6.0",
-        "@docusaurus/plugin-google-tag-manager": "3.6.0",
-        "@docusaurus/plugin-sitemap": "3.6.0",
-        "@docusaurus/theme-classic": "3.6.0",
-        "@docusaurus/theme-common": "3.6.0",
-        "@docusaurus/theme-search-algolia": "3.6.0",
-        "@docusaurus/types": "3.6.0"
+        "@docusaurus/core": "3.6.1",
+        "@docusaurus/plugin-content-blog": "3.6.1",
+        "@docusaurus/plugin-content-docs": "3.6.1",
+        "@docusaurus/plugin-content-pages": "3.6.1",
+        "@docusaurus/plugin-debug": "3.6.1",
+        "@docusaurus/plugin-google-analytics": "3.6.1",
+        "@docusaurus/plugin-google-gtag": "3.6.1",
+        "@docusaurus/plugin-google-tag-manager": "3.6.1",
+        "@docusaurus/plugin-sitemap": "3.6.1",
+        "@docusaurus/theme-classic": "3.6.1",
+        "@docusaurus/theme-common": "3.6.1",
+        "@docusaurus/theme-search-algolia": "3.6.1",
+        "@docusaurus/types": "3.6.1"
       },
       "engines": {
         "node": ">=18.0"
@@ -2567,23 +2569,23 @@
       }
     },
     "node_modules/@docusaurus/theme-classic": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.6.0.tgz",
-      "integrity": "sha512-sAXNfwPL6uRD+BuHuKXZfAXud7SS7IK/JdrPuzyQxdO1gJKzI5GFfe1ED1QoJDNWJWJ01JHE5rSnwYLEADc2rQ==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.6.1.tgz",
+      "integrity": "sha512-5lVUmIXk7zp+n9Ki2lYWrmhbd6mssOlKCnnDJvY4QDi3EgjRisIu5g4yKXoWTIbiqE7m7q/dS9cbeShEtfkKng==",
       "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/mdx-loader": "3.6.0",
-        "@docusaurus/module-type-aliases": "3.6.0",
-        "@docusaurus/plugin-content-blog": "3.6.0",
-        "@docusaurus/plugin-content-docs": "3.6.0",
-        "@docusaurus/plugin-content-pages": "3.6.0",
-        "@docusaurus/theme-common": "3.6.0",
-        "@docusaurus/theme-translations": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-common": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
+        "@docusaurus/core": "3.6.1",
+        "@docusaurus/logger": "3.6.1",
+        "@docusaurus/mdx-loader": "3.6.1",
+        "@docusaurus/module-type-aliases": "3.6.1",
+        "@docusaurus/plugin-content-blog": "3.6.1",
+        "@docusaurus/plugin-content-docs": "3.6.1",
+        "@docusaurus/plugin-content-pages": "3.6.1",
+        "@docusaurus/theme-common": "3.6.1",
+        "@docusaurus/theme-translations": "3.6.1",
+        "@docusaurus/types": "3.6.1",
+        "@docusaurus/utils": "3.6.1",
+        "@docusaurus/utils-common": "3.6.1",
+        "@docusaurus/utils-validation": "3.6.1",
         "@mdx-js/react": "^3.0.0",
         "clsx": "^2.0.0",
         "copy-text-to-clipboard": "^3.2.0",
@@ -2607,14 +2609,14 @@
       }
     },
     "node_modules/@docusaurus/theme-common": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.6.0.tgz",
-      "integrity": "sha512-frjlYE5sRs+GuPs4XXlp9aMLI2O4H5FPpznDAXBrCm+8EpWRiIb443ePMxM3IyMCQ5bwFlki0PI9C+r4apstnw==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.6.1.tgz",
+      "integrity": "sha512-18iEYNpMvarGfq9gVRpGowSZD24vZ39Iz4acqaj64180i54V9el8tVnhNr/wRvrUm1FY30A1NHLqnMnDz4rYEQ==",
       "dependencies": {
-        "@docusaurus/mdx-loader": "3.6.0",
-        "@docusaurus/module-type-aliases": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-common": "3.6.0",
+        "@docusaurus/mdx-loader": "3.6.1",
+        "@docusaurus/module-type-aliases": "3.6.1",
+        "@docusaurus/utils": "3.6.1",
+        "@docusaurus/utils-common": "3.6.1",
         "@types/history": "^4.7.11",
         "@types/react": "*",
         "@types/react-router-config": "*",
@@ -2633,19 +2635,42 @@
         "react-dom": "^18.0.0"
       }
     },
+    "node_modules/@docusaurus/theme-live-codeblock": {
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/theme-live-codeblock/-/theme-live-codeblock-3.6.1.tgz",
+      "integrity": "sha512-8GdnkwaNxb0dmRHGDlO+5QXdz9mrLni/wqai06LSGOTRv+GY3JC2Zov/KKkHZxx5MNFagqq01sGdn1TBBrS9jg==",
+      "dependencies": {
+        "@docusaurus/core": "3.6.1",
+        "@docusaurus/theme-common": "3.6.1",
+        "@docusaurus/theme-translations": "3.6.1",
+        "@docusaurus/utils-validation": "3.6.1",
+        "@philpl/buble": "^0.19.7",
+        "clsx": "^2.0.0",
+        "fs-extra": "^11.1.1",
+        "react-live": "^4.1.6",
+        "tslib": "^2.6.0"
+      },
+      "engines": {
+        "node": ">=18.0"
+      },
+      "peerDependencies": {
+        "react": "^18.0.0",
+        "react-dom": "^18.0.0"
+      }
+    },
     "node_modules/@docusaurus/theme-search-algolia": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.6.0.tgz",
-      "integrity": "sha512-4IwRUkxjrisR8LXBHeE4d2btraWdMficbgiVL3UHvJURmyvgzMBZQP8KrK8rjdXeu8SuRxSmeV6NSVomRvdbEg==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.6.1.tgz",
+      "integrity": "sha512-BjmuiFRpQP1WEm8Mzu1Bb0Wdas6G65VHXDDNr7XTKgbstxalE6vuxt0ioXTDFS2YVep5748aVhKvnxR9gm2Liw==",
       "dependencies": {
         "@docsearch/react": "^3.5.2",
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/plugin-content-docs": "3.6.0",
-        "@docusaurus/theme-common": "3.6.0",
-        "@docusaurus/theme-translations": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
+        "@docusaurus/core": "3.6.1",
+        "@docusaurus/logger": "3.6.1",
+        "@docusaurus/plugin-content-docs": "3.6.1",
+        "@docusaurus/theme-common": "3.6.1",
+        "@docusaurus/theme-translations": "3.6.1",
+        "@docusaurus/utils": "3.6.1",
+        "@docusaurus/utils-validation": "3.6.1",
         "algoliasearch": "^4.18.0",
         "algoliasearch-helper": "^3.13.3",
         "clsx": "^2.0.0",
@@ -2664,9 +2689,9 @@
       }
     },
     "node_modules/@docusaurus/theme-translations": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.6.0.tgz",
-      "integrity": "sha512-L555X8lWE3fv8VaF0Bc1VnAgi10UvRKFcvADHiYR7Gj37ItaWP5i7xLHsSw7fi/SHTXe5wfIeCFNqUYHyCOHAQ==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.6.1.tgz",
+      "integrity": "sha512-bNm5G6sueUezvyhsBegA1wwM38yW0BnqpZTE9KHO2yKnkERNMaV5x/yPJ/DNCOHjJtCcJ5Uz55g2AS75Go31xA==",
       "dependencies": {
         "fs-extra": "^11.1.1",
         "tslib": "^2.6.0"
@@ -2682,9 +2707,9 @@
       "dev": true
     },
     "node_modules/@docusaurus/types": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.6.0.tgz",
-      "integrity": "sha512-jADLgoZGWhAzThr+mRiyuFD4OUzt6jHnb7NRArRKorgxckqUBaPyFOau9hhbcSTHtU6ceyeWjN7FDt7uG2Hplw==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.6.1.tgz",
+      "integrity": "sha512-hCB1hj9DYutVYBisnPNobz9SzEmCcf1EetJv09O49Cov3BqOkm+vnnjB3d957YJMtpLGQoKBeN/FF1DZ830JwQ==",
       "dependencies": {
         "@mdx-js/mdx": "^3.0.0",
         "@types/history": "^4.7.11",
@@ -2715,12 +2740,13 @@
       }
     },
     "node_modules/@docusaurus/utils": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.6.0.tgz",
-      "integrity": "sha512-VKczAutI4mptiAw/WcYEu5WeVhQ6Q1zdIUl64SGw9K++9lziH+Kt10Ee8l2dMpRkiUk6zzK20kMNlX2WCUwXYQ==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.6.1.tgz",
+      "integrity": "sha512-nS3WCvepwrnBEgSG5vQu40XG95lC9Jeh/odV5u5IhU1eQFEGDst9xBi6IK5yZdsGvbuaXBZLZtOqWYtuuFa/rQ==",
       "dependencies": {
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/utils-common": "3.6.0",
+        "@docusaurus/logger": "3.6.1",
+        "@docusaurus/types": "3.6.1",
+        "@docusaurus/utils-common": "3.6.1",
         "@svgr/webpack": "^8.1.0",
         "escape-string-regexp": "^4.0.0",
         "file-loader": "^6.2.0",
@@ -2742,43 +2768,28 @@
       },
       "engines": {
         "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "@docusaurus/types": "*"
-      },
-      "peerDependenciesMeta": {
-        "@docusaurus/types": {
-          "optional": true
-        }
       }
     },
     "node_modules/@docusaurus/utils-common": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.6.0.tgz",
-      "integrity": "sha512-diUDNfbw33GaZMmKwdTckT2IBfVouXLXRD+zphH9ywswuaEIKqixvuf5g41H7MBBrlMsxhna3uTMoB4B/OPDcA==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.6.1.tgz",
+      "integrity": "sha512-LX1qiTiC0aS8c92uZ+Wj2iNCNJyYZJIKY8/nZDKNMBfo759VYVS3RX3fKP3DznB+16sYp7++MyCz/T6fOGaRfw==",
       "dependencies": {
+        "@docusaurus/types": "3.6.1",
         "tslib": "^2.6.0"
       },
       "engines": {
         "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "@docusaurus/types": "*"
-      },
-      "peerDependenciesMeta": {
-        "@docusaurus/types": {
-          "optional": true
-        }
       }
     },
     "node_modules/@docusaurus/utils-validation": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.6.0.tgz",
-      "integrity": "sha512-CRHiKKJEKA0GFlfOf71JWHl7PtwOyX0+Zg9ep9NFEZv6Lcx3RJ9nhl7p8HRjPL6deyYceavM//BsfW4pCI4BtA==",
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.6.1.tgz",
+      "integrity": "sha512-+iMd6zRl5cJQm7nUP+7pSO/oAXsN79eHO34ME7l2YJt4GEAr70l5kkD58u2jEPpp+wSXT70c7x2A2lzJI1E8jw==",
       "dependencies": {
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-common": "3.6.0",
+        "@docusaurus/logger": "3.6.1",
+        "@docusaurus/utils": "3.6.1",
+        "@docusaurus/utils-common": "3.6.1",
         "fs-extra": "^11.2.0",
         "joi": "^17.9.2",
         "js-yaml": "^4.1.0",
@@ -2802,6 +2813,47 @@
         "@hapi/hoek": "^9.0.0"
       }
     },
+    "node_modules/@isaacs/cliui": {
+      "version": "8.0.2",
+      "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+      "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+      "dependencies": {
+        "string-width": "^5.1.2",
+        "string-width-cjs": "npm:string-width@^4.2.0",
+        "strip-ansi": "^7.0.1",
+        "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+        "wrap-ansi": "^8.1.0",
+        "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+      "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+      }
+    },
+    "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+      "dependencies": {
+        "ansi-regex": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+      }
+    },
     "node_modules/@jest/schemas": {
       "version": "29.6.3",
       "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
@@ -3093,6 +3145,180 @@
         "node": ">= 8"
       }
     },
+    "node_modules/@philpl/buble": {
+      "version": "0.19.7",
+      "resolved": "https://registry.npmjs.org/@philpl/buble/-/buble-0.19.7.tgz",
+      "integrity": "sha512-wKTA2DxAGEW+QffRQvOhRQ0VBiYU2h2p8Yc1oBNlqSKws48/8faxqKNIuub0q4iuyTuLwtB8EkwiKwhlfV1PBA==",
+      "dependencies": {
+        "acorn": "^6.1.1",
+        "acorn-class-fields": "^0.2.1",
+        "acorn-dynamic-import": "^4.0.0",
+        "acorn-jsx": "^5.0.1",
+        "chalk": "^2.4.2",
+        "magic-string": "^0.25.2",
+        "minimist": "^1.2.0",
+        "os-homedir": "^1.0.1",
+        "regexpu-core": "^4.5.4"
+      },
+      "bin": {
+        "buble": "bin/buble"
+      }
+    },
+    "node_modules/@philpl/buble/node_modules/acorn": {
+      "version": "6.4.2",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
+      "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/@philpl/buble/node_modules/acorn-class-fields": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/acorn-class-fields/-/acorn-class-fields-0.2.1.tgz",
+      "integrity": "sha512-US/kqTe0H8M4LN9izoL+eykVAitE68YMuYZ3sHn3i1fjniqR7oQ3SPvuMK/VT1kjOQHrx5Q88b90TtOKgAv2hQ==",
+      "engines": {
+        "node": ">=4.8.2"
+      },
+      "peerDependencies": {
+        "acorn": "^6.0.0"
+      }
+    },
+    "node_modules/@philpl/buble/node_modules/acorn-dynamic-import": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz",
+      "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==",
+      "deprecated": "This is probably built in to whatever tool you're using. If you still need it... idk",
+      "peerDependencies": {
+        "acorn": "^6.0.0"
+      }
+    },
+    "node_modules/@philpl/buble/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@philpl/buble/node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@philpl/buble/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/@philpl/buble/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+    },
+    "node_modules/@philpl/buble/node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/@philpl/buble/node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@philpl/buble/node_modules/jsesc": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+      "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+      "bin": {
+        "jsesc": "bin/jsesc"
+      }
+    },
+    "node_modules/@philpl/buble/node_modules/regenerate-unicode-properties": {
+      "version": "9.0.0",
+      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz",
+      "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==",
+      "dependencies": {
+        "regenerate": "^1.4.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@philpl/buble/node_modules/regexpu-core": {
+      "version": "4.8.0",
+      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz",
+      "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==",
+      "dependencies": {
+        "regenerate": "^1.4.2",
+        "regenerate-unicode-properties": "^9.0.0",
+        "regjsgen": "^0.5.2",
+        "regjsparser": "^0.7.0",
+        "unicode-match-property-ecmascript": "^2.0.0",
+        "unicode-match-property-value-ecmascript": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@philpl/buble/node_modules/regjsgen": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
+      "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A=="
+    },
+    "node_modules/@philpl/buble/node_modules/regjsparser": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz",
+      "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==",
+      "dependencies": {
+        "jsesc": "~0.5.0"
+      },
+      "bin": {
+        "regjsparser": "bin/parser"
+      }
+    },
+    "node_modules/@philpl/buble/node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@pkgjs/parseargs": {
+      "version": "0.11.0",
+      "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+      "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+      "optional": true,
+      "engines": {
+        "node": ">=14"
+      }
+    },
     "node_modules/@plotly/d3": {
       "version": "3.8.2",
       "resolved": "https://registry.npmjs.org/@plotly/d3/-/d3-3.8.2.tgz",
@@ -3652,13 +3878,13 @@
       }
     },
     "node_modules/@swc/core": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.9.1.tgz",
-      "integrity": "sha512-OnPc+Kt5oy3xTvr/KCUOqE9ptJcWbyQgAUr1ydh9EmbBcmJTaO1kfQCxm/axzJi6sKeDTxL9rX5zvLOhoYIaQw==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.9.2.tgz",
+      "integrity": "sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg==",
       "hasInstallScript": true,
       "dependencies": {
         "@swc/counter": "^0.1.3",
-        "@swc/types": "^0.1.14"
+        "@swc/types": "^0.1.15"
       },
       "engines": {
         "node": ">=10"
@@ -3668,16 +3894,16 @@
         "url": "https://opencollective.com/swc"
       },
       "optionalDependencies": {
-        "@swc/core-darwin-arm64": "1.9.1",
-        "@swc/core-darwin-x64": "1.9.1",
-        "@swc/core-linux-arm-gnueabihf": "1.9.1",
-        "@swc/core-linux-arm64-gnu": "1.9.1",
-        "@swc/core-linux-arm64-musl": "1.9.1",
-        "@swc/core-linux-x64-gnu": "1.9.1",
-        "@swc/core-linux-x64-musl": "1.9.1",
-        "@swc/core-win32-arm64-msvc": "1.9.1",
-        "@swc/core-win32-ia32-msvc": "1.9.1",
-        "@swc/core-win32-x64-msvc": "1.9.1"
+        "@swc/core-darwin-arm64": "1.9.2",
+        "@swc/core-darwin-x64": "1.9.2",
+        "@swc/core-linux-arm-gnueabihf": "1.9.2",
+        "@swc/core-linux-arm64-gnu": "1.9.2",
+        "@swc/core-linux-arm64-musl": "1.9.2",
+        "@swc/core-linux-x64-gnu": "1.9.2",
+        "@swc/core-linux-x64-musl": "1.9.2",
+        "@swc/core-win32-arm64-msvc": "1.9.2",
+        "@swc/core-win32-ia32-msvc": "1.9.2",
+        "@swc/core-win32-x64-msvc": "1.9.2"
       },
       "peerDependencies": {
         "@swc/helpers": "*"
@@ -3689,9 +3915,9 @@
       }
     },
     "node_modules/@swc/core-darwin-arm64": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.1.tgz",
-      "integrity": "sha512-2/ncHSCdAh5OHem1fMITrWEzzl97OdMK1PHc9CkxSJnphLjRubfxB5sbc5tDhcO68a5tVy+DxwaBgDec3PXnOg==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.2.tgz",
+      "integrity": "sha512-nETmsCoY29krTF2PtspEgicb3tqw7Ci5sInTI03EU5zpqYbPjoPH99BVTjj0OsF53jP5MxwnLI5Hm21lUn1d6A==",
       "cpu": [
         "arm64"
       ],
@@ -3704,9 +3930,9 @@
       }
     },
     "node_modules/@swc/core-darwin-x64": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.9.1.tgz",
-      "integrity": "sha512-4MDOFC5zmNqRJ9RGFOH95oYf27J9HniLVpB1pYm2gGeNHdl2QvDMtx2QTuMHQ6+OTn/3y1BHYuhBGp7d405oLA==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.9.2.tgz",
+      "integrity": "sha512-9gD+bwBz8ZByjP6nZTXe/hzd0tySIAjpDHgkFiUrc+5zGF+rdTwhcNrzxNHJmy6mw+PW38jqII4uspFHUqqxuQ==",
       "cpu": [
         "x64"
       ],
@@ -3719,9 +3945,9 @@
       }
     },
     "node_modules/@swc/core-linux-arm-gnueabihf": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.1.tgz",
-      "integrity": "sha512-eVW/BjRW8/HpLe3+1jRU7w7PdRLBgnEEYTkHJISU8805/EKT03xNZn6CfaBpKfeAloY4043hbGzE/NP9IahdpQ==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.2.tgz",
+      "integrity": "sha512-kYq8ief1Qrn+WmsTWAYo4r+Coul4dXN6cLFjiPZ29Cv5pyU+GFvSPAB4bEdMzwy99rCR0u2P10UExaeCjurjvg==",
       "cpu": [
         "arm"
       ],
@@ -3734,9 +3960,9 @@
       }
     },
     "node_modules/@swc/core-linux-arm64-gnu": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.1.tgz",
-      "integrity": "sha512-8m3u1v8R8NgI/9+cHMkzk14w87blSy3OsQPWPfhOL+XPwhyLPvat+ahQJb2nZmltjTgkB4IbzKFSfbuA34LmNA==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.2.tgz",
+      "integrity": "sha512-n0W4XiXlmEIVqxt+rD3ZpkogsEWUk1jJ+i5bQNgB+1JuWh0fBE8c/blDgTQXa0GB5lTPVDZQussgdNOCnAZwiA==",
       "cpu": [
         "arm64"
       ],
@@ -3749,9 +3975,9 @@
       }
     },
     "node_modules/@swc/core-linux-arm64-musl": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.1.tgz",
-      "integrity": "sha512-hpT0sQAZnW8l02I289yeyFfT9llGO9PzKDxUq8pocKtioEHiElRqR53juCWoSmzuWi+6KX7zUJ0NKCBrc8pmDg==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.2.tgz",
+      "integrity": "sha512-8xzrOmsyCC1zrx2Wzx/h8dVsdewO1oMCwBTLc1gSJ/YllZYTb04pNm6NsVbzUX2tKddJVRgSJXV10j/NECLwpA==",
       "cpu": [
         "arm64"
       ],
@@ -3764,9 +3990,9 @@
       }
     },
     "node_modules/@swc/core-linux-x64-gnu": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.1.tgz",
-      "integrity": "sha512-sGFdpdAYusk/ropHiwtXom2JrdaKPxl8MqemRv6dvxZq1Gm/GdmOowxdXIPjCgBGMgoXVcgNviH6CgiO5q+UtA==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.2.tgz",
+      "integrity": "sha512-kZrNz/PjRQKcchWF6W292jk3K44EoVu1ad5w+zbS4jekIAxsM8WwQ1kd+yjUlN9jFcF8XBat5NKIs9WphJCVXg==",
       "cpu": [
         "x64"
       ],
@@ -3779,9 +4005,9 @@
       }
     },
     "node_modules/@swc/core-linux-x64-musl": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.1.tgz",
-      "integrity": "sha512-YtNLNwIWs0Z2+XgBs6+LrCIGtfCDtNr4S4b6Q5HDOreEIGzSvhkef8eyBI5L+fJ2eGov4b7iEo61C4izDJS5RA==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.2.tgz",
+      "integrity": "sha512-TTIpR4rjMkhX1lnFR+PSXpaL83TrQzp9znRdp2TzYrODlUd/R20zOwSo9vFLCyH6ZoD47bccY7QeGZDYT3nlRg==",
       "cpu": [
         "x64"
       ],
@@ -3794,9 +4020,9 @@
       }
     },
     "node_modules/@swc/core-win32-arm64-msvc": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.1.tgz",
-      "integrity": "sha512-qSxD3uZW2vSiHqUt30vUi0PB92zDh9bjqh5YKpfhhVa7h1vt/xXhlid8yMvSNToTfzhRrTEffOAPUr7WVoyQUA==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.2.tgz",
+      "integrity": "sha512-+Eg2d4icItKC0PMjZxH7cSYFLWk0aIp94LNmOw6tPq0e69ax6oh10upeq0D1fjWsKLmOJAWEvnXlayZcijEXDw==",
       "cpu": [
         "arm64"
       ],
@@ -3809,9 +4035,9 @@
       }
     },
     "node_modules/@swc/core-win32-ia32-msvc": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.1.tgz",
-      "integrity": "sha512-C3fPEwyX/WRPlX6zIToNykJuz1JkZX0sk8H1QH2vpnKuySUkt/Ur5K2FzLgSWzJdbfxstpgS151/es0VGAD+ZA==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.2.tgz",
+      "integrity": "sha512-nLWBi4vZDdM/LkiQmPCakof8Dh1/t5EM7eudue04V1lIcqx9YHVRS3KMwEaCoHLGg0c312Wm4YgrWQd9vwZ5zQ==",
       "cpu": [
         "ia32"
       ],
@@ -3824,9 +4050,9 @@
       }
     },
     "node_modules/@swc/core-win32-x64-msvc": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.1.tgz",
-      "integrity": "sha512-2XZ+U1AyVsOAXeH6WK1syDm7+gwTjA8fShs93WcbxnK7HV+NigDlvr4124CeJLTHyh3fMh1o7+CnQnaBJhlysQ==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.2.tgz",
+      "integrity": "sha512-ik/k+JjRJBFkXARukdU82tSVx0CbExFQoQ78qTO682esbYXzjdB5eLVkoUbwen299pnfr88Kn4kyIqFPTje8Xw==",
       "cpu": [
         "x64"
       ],
@@ -3844,9 +4070,9 @@
       "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="
     },
     "node_modules/@swc/html": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/html/-/html-1.9.1.tgz",
-      "integrity": "sha512-b/5GqsI6xF55/GU95FrItW1+EdvBs4uojPJcBSkmbFcetdmHPZyprA45VpPUYyJeRWebu4lesZrTOU2GGSIsow==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/html/-/html-1.9.2.tgz",
+      "integrity": "sha512-HoRqmYbxribu9thQ8vDshh6mgVcs2MSF0lEdoRBUBGcXbLwOMdCQMncbJoVguy0ehmmOzBwt+9qnP58IY+RWbg==",
       "dependencies": {
         "@swc/counter": "^0.1.3"
       },
@@ -3854,22 +4080,22 @@
         "node": ">=14"
       },
       "optionalDependencies": {
-        "@swc/html-darwin-arm64": "1.9.1",
-        "@swc/html-darwin-x64": "1.9.1",
-        "@swc/html-linux-arm-gnueabihf": "1.9.1",
-        "@swc/html-linux-arm64-gnu": "1.9.1",
-        "@swc/html-linux-arm64-musl": "1.9.1",
-        "@swc/html-linux-x64-gnu": "1.9.1",
-        "@swc/html-linux-x64-musl": "1.9.1",
-        "@swc/html-win32-arm64-msvc": "1.9.1",
-        "@swc/html-win32-ia32-msvc": "1.9.1",
-        "@swc/html-win32-x64-msvc": "1.9.1"
+        "@swc/html-darwin-arm64": "1.9.2",
+        "@swc/html-darwin-x64": "1.9.2",
+        "@swc/html-linux-arm-gnueabihf": "1.9.2",
+        "@swc/html-linux-arm64-gnu": "1.9.2",
+        "@swc/html-linux-arm64-musl": "1.9.2",
+        "@swc/html-linux-x64-gnu": "1.9.2",
+        "@swc/html-linux-x64-musl": "1.9.2",
+        "@swc/html-win32-arm64-msvc": "1.9.2",
+        "@swc/html-win32-ia32-msvc": "1.9.2",
+        "@swc/html-win32-x64-msvc": "1.9.2"
       }
     },
     "node_modules/@swc/html-darwin-arm64": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/html-darwin-arm64/-/html-darwin-arm64-1.9.1.tgz",
-      "integrity": "sha512-RBMLup2je+6yUlnbXy1iZDo8H8tXkVwsXBCqj1Iac6RVNhSg/prG+facSLZQMpmyerILE3A02kGpTXUjpi/a6A==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/html-darwin-arm64/-/html-darwin-arm64-1.9.2.tgz",
+      "integrity": "sha512-ZUdSXezeJrYgzrUv5alsjBI5wPMks/DyskHypOD6XwFJq1rFYRlFkiiwgf1U/uVSZnseIoXezBURnPliWpkrHQ==",
       "cpu": [
         "arm64"
       ],
@@ -3882,9 +4108,9 @@
       }
     },
     "node_modules/@swc/html-darwin-x64": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/html-darwin-x64/-/html-darwin-x64-1.9.1.tgz",
-      "integrity": "sha512-VUa4itQHWCteFdFoAZP+dEWsfaVtgt54btV1miSjVvHAdyjAOO9S5RkjdW45Oz0C5XDzR7EIz2+oLZlYtEnpAw==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/html-darwin-x64/-/html-darwin-x64-1.9.2.tgz",
+      "integrity": "sha512-5/8xDeP10VjEP5MhMAe83EDeh3rlB+BHbZB6mVFxP1NuEfY1DlW+z3+wPKp0qsvkPcK+82nZu43hystTkCXHhQ==",
       "cpu": [
         "x64"
       ],
@@ -3897,9 +4123,9 @@
       }
     },
     "node_modules/@swc/html-linux-arm-gnueabihf": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.9.1.tgz",
-      "integrity": "sha512-DAGJbgf0Fl6VcOcYvdiP+NOg2WITe7SlX+gE/o3ROEW1m5wAFB8kWbqQHDPJ3hNEjZyIx+rE+gEj9u7Ebuzblg==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.9.2.tgz",
+      "integrity": "sha512-AJQ8FpbVC2hx0upqe15b/i8PUpye5B8W0sEw8bOz/PAV7Ub+P+qFXBPmu1qFz+GLtIE+yAvhA8GRrReXJvALQQ==",
       "cpu": [
         "arm"
       ],
@@ -3912,9 +4138,9 @@
       }
     },
     "node_modules/@swc/html-linux-arm64-gnu": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.9.1.tgz",
-      "integrity": "sha512-4YnV9SJYC/goH7Y1xAmUj39KcpU6/tMrThbLE+MisiA0xJGwZBa+uc1FczMknzNm91ga5aQMUmy7LPKS2OwJzg==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.9.2.tgz",
+      "integrity": "sha512-rhTeDQjXo9gYK8OPGTsgXl1a0pKPnXLHeF2DfRGpAdOqChRdS3GEOX2Qawl7+fRjJ5UGs0/lOXo+BWwVcPyrSw==",
       "cpu": [
         "arm64"
       ],
@@ -3927,9 +4153,9 @@
       }
     },
     "node_modules/@swc/html-linux-arm64-musl": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.9.1.tgz",
-      "integrity": "sha512-y36k7DiFghomJhlzhWhSeskxxFwb0xiAumjMzLgqFbrCa4krCpwW/LPnImT2sw2joJFOSpuFG1CrtMekGNTjvw==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.9.2.tgz",
+      "integrity": "sha512-zJGhfYARjVaQ1bJ0NBsmoG7GYqXx/Qi5WnDEvq+jK5Ue9u6++Xeit5X9vVx67+B20w0ecngM5RqD9Yoc34MT4g==",
       "cpu": [
         "arm64"
       ],
@@ -3942,9 +4168,9 @@
       }
     },
     "node_modules/@swc/html-linux-x64-gnu": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.9.1.tgz",
-      "integrity": "sha512-AvyWPZK1uhixFS5fDPTBK349/oklZJOs9dWvb6WCIB82wybLytofmHqZMJkhD5yS69FfjIljrC8QYzx2ARjUzQ==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.9.2.tgz",
+      "integrity": "sha512-acbKaR7/dnYJ8g0GeQGEmWTmMuEMr3+8blJJ/ksxHjIopsWjNplLaKNCM8GfvF7vjIr9zgtLgP3NB+e3OLagKg==",
       "cpu": [
         "x64"
       ],
@@ -3957,9 +4183,9 @@
       }
     },
     "node_modules/@swc/html-linux-x64-musl": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.9.1.tgz",
-      "integrity": "sha512-X2LA/0tCkpuRBAH8mF4w20z2yAnwc8TrH4GAZ0kJkJB+6KHN5BwN9grEydMTKOzBT3zBAlQvkohq4Vxb4uO0OA==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.9.2.tgz",
+      "integrity": "sha512-wuNhqpkN1ZZWj/4RGHH+Cz1tjs7NfEu53en13YzDjwfPxsIfnbksQ0UD/uEVp8l8alsniJ9EokzXgfenmjDvlQ==",
       "cpu": [
         "x64"
       ],
@@ -3972,9 +4198,9 @@
       }
     },
     "node_modules/@swc/html-win32-arm64-msvc": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.9.1.tgz",
-      "integrity": "sha512-eLLP/MJQc6GY9JsOaDKR4TduFQ4mKs50MRsMHetaqnwMhS5TPTn6yhQldbe7ivouYwnCpWhs+62W89wa7AGQYw==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.9.2.tgz",
+      "integrity": "sha512-x2H2aWZX4HbU09rDWsf6W7fS0ApJwNBlthBDlMZj6gGzTgkRQtNwD/gpg3eRZmu5DxsnmBZ2a/rxxiU1IMv5mA==",
       "cpu": [
         "arm64"
       ],
@@ -3987,9 +4213,9 @@
       }
     },
     "node_modules/@swc/html-win32-ia32-msvc": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.9.1.tgz",
-      "integrity": "sha512-yZDtJTxok7drMZFUL7d5PfLmVXDZ6XFS/DnpOU0PWZAMxXkp38ep5YP7Z+2O/SAtGJAJediUbNc0QFnaQ+DgxA==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.9.2.tgz",
+      "integrity": "sha512-4bMY6HHAEVtX8buJm69XVs5sucxce9gyEzcNCXy2rfXAG9kxClE/ZbMWhXl3z6nYRWKBuoPoaL2eio1dEAvyTQ==",
       "cpu": [
         "ia32"
       ],
@@ -4002,9 +4228,9 @@
       }
     },
     "node_modules/@swc/html-win32-x64-msvc": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.9.1.tgz",
-      "integrity": "sha512-khcL6xk2j5YceJgrDLuSQqfjj/6JB81yOFQT6r2Vt4+6qeNNKCvqf5l9DMrK2KtQ+L0n50yVW6sjCBUULltbRQ==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.9.2.tgz",
+      "integrity": "sha512-HbxGfXT3KzSlo8uvoiQL8Q9ZnWzxHGYoe2emwFS5FeQuR01LMF0MWB3r2NhAYGx+DlD2h/3BR/hSM1qiDjl9VQ==",
       "cpu": [
         "x64"
       ],
@@ -4017,9 +4243,9 @@
       }
     },
     "node_modules/@swc/types": {
-      "version": "0.1.14",
-      "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.14.tgz",
-      "integrity": "sha512-PbSmTiYCN+GMrvfjrMo9bdY+f2COnwbdnoMw7rqU/PI5jXpKjxOGZ0qqZCImxnT81NkNsKnmEpvu+hRXLBeCJg==",
+      "version": "0.1.15",
+      "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.15.tgz",
+      "integrity": "sha512-XKaZ+dzDIQ9Ot9o89oJQ/aluI17+VvUnIpYJTcZtvv1iYX6MzHh3Ik2CSR7MdPKpPwfZXHBeCingb2b4PoDVdw==",
       "dependencies": {
         "@swc/counter": "^0.1.3"
       }
@@ -4151,6 +4377,60 @@
         "@types/node": "*"
       }
     },
+    "node_modules/@types/d3-array": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz",
+      "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg=="
+    },
+    "node_modules/@types/d3-color": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz",
+      "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A=="
+    },
+    "node_modules/@types/d3-ease": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz",
+      "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA=="
+    },
+    "node_modules/@types/d3-interpolate": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz",
+      "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==",
+      "dependencies": {
+        "@types/d3-color": "*"
+      }
+    },
+    "node_modules/@types/d3-path": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz",
+      "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ=="
+    },
+    "node_modules/@types/d3-scale": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz",
+      "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==",
+      "dependencies": {
+        "@types/d3-time": "*"
+      }
+    },
+    "node_modules/@types/d3-shape": {
+      "version": "3.1.6",
+      "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz",
+      "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==",
+      "dependencies": {
+        "@types/d3-path": "*"
+      }
+    },
+    "node_modules/@types/d3-time": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz",
+      "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw=="
+    },
+    "node_modules/@types/d3-timer": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz",
+      "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw=="
+    },
     "node_modules/@types/debug": {
       "version": "4.1.12",
       "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
@@ -4961,6 +5241,11 @@
         "url": "https://github.com/chalk/ansi-styles?sponsor=1"
       }
     },
+    "node_modules/any-promise": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+      "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
+    },
     "node_modules/anymatch": {
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
@@ -6635,6 +6920,14 @@
       "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz",
       "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA=="
     },
+    "node_modules/d3-ease": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
+      "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
+      "engines": {
+        "node": ">=12"
+      }
+    },
     "node_modules/d3-force": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz",
@@ -6708,6 +7001,43 @@
       "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz",
       "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA=="
     },
+    "node_modules/d3-scale": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
+      "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
+      "dependencies": {
+        "d3-array": "2.10.0 - 3",
+        "d3-format": "1 - 3",
+        "d3-interpolate": "1.2.0 - 3",
+        "d3-time": "2.1.1 - 3",
+        "d3-time-format": "2 - 4"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/d3-scale/node_modules/d3-array": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
+      "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
+      "dependencies": {
+        "internmap": "1 - 2"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/d3-scale/node_modules/d3-time": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
+      "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
+      "dependencies": {
+        "d3-array": "2 - 3"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
     "node_modules/d3-shape": {
       "version": "1.3.7",
       "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz",
@@ -6734,6 +7064,11 @@
       "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz",
       "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw=="
     },
+    "node_modules/d3-voronoi": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz",
+      "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg=="
+    },
     "node_modules/debounce": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
@@ -6896,6 +7231,19 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/delaunator": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz",
+      "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag=="
+    },
+    "node_modules/delaunay-find": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/delaunay-find/-/delaunay-find-0.0.6.tgz",
+      "integrity": "sha512-1+almjfrnR7ZamBk0q3Nhg6lqSe6Le4vL0WJDSMx4IDbQwTpUTXPjxC00lqLBT8MYsJpPCbI16sIkw9cPsbi7Q==",
+      "dependencies": {
+        "delaunator": "^4.0.0"
+      }
+    },
     "node_modules/depd": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -8268,6 +8616,32 @@
         "css-font": "^1.2.0"
       }
     },
+    "node_modules/foreground-child": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
+      "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
+      "dependencies": {
+        "cross-spawn": "^7.0.0",
+        "signal-exit": "^4.0.1"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/foreground-child/node_modules/signal-exit": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+      "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/fork-ts-checker-webpack-plugin": {
       "version": "6.5.3",
       "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz",
@@ -10121,6 +10495,14 @@
       "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz",
       "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q=="
     },
+    "node_modules/internmap": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
+      "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==",
+      "engines": {
+        "node": ">=12"
+      }
+    },
     "node_modules/interpret": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
@@ -10493,6 +10875,20 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/jackspeak": {
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+      "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+      "dependencies": {
+        "@isaacs/cliui": "^8.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      },
+      "optionalDependencies": {
+        "@pkgjs/parseargs": "^0.11.0"
+      }
+    },
     "node_modules/jest-util": {
       "version": "29.7.0",
       "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
@@ -10604,6 +11000,11 @@
       "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-4.0.0.tgz",
       "integrity": "sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q=="
     },
+    "node_modules/json-stringify-safe": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+      "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
+    },
     "node_modules/json5": {
       "version": "2.2.3",
       "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
@@ -11059,6 +11460,14 @@
       "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.14.0.tgz",
       "integrity": "sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA=="
     },
+    "node_modules/magic-string": {
+      "version": "0.25.9",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+      "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+      "dependencies": {
+        "sourcemap-codec": "^1.4.8"
+      }
+    },
     "node_modules/map-limit": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz",
@@ -13616,6 +14025,14 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/minipass": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+      "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      }
+    },
     "node_modules/mkdirp": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz",
@@ -13692,6 +14109,16 @@
       "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz",
       "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw=="
     },
+    "node_modules/mz": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+      "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+      "dependencies": {
+        "any-promise": "^1.0.0",
+        "object-assign": "^4.0.1",
+        "thenify-all": "^1.0.0"
+      }
+    },
     "node_modules/nanoid": {
       "version": "3.3.7",
       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
@@ -14059,6 +14486,14 @@
         "opener": "bin/opener-bin.js"
       }
     },
+    "node_modules/os-homedir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+      "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/p-cancelable": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
@@ -14146,6 +14581,11 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/package-json-from-dist": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+      "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="
+    },
     "node_modules/param-case": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
@@ -14309,6 +14749,26 @@
       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
       "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
     },
+    "node_modules/path-scurry": {
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+      "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+      "dependencies": {
+        "lru-cache": "^10.2.0",
+        "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/path-scurry/node_modules/lru-cache": {
+      "version": "10.4.3",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+      "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+    },
     "node_modules/path-to-regexp": {
       "version": "1.9.0",
       "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz",
@@ -14363,6 +14823,14 @@
         "url": "https://github.com/sponsors/jonschlinkert"
       }
     },
+    "node_modules/pirates": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+      "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
     "node_modules/pkg-dir": {
       "version": "7.0.0",
       "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz",
@@ -15361,6 +15829,70 @@
         "node": ">= 0.8"
       }
     },
+    "node_modules/raw-loader": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz",
+      "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==",
+      "dependencies": {
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/raw-loader/node_modules/ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/raw-loader/node_modules/ajv-keywords": {
+      "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+      "peerDependencies": {
+        "ajv": "^6.9.1"
+      }
+    },
+    "node_modules/raw-loader/node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+    },
+    "node_modules/raw-loader/node_modules/schema-utils": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+      "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+      "dependencies": {
+        "@types/json-schema": "^7.0.8",
+        "ajv": "^6.12.5",
+        "ajv-keywords": "^3.5.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      }
+    },
     "node_modules/rc": {
       "version": "1.2.8",
       "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
@@ -15566,6 +16098,24 @@
         "react": "^16.13.1 || ^17.0.0 || ^18.0.0"
       }
     },
+    "node_modules/react-live": {
+      "version": "4.1.7",
+      "resolved": "https://registry.npmjs.org/react-live/-/react-live-4.1.7.tgz",
+      "integrity": "sha512-NTzl0POOAW3dkp7+QL30duOrIu2Vzf2LHdx4TaQ0BqOAtQcSTKEXujfm9jR2VoCHko0oi35PYp38yKQBXz4mrg==",
+      "dependencies": {
+        "prism-react-renderer": "^2.0.6",
+        "sucrase": "^3.31.0",
+        "use-editable": "^2.3.3"
+      },
+      "engines": {
+        "node": ">= 0.12.0",
+        "npm": ">= 2.0.0"
+      },
+      "peerDependencies": {
+        "react": ">=18.0.0",
+        "react-dom": ">=18.0.0"
+      }
+    },
     "node_modules/react-loadable": {
       "name": "@docusaurus/react-loadable",
       "version": "6.0.0",
@@ -17071,6 +17621,12 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/sourcemap-codec": {
+      "version": "1.4.8",
+      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+      "deprecated": "Please use @jridgewell/sourcemap-codec instead"
+    },
     "node_modules/space-separated-tokens": {
       "version": "1.1.5",
       "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz",
@@ -17149,9 +17705,9 @@
       }
     },
     "node_modules/std-env": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz",
-      "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg=="
+      "version": "3.8.0",
+      "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz",
+      "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w=="
     },
     "node_modules/stream-parser": {
       "version": "0.3.1",
@@ -17211,6 +17767,25 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/string-width-cjs": {
+      "name": "string-width",
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/string-width-cjs/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+    },
     "node_modules/string-width/node_modules/ansi-regex": {
       "version": "6.1.0",
       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
@@ -17273,6 +17848,18 @@
         "node": ">=8"
       }
     },
+    "node_modules/strip-ansi-cjs": {
+      "name": "strip-ansi",
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/strip-bom-string": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
@@ -17343,6 +17930,76 @@
         "postcss": "^8.4.31"
       }
     },
+    "node_modules/sucrase": {
+      "version": "3.35.0",
+      "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
+      "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.2",
+        "commander": "^4.0.0",
+        "glob": "^10.3.10",
+        "lines-and-columns": "^1.1.6",
+        "mz": "^2.7.0",
+        "pirates": "^4.0.1",
+        "ts-interface-checker": "^0.1.9"
+      },
+      "bin": {
+        "sucrase": "bin/sucrase",
+        "sucrase-node": "bin/sucrase-node"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      }
+    },
+    "node_modules/sucrase/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/sucrase/node_modules/commander": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+      "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/sucrase/node_modules/glob": {
+      "version": "10.4.5",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+      "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+      "dependencies": {
+        "foreground-child": "^3.1.0",
+        "jackspeak": "^3.1.2",
+        "minimatch": "^9.0.4",
+        "minipass": "^7.1.2",
+        "package-json-from-dist": "^1.0.0",
+        "path-scurry": "^1.11.1"
+      },
+      "bin": {
+        "glob": "dist/esm/bin.mjs"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/sucrase/node_modules/minimatch": {
+      "version": "9.0.5",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/supercluster": {
       "version": "7.1.5",
       "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.1.5.tgz",
@@ -17608,6 +18265,25 @@
       "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
       "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
     },
+    "node_modules/thenify": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+      "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+      "dependencies": {
+        "any-promise": "^1.0.0"
+      }
+    },
+    "node_modules/thenify-all": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+      "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+      "dependencies": {
+        "thenify": ">= 3.1.0 < 4"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/through2": {
       "version": "2.0.5",
       "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
@@ -17808,6 +18484,11 @@
         "url": "https://github.com/sponsors/wooorm"
       }
     },
+    "node_modules/ts-interface-checker": {
+      "version": "0.1.13",
+      "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+      "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
+    },
     "node_modules/tslib": {
       "version": "2.8.1",
       "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
@@ -18319,6 +19000,14 @@
         "url": "https://opencollective.com/webpack"
       }
     },
+    "node_modules/use-editable": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/use-editable/-/use-editable-2.3.3.tgz",
+      "integrity": "sha512-7wVD2JbfAFJ3DK0vITvXBdpd9JAz5BcKAAolsnLBuBn6UDDwBGuCIAGvR3yA2BNKm578vAMVHFCWaOcA+BhhiA==",
+      "peerDependencies": {
+        "react": ">= 16.8.0"
+      }
+    },
     "node_modules/util-deprecate": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -18405,6 +19094,468 @@
         "url": "https://opencollective.com/unified"
       }
     },
+    "node_modules/victory": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory/-/victory-37.3.2.tgz",
+      "integrity": "sha512-nGoJVcsOBREUpjjiUJiJsor/PSgFFyxp8BfpOLP5NWxhlLD7sW/Nt7mG3Bd7TjSJeKc4FmwcXjCnwn7ltESkOw==",
+      "dependencies": {
+        "victory-area": "37.3.2",
+        "victory-axis": "37.3.2",
+        "victory-bar": "37.3.2",
+        "victory-box-plot": "37.3.2",
+        "victory-brush-container": "37.3.2",
+        "victory-brush-line": "37.3.2",
+        "victory-candlestick": "37.3.2",
+        "victory-canvas": "37.3.2",
+        "victory-chart": "37.3.2",
+        "victory-core": "37.3.2",
+        "victory-create-container": "37.3.2",
+        "victory-cursor-container": "37.3.2",
+        "victory-errorbar": "37.3.2",
+        "victory-group": "37.3.2",
+        "victory-histogram": "37.3.2",
+        "victory-legend": "37.3.2",
+        "victory-line": "37.3.2",
+        "victory-pie": "37.3.2",
+        "victory-polar-axis": "37.3.2",
+        "victory-scatter": "37.3.2",
+        "victory-selection-container": "37.3.2",
+        "victory-shared-events": "37.3.2",
+        "victory-stack": "37.3.2",
+        "victory-tooltip": "37.3.2",
+        "victory-voronoi": "37.3.2",
+        "victory-voronoi-container": "37.3.2",
+        "victory-zoom-container": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-area": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-area/-/victory-area-37.3.2.tgz",
+      "integrity": "sha512-djqvyMv6asEkdS/84ZpJWM6PvNvPsW6DsA507ylo+R1SB+JSLgPeroLSKkPfMq3NH8Aej16aDm8J+LrEH51pqg==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-core": "37.3.2",
+        "victory-vendor": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-axis": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-axis/-/victory-axis-37.3.2.tgz",
+      "integrity": "sha512-Wv3k3pfY///lIcfcGga/7x9HvyaJ+oybKo1QDeOPEKU6n8i4ri1KAWCNko4fLNXu+9McJoOMAaWDvSdQy8My/g==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-core": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-bar": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-bar/-/victory-bar-37.3.2.tgz",
+      "integrity": "sha512-inqb9HLgxheidOAJw7jTMBBR18I7rCgtfH4WuCSMPPtZtUBAEDYFIJzAKzL/LrpC/sWi91fQC2tzmphTD3DS+Q==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-core": "37.3.2",
+        "victory-vendor": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-box-plot": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-box-plot/-/victory-box-plot-37.3.2.tgz",
+      "integrity": "sha512-voHSHhijQbqjD0Gqv8B/WmhtumXGNQWvqm18W5NZ752jZ5tzhX1mPdOAUFN7FGpPuMNKaYFm/By7YIntlYCGeQ==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-core": "37.3.2",
+        "victory-vendor": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-brush-container": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-brush-container/-/victory-brush-container-37.3.2.tgz",
+      "integrity": "sha512-SZ4LuM8l3tpGkcnTaGGYREs8gz9E17/c9k3X8uObnXGpz9M3RXkL5hEP0ewtcCjbTr1nwRK3hB4tc1b5BTDj9w==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "react-fast-compare": "^3.2.0",
+        "victory-core": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-brush-line": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-brush-line/-/victory-brush-line-37.3.2.tgz",
+      "integrity": "sha512-RwfHV/Kp5Nd6KtAXDH0eX/9Z8HCrRUnqtR88ww/n99c9Ty19aCYWYO2PxwxfVaza0Xr9pKzCzP5U4jauTUdn8w==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "react-fast-compare": "^3.2.0",
+        "victory-core": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-candlestick": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-candlestick/-/victory-candlestick-37.3.2.tgz",
+      "integrity": "sha512-PDtkdQJ0lcIqQdr0FWxqg8P7R00RhZGTXgx0reTKCrfjFV/gHbu+ymgLOdA3qB5seXEfO+9wmBOKo08vOgkMJg==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-core": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-canvas": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-canvas/-/victory-canvas-37.3.2.tgz",
+      "integrity": "sha512-3v6w8Y6YD8qWPJpP5LOutIx5Ft/kI90phVbMaqojDiT7qrWziLv7dCmPE2KI74pi5x8FAuNr+PCo7Iil3m4KbQ==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-bar": "37.3.2",
+        "victory-core": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-chart": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-chart/-/victory-chart-37.3.2.tgz",
+      "integrity": "sha512-ksb3hEytkSVfR654rA/Uo9CeuWNVpH49F3BiUash69nwD+TkAr7lelRo9WLF7oQOVRHHwGCsiGiGrsjT4ObhmA==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "react-fast-compare": "^3.2.0",
+        "victory-axis": "37.3.2",
+        "victory-core": "37.3.2",
+        "victory-polar-axis": "37.3.2",
+        "victory-shared-events": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-core": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.3.2.tgz",
+      "integrity": "sha512-ez/QW9OGltj0uo9EzsRrGEu/hS49dXoraQKblQJO4PEUkDZclV3Gy3CJ2cRW2qBM3ljTsVITiQvKt3urVj+RDw==",
+      "dependencies": {
+        "lodash": "^4.17.21",
+        "react-fast-compare": "^3.2.0",
+        "victory-vendor": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-create-container": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-create-container/-/victory-create-container-37.3.2.tgz",
+      "integrity": "sha512-+hEHeTzeANX1knGOqbeykN1mPUy+zQ8A6LLUSiF8dER+DO2IcF/521LHjBSCRcyjUDik75shfhMc//wryxGBmQ==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-brush-container": "37.3.2",
+        "victory-core": "37.3.2",
+        "victory-cursor-container": "37.3.2",
+        "victory-selection-container": "37.3.2",
+        "victory-voronoi-container": "37.3.2",
+        "victory-zoom-container": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-cursor-container": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-cursor-container/-/victory-cursor-container-37.3.2.tgz",
+      "integrity": "sha512-PpBIexoxV/D9S0JTwgI/AmGC5PEjVFbBg+dxbr0iBskXtIckIdXYg11Tejk4iatvUIuvXrJALMjH+y4Jhl+bGw==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-core": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-errorbar": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-errorbar/-/victory-errorbar-37.3.2.tgz",
+      "integrity": "sha512-QvXJ+8B1DGwYewZSAUKdO6FB/AgSp1tj2iH9yQGJZ6Zww2ZxFjpvehrM9BD+PPrxRxyJXxSojP/+qBlqa+X1vA==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-core": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-group": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-group/-/victory-group-37.3.2.tgz",
+      "integrity": "sha512-TB0ClboJsCR+ATIwUMgSdkdmau4XUiVaZtc5vehZYB7j50lv3SUtltc4qpztOrilsp1osoKHgUHpj7J8yhRtMw==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "react-fast-compare": "^3.2.0",
+        "victory-core": "37.3.2",
+        "victory-shared-events": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-histogram": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-histogram/-/victory-histogram-37.3.2.tgz",
+      "integrity": "sha512-8HOITjHvaZijN3bwHIGZyPg1NsAHr7J08ZwGWc8njZ9utSQmI3U48AhmrPBHyTsfKNRJbNph8THSwpG6mXv14Q==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "react-fast-compare": "^3.2.0",
+        "victory-bar": "37.3.2",
+        "victory-core": "37.3.2",
+        "victory-vendor": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-legend": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-legend/-/victory-legend-37.3.2.tgz",
+      "integrity": "sha512-NrXnStmdqWtfA2AkwOVVWGwXswN9C9TNnmUKzXY52BMWR4OQfIaeO0etRV3vSrv8yUD/rt+rm0UOAAI7pSb1Tw==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-core": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-line": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-line/-/victory-line-37.3.2.tgz",
+      "integrity": "sha512-ZA6A3te2A+egmSPG7jTRu/ZetRE66ggUix11yPaf+7DMZSnRw9f6KXduiUV+fz1otwefJ9pL6vMpXo2SIt9jFQ==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-core": "37.3.2",
+        "victory-vendor": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-pie": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-37.3.2.tgz",
+      "integrity": "sha512-et7Z9d1paoqXdSL8yNpdTadhhhpPgQTrqO5n7vISNJsjOmt0FTLe4/VeKIyugIhERirVkU5Va0CMlMInbNIysw==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-core": "37.3.2",
+        "victory-vendor": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-polar-axis": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-polar-axis/-/victory-polar-axis-37.3.2.tgz",
+      "integrity": "sha512-qxH4ev+0IOy8P1xQJc8OQ+GtnQtahJOJzmIy1cNherPHg3H9AY+GIlK7ApgKW8/+ZNt5u0XZvRhvjulZG2Gwgw==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-core": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-scatter": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-scatter/-/victory-scatter-37.3.2.tgz",
+      "integrity": "sha512-mFFIvFC5U+AX1uAgl19HI21L4Mf1rt2YlnjjzPFkJcgy0a2Fv6otjUd4qeqA6pAkVU4e/Dqj8ZZPV2PtfXNeyQ==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-core": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-selection-container": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-selection-container/-/victory-selection-container-37.3.2.tgz",
+      "integrity": "sha512-g/26Xo4Rxco91GPjZ4jgIQDm95AT4zdG2RqXdQTWEgLbWi+Z/Tk1nodhr1jVjwIjZ6RNMeXcAtcVhFjIPLsWzQ==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-core": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-shared-events": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-37.3.2.tgz",
+      "integrity": "sha512-L/p/JzbP7O0x/DrWZicVByyiq0YMsDsvc2uinUCoI+XMAXbp7flxC2lbd7YBq41Sg13BHoPBiEoCXH4nKmo8hw==",
+      "dependencies": {
+        "json-stringify-safe": "^5.0.1",
+        "lodash": "^4.17.19",
+        "react-fast-compare": "^3.2.0",
+        "victory-core": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-stack": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-stack/-/victory-stack-37.3.2.tgz",
+      "integrity": "sha512-lD8EyzYKTPyWam7h++6VfPxOw4Soj5kYjHqPlbjFjdxoGWYquHrcbHhJ4ra1p+Il9k6iDhy0lIU2DbLa2Ff0wA==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "react-fast-compare": "^3.2.0",
+        "victory-core": "37.3.2",
+        "victory-shared-events": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-tooltip": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-tooltip/-/victory-tooltip-37.3.2.tgz",
+      "integrity": "sha512-UsEIGY5lqf3pOGr3ikB7oHw+QZtS+Qui/vqLPhoAL1YJ2bQ0WkIhVx2jLTlyCLIrj6aCvyvdePppApFF43E7Zg==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-core": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-vendor": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.2.tgz",
+      "integrity": "sha512-2N8j0DIHocffTo2UeZbcd8fcB5+CrQq2KMOSbyTIzYuCVHP10XoS0R/ln7YOU5WoNS6/6L3GEdFWBaGYAAMErQ==",
+      "dependencies": {
+        "@types/d3-array": "^3.0.3",
+        "@types/d3-ease": "^3.0.0",
+        "@types/d3-interpolate": "^3.0.1",
+        "@types/d3-scale": "^4.0.2",
+        "@types/d3-shape": "^3.1.0",
+        "@types/d3-time": "^3.0.0",
+        "@types/d3-timer": "^3.0.0",
+        "d3-array": "^3.1.6",
+        "d3-ease": "^3.0.1",
+        "d3-interpolate": "^3.0.1",
+        "d3-scale": "^4.0.2",
+        "d3-shape": "^3.1.0",
+        "d3-time": "^3.0.0",
+        "d3-timer": "^3.0.1"
+      }
+    },
+    "node_modules/victory-vendor/node_modules/d3-array": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
+      "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
+      "dependencies": {
+        "internmap": "1 - 2"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/victory-vendor/node_modules/d3-path": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
+      "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/victory-vendor/node_modules/d3-shape": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
+      "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
+      "dependencies": {
+        "d3-path": "^3.1.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/victory-vendor/node_modules/d3-time": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
+      "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
+      "dependencies": {
+        "d3-array": "2 - 3"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/victory-vendor/node_modules/d3-timer": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
+      "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/victory-voronoi": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-voronoi/-/victory-voronoi-37.3.2.tgz",
+      "integrity": "sha512-Bfei4AgrFXBZeS7F9A9SOpUlhYLWGmicVvwrvRqWyCj01IMtJt/rk4fc1lGbcL0XE8kEJtCZ+fHE1ZyFvTbv2A==",
+      "dependencies": {
+        "d3-voronoi": "^1.1.4",
+        "lodash": "^4.17.19",
+        "victory-core": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-voronoi-container": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-voronoi-container/-/victory-voronoi-container-37.3.2.tgz",
+      "integrity": "sha512-Y5NiUcVa6SlAMl5yAI5pRRBRCUCDHJHYeUMCiccTOjA+G2B2pUJkJ5NKeFzMLt7hW1LQv0nnRs9ywpMdViF8nQ==",
+      "dependencies": {
+        "delaunay-find": "0.0.6",
+        "lodash": "^4.17.19",
+        "react-fast-compare": "^3.2.0",
+        "victory-core": "37.3.2",
+        "victory-tooltip": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
+    "node_modules/victory-zoom-container": {
+      "version": "37.3.2",
+      "resolved": "https://registry.npmjs.org/victory-zoom-container/-/victory-zoom-container-37.3.2.tgz",
+      "integrity": "sha512-znF3L6+LpQ8hN+7aW8RO+dsHPl1XsMAvf52IKc0OAXZzukIwx1+yW2/OLtHU7G0DzAl3Cxzt5BNd7jFLVXWQJw==",
+      "dependencies": {
+        "lodash": "^4.17.19",
+        "victory-core": "37.3.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0"
+      }
+    },
     "node_modules/vt-pbf": {
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz",
@@ -18918,6 +20069,41 @@
         "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
       }
     },
+    "node_modules/wrap-ansi-cjs": {
+      "name": "wrap-ansi",
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+      }
+    },
+    "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+    },
+    "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/wrap-ansi/node_modules/ansi-regex": {
       "version": "6.1.0",
       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
diff --git a/package.json b/package.json
index b99f70e..34cb296 100644
--- a/package.json
+++ b/package.json
@@ -15,19 +15,22 @@
     "typecheck": "tsc"
   },
   "dependencies": {
-    "@docusaurus/core": "^3.6.0",
-    "@docusaurus/faster": "^3.5.2",
-    "@docusaurus/preset-classic": "^3.6.0",
+    "@docusaurus/core": "^3.6.1",
+    "@docusaurus/faster": "^3.6.1",
+    "@docusaurus/preset-classic": "^3.6.1",
+    "@docusaurus/theme-live-codeblock": "^3.6.1",
     "@mdx-js/react": "^3.0.0",
     "clsx": "^2.0.0",
     "docusaurus-lunr-search": "^3.5.0",
     "plotly.js": "^2.35.2",
     "prism-react-renderer": "^2.3.0",
+    "raw-loader": "^4.0.2",
     "react": "^18.0.0",
     "react-dom": "^18.0.0",
     "react-plotly.js": "^2.6.0",
     "rehype-katex": "^7.0.1",
-    "remark-math": "^6.0.0"
+    "remark-math": "^6.0.0",
+    "victory": "^37.3.2"
   },
   "devDependencies": {
     "@docusaurus/module-type-aliases": "^3.6.0",