├── .gitignore ├── LICENSE ├── README.md ├── app ├── README.md ├── aggregate.sh ├── index.html ├── package-lock.json ├── package.json ├── postcss.config.cjs ├── rom-app-aggregated.txt ├── src │ ├── App.tsx │ ├── components │ │ └── ResearchTimelineApp.tsx │ ├── index.css │ └── main.tsx ├── styles.css ├── tailwind.config.cjs ├── tsconfig.json └── vite.config.ts ├── docs ├── assets │ ├── index-116e1e88.js │ └── index-95a7de50.css └── index.html ├── notebooks ├── DL_ROM_NOAA2D.ipynb ├── DeepONet_Burgers1D.ipynb ├── FNO_Burgers1D.ipynb ├── POD-DL-ROM_Burgers1D.ipynb └── PODDLROM_Burgers1D.ipynb └── requirements.txt /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # poetry 98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 99 | # This is especially recommended for binary packages to ensure reproducibility, and is more 100 | # commonly ignored for libraries. 101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 102 | #poetry.lock 103 | 104 | # pdm 105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 106 | #pdm.lock 107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 108 | # in version control. 109 | # https://pdm.fming.dev/#use-with-ide 110 | .pdm.toml 111 | 112 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 113 | __pypackages__/ 114 | 115 | # Celery stuff 116 | celerybeat-schedule 117 | celerybeat.pid 118 | 119 | # SageMath parsed files 120 | *.sage.py 121 | 122 | # Environments 123 | .env 124 | .venv 125 | env/ 126 | venv/ 127 | ENV/ 128 | env.bak/ 129 | venv.bak/ 130 | 131 | # Spyder project settings 132 | .spyderproject 133 | .spyproject 134 | 135 | # Rope project settings 136 | .ropeproject 137 | 138 | # mkdocs documentation 139 | /site 140 | 141 | # mypy 142 | .mypy_cache/ 143 | .dmypy.json 144 | dmypy.json 145 | 146 | # Pyre type checker 147 | .pyre/ 148 | 149 | # pytype static type analyzer 150 | .pytype/ 151 | 152 | # Cython debug symbols 153 | cython_debug/ 154 | 155 | # PyCharm 156 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 157 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 158 | # and can be added to the global gitignore or merged into this file. For a more nuclear 159 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 160 | #.idea/ 161 | 162 | 163 | # node modules from all subfolders 164 | /node_modules/ 165 | **/node_modules/ 166 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 rfarell 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Reduced Order Modeling Tutorials 2 | 3 | ## Background and Objectives 4 | 5 | This repository is a curated collection of tutorials that delve into various reduced-order modeling techniques. Utilizing Jupyter Notebooks as the instructional medium, these tutorials provide an interactive, hands-on approach to understanding complex computational models like DeepONet, FNO, POD-DL-ROM, and DL-ROM. Each notebook is designed to function as a standalone tutorial and includes provisions for automatic data retrieval, facilitating execution on both local machines and Google Colab environments. 6 | 7 | --- 8 | 9 | ## Installation and Requirements 10 | 11 | To execute the tutorials, certain Python packages must be installed. This can be done by executing the following command: 12 | 13 | ```bash 14 | pip install -r requirements.txt 15 | ``` 16 | 17 | --- 18 | 19 | ## Current Model Coverage 20 | > Li, Z., Kovachki, N., Azizzadenesheli, K., Liu, B., Bhattacharya, K., Stuart, A., & Anandkumar, A. (2020). Fourier neural operator for parametric partial differential equations. arXiv preprint arXiv:2010.08895. [Paper](https://arxiv.org/abs/2010.08895) 21 | 22 | > Lu, L., Jin, P., & Karniadakis, G. E. (2019). Deeponet: Learning nonlinear operators for identifying differential equations based on the universal approximation theorem of operators. arXiv preprint arXiv:1910.03193. [Paper](https://arxiv.org/abs/1910.03193) 23 | 24 | > Fresca, S., & Manzoni, A. (2022). POD-DL-ROM: Enhancing deep learning-based reduced order models for nonlinear parametrized PDEs by proper orthogonal decomposition. Computer Methods in Applied Mechanics and Engineering, 388, 114181. [Paper](https://www.sciencedirect.com/science/article/pii/S0045782521005120) 25 | 26 | > Pant, P., Doshi, R., Bahl, P., & Barati Farimani, A. (2021). Deep learning for reduced order modelling and efficient temporal evolution of fluid simulations. Physics of Fluids, 33(10). [Paper](https://arxiv.org/abs/2107.04556) 27 | 28 | --- 29 | 30 | ## Notebook Naming Convention 31 | 32 | In order to facilitate ease of navigation and comprehension, a standard naming schema has been adopted for the Jupyter notebooks: 33 | 34 | ``` 35 | [Model]_[Equation/Problem+Dimension]_[TAG].ipynb 36 | ``` 37 | 38 | - **Model**: Represents the computational model or algorithm under study (e.g., FNO, DLROM). 39 | - **Equation/Problem+Dimension**: Specifies the mathematical problem or equation being solved along with its spatial dimensions (e.g., Burgers1D, NOAA2D). 40 | - **TAG**: An optional identifier providing supplementary context or categorizing the notebook's difficulty level or specific focus (e.g., Intro, Advanced, DataPrep). 41 | 42 | --- 43 | 44 | ## Interactive Colab Notebooks 45 | 46 | For users interested in a more interactive learning experience, Google Colab versions of these tutorials are available. Click the links below to open the Colab notebooks: 47 | - 📔 [FNO_Burgers1D](https://colab.research.google.com/github/rfarell/Reduced-Order-Modeling-Tutorials/blob/main/notebooks/FNO_Burgers1D.ipynb) 48 | - 📔 [DeepONet_Burgers1D](https://colab.research.google.com/github/rfarell/Reduced-Order-Modeling-Tutorials/blob/main/notebooks/DeepONet_Burgers1D.ipynb) 49 | - 📔 [POD-DL-ROM_Burgers1D](https://colab.research.google.com/github/rfarell/Reduced-Order-Modeling-Tutorials/blob/main/notebooks/POD-DL-ROM_Burgers1D.ipynb) 50 | 51 | --- 52 | 53 | ## Data Sources 54 | 55 | The datasets required for the tutorials are automatically fetched during runtime. 56 | 57 | --- 58 | 59 | ## License 60 | 61 | This repository is under the MIT License. Details can be found in the `LICENSE` file. -------------------------------------------------------------------------------- /app/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfarell/Reduced-Order-Modeling-Tutorials/f80d2ce33a82dd59833dace0a2e3fe74f5c28d1a/app/README.md -------------------------------------------------------------------------------- /app/aggregate.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | OUTPUT_FILE="rom-app-aggregated.txt" 4 | 5 | # Remove existing output file (if any) 6 | rm -f "$OUTPUT_FILE" 7 | 8 | # 1) Show a tree of the project, excluding certain directories/files 9 | # -I pattern uses '|' to separate multiple exclusions 10 | echo "===== Tree of the project =====" >> "$OUTPUT_FILE" 11 | tree -I "node_modules|build|.git|aggregate.sh|rom-app-aggregated.txt|package-lock.json|.next|.vercel" >> "$OUTPUT_FILE" 12 | echo -e "\n" >> "$OUTPUT_FILE" 13 | 14 | # 2) Find all files (not directories) excluding node_modules, build, .git, etc. 15 | echo "===== Concatenated Files =====" >> "$OUTPUT_FILE" 16 | FILES=$(find . -type f \ 17 | -not -path "*/node_modules/*" \ 18 | -not -path "*/build/*" \ 19 | -not -path "*/.next/*" \ 20 | -not -path "*/.vercel/*" \ 21 | -not -path "*/.git/*" \ 22 | -not -name "aggregate.sh" \ 23 | -not -name "rom-app-aggregated.txt" \ 24 | -not -name "package-lock.json") 25 | 26 | for FILE in $FILES; do 27 | echo "===== $FILE =====" >> "$OUTPUT_FILE" 28 | cat "$FILE" >> "$OUTPUT_FILE" 29 | echo -e "\n" >> "$OUTPUT_FILE" 30 | done 31 | 32 | echo "Done! Created '$OUTPUT_FILE' with all relevant files." 33 | -------------------------------------------------------------------------------- /app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Research Timeline 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-react-tailwind-app", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "my-react-tailwind-app", 9 | "version": "1.0.0", 10 | "dependencies": { 11 | "react": "^18.2.0", 12 | "react-dom": "^18.2.0" 13 | }, 14 | "devDependencies": { 15 | "@heroicons/react": "^2.0.13", 16 | "@types/react": "^18.0.28", 17 | "@types/react-dom": "^18.0.11", 18 | "@vitejs/plugin-react": "^4.3.4", 19 | "autoprefixer": "^10.4.14", 20 | "postcss": "^8.4.21", 21 | "tailwindcss": "^3.2.7", 22 | "typescript": "^4.9.5", 23 | "vite": "^4.0.4" 24 | } 25 | }, 26 | "node_modules/@alloc/quick-lru": { 27 | "version": "5.2.0", 28 | "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", 29 | "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", 30 | "dev": true, 31 | "license": "MIT", 32 | "engines": { 33 | "node": ">=10" 34 | }, 35 | "funding": { 36 | "url": "https://github.com/sponsors/sindresorhus" 37 | } 38 | }, 39 | "node_modules/@ampproject/remapping": { 40 | "version": "2.3.0", 41 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", 42 | "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", 43 | "dev": true, 44 | "license": "Apache-2.0", 45 | "dependencies": { 46 | "@jridgewell/gen-mapping": "^0.3.5", 47 | "@jridgewell/trace-mapping": "^0.3.24" 48 | }, 49 | "engines": { 50 | "node": ">=6.0.0" 51 | } 52 | }, 53 | "node_modules/@babel/code-frame": { 54 | "version": "7.26.2", 55 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", 56 | "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", 57 | "dev": true, 58 | "license": "MIT", 59 | "dependencies": { 60 | "@babel/helper-validator-identifier": "^7.25.9", 61 | "js-tokens": "^4.0.0", 62 | "picocolors": "^1.0.0" 63 | }, 64 | "engines": { 65 | "node": ">=6.9.0" 66 | } 67 | }, 68 | "node_modules/@babel/compat-data": { 69 | "version": "7.26.5", 70 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", 71 | "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", 72 | "dev": true, 73 | "license": "MIT", 74 | "engines": { 75 | "node": ">=6.9.0" 76 | } 77 | }, 78 | "node_modules/@babel/core": { 79 | "version": "7.26.0", 80 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", 81 | "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", 82 | "dev": true, 83 | "license": "MIT", 84 | "dependencies": { 85 | "@ampproject/remapping": "^2.2.0", 86 | "@babel/code-frame": "^7.26.0", 87 | "@babel/generator": "^7.26.0", 88 | "@babel/helper-compilation-targets": "^7.25.9", 89 | "@babel/helper-module-transforms": "^7.26.0", 90 | "@babel/helpers": "^7.26.0", 91 | "@babel/parser": "^7.26.0", 92 | "@babel/template": "^7.25.9", 93 | "@babel/traverse": "^7.25.9", 94 | "@babel/types": "^7.26.0", 95 | "convert-source-map": "^2.0.0", 96 | "debug": "^4.1.0", 97 | "gensync": "^1.0.0-beta.2", 98 | "json5": "^2.2.3", 99 | "semver": "^6.3.1" 100 | }, 101 | "engines": { 102 | "node": ">=6.9.0" 103 | }, 104 | "funding": { 105 | "type": "opencollective", 106 | "url": "https://opencollective.com/babel" 107 | } 108 | }, 109 | "node_modules/@babel/generator": { 110 | "version": "7.26.5", 111 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", 112 | "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", 113 | "dev": true, 114 | "license": "MIT", 115 | "dependencies": { 116 | "@babel/parser": "^7.26.5", 117 | "@babel/types": "^7.26.5", 118 | "@jridgewell/gen-mapping": "^0.3.5", 119 | "@jridgewell/trace-mapping": "^0.3.25", 120 | "jsesc": "^3.0.2" 121 | }, 122 | "engines": { 123 | "node": ">=6.9.0" 124 | } 125 | }, 126 | "node_modules/@babel/helper-compilation-targets": { 127 | "version": "7.26.5", 128 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", 129 | "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", 130 | "dev": true, 131 | "license": "MIT", 132 | "dependencies": { 133 | "@babel/compat-data": "^7.26.5", 134 | "@babel/helper-validator-option": "^7.25.9", 135 | "browserslist": "^4.24.0", 136 | "lru-cache": "^5.1.1", 137 | "semver": "^6.3.1" 138 | }, 139 | "engines": { 140 | "node": ">=6.9.0" 141 | } 142 | }, 143 | "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { 144 | "version": "5.1.1", 145 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 146 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 147 | "dev": true, 148 | "license": "ISC", 149 | "dependencies": { 150 | "yallist": "^3.0.2" 151 | } 152 | }, 153 | "node_modules/@babel/helper-module-imports": { 154 | "version": "7.25.9", 155 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", 156 | "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", 157 | "dev": true, 158 | "license": "MIT", 159 | "dependencies": { 160 | "@babel/traverse": "^7.25.9", 161 | "@babel/types": "^7.25.9" 162 | }, 163 | "engines": { 164 | "node": ">=6.9.0" 165 | } 166 | }, 167 | "node_modules/@babel/helper-module-transforms": { 168 | "version": "7.26.0", 169 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", 170 | "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", 171 | "dev": true, 172 | "license": "MIT", 173 | "dependencies": { 174 | "@babel/helper-module-imports": "^7.25.9", 175 | "@babel/helper-validator-identifier": "^7.25.9", 176 | "@babel/traverse": "^7.25.9" 177 | }, 178 | "engines": { 179 | "node": ">=6.9.0" 180 | }, 181 | "peerDependencies": { 182 | "@babel/core": "^7.0.0" 183 | } 184 | }, 185 | "node_modules/@babel/helper-plugin-utils": { 186 | "version": "7.26.5", 187 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", 188 | "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", 189 | "dev": true, 190 | "license": "MIT", 191 | "engines": { 192 | "node": ">=6.9.0" 193 | } 194 | }, 195 | "node_modules/@babel/helper-string-parser": { 196 | "version": "7.25.9", 197 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", 198 | "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", 199 | "dev": true, 200 | "license": "MIT", 201 | "engines": { 202 | "node": ">=6.9.0" 203 | } 204 | }, 205 | "node_modules/@babel/helper-validator-identifier": { 206 | "version": "7.25.9", 207 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", 208 | "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", 209 | "dev": true, 210 | "license": "MIT", 211 | "engines": { 212 | "node": ">=6.9.0" 213 | } 214 | }, 215 | "node_modules/@babel/helper-validator-option": { 216 | "version": "7.25.9", 217 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", 218 | "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", 219 | "dev": true, 220 | "license": "MIT", 221 | "engines": { 222 | "node": ">=6.9.0" 223 | } 224 | }, 225 | "node_modules/@babel/helpers": { 226 | "version": "7.26.0", 227 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", 228 | "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", 229 | "dev": true, 230 | "license": "MIT", 231 | "dependencies": { 232 | "@babel/template": "^7.25.9", 233 | "@babel/types": "^7.26.0" 234 | }, 235 | "engines": { 236 | "node": ">=6.9.0" 237 | } 238 | }, 239 | "node_modules/@babel/parser": { 240 | "version": "7.26.5", 241 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz", 242 | "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==", 243 | "dev": true, 244 | "license": "MIT", 245 | "dependencies": { 246 | "@babel/types": "^7.26.5" 247 | }, 248 | "bin": { 249 | "parser": "bin/babel-parser.js" 250 | }, 251 | "engines": { 252 | "node": ">=6.0.0" 253 | } 254 | }, 255 | "node_modules/@babel/plugin-transform-react-jsx-self": { 256 | "version": "7.25.9", 257 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", 258 | "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", 259 | "dev": true, 260 | "license": "MIT", 261 | "dependencies": { 262 | "@babel/helper-plugin-utils": "^7.25.9" 263 | }, 264 | "engines": { 265 | "node": ">=6.9.0" 266 | }, 267 | "peerDependencies": { 268 | "@babel/core": "^7.0.0-0" 269 | } 270 | }, 271 | "node_modules/@babel/plugin-transform-react-jsx-source": { 272 | "version": "7.25.9", 273 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", 274 | "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", 275 | "dev": true, 276 | "license": "MIT", 277 | "dependencies": { 278 | "@babel/helper-plugin-utils": "^7.25.9" 279 | }, 280 | "engines": { 281 | "node": ">=6.9.0" 282 | }, 283 | "peerDependencies": { 284 | "@babel/core": "^7.0.0-0" 285 | } 286 | }, 287 | "node_modules/@babel/template": { 288 | "version": "7.25.9", 289 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", 290 | "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", 291 | "dev": true, 292 | "license": "MIT", 293 | "dependencies": { 294 | "@babel/code-frame": "^7.25.9", 295 | "@babel/parser": "^7.25.9", 296 | "@babel/types": "^7.25.9" 297 | }, 298 | "engines": { 299 | "node": ">=6.9.0" 300 | } 301 | }, 302 | "node_modules/@babel/traverse": { 303 | "version": "7.26.5", 304 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz", 305 | "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==", 306 | "dev": true, 307 | "license": "MIT", 308 | "dependencies": { 309 | "@babel/code-frame": "^7.26.2", 310 | "@babel/generator": "^7.26.5", 311 | "@babel/parser": "^7.26.5", 312 | "@babel/template": "^7.25.9", 313 | "@babel/types": "^7.26.5", 314 | "debug": "^4.3.1", 315 | "globals": "^11.1.0" 316 | }, 317 | "engines": { 318 | "node": ">=6.9.0" 319 | } 320 | }, 321 | "node_modules/@babel/types": { 322 | "version": "7.26.5", 323 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", 324 | "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", 325 | "dev": true, 326 | "license": "MIT", 327 | "dependencies": { 328 | "@babel/helper-string-parser": "^7.25.9", 329 | "@babel/helper-validator-identifier": "^7.25.9" 330 | }, 331 | "engines": { 332 | "node": ">=6.9.0" 333 | } 334 | }, 335 | "node_modules/@esbuild/android-arm": { 336 | "version": "0.18.20", 337 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", 338 | "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", 339 | "cpu": [ 340 | "arm" 341 | ], 342 | "dev": true, 343 | "license": "MIT", 344 | "optional": true, 345 | "os": [ 346 | "android" 347 | ], 348 | "engines": { 349 | "node": ">=12" 350 | } 351 | }, 352 | "node_modules/@esbuild/android-arm64": { 353 | "version": "0.18.20", 354 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", 355 | "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", 356 | "cpu": [ 357 | "arm64" 358 | ], 359 | "dev": true, 360 | "license": "MIT", 361 | "optional": true, 362 | "os": [ 363 | "android" 364 | ], 365 | "engines": { 366 | "node": ">=12" 367 | } 368 | }, 369 | "node_modules/@esbuild/android-x64": { 370 | "version": "0.18.20", 371 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", 372 | "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", 373 | "cpu": [ 374 | "x64" 375 | ], 376 | "dev": true, 377 | "license": "MIT", 378 | "optional": true, 379 | "os": [ 380 | "android" 381 | ], 382 | "engines": { 383 | "node": ">=12" 384 | } 385 | }, 386 | "node_modules/@esbuild/darwin-arm64": { 387 | "version": "0.18.20", 388 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", 389 | "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", 390 | "cpu": [ 391 | "arm64" 392 | ], 393 | "dev": true, 394 | "license": "MIT", 395 | "optional": true, 396 | "os": [ 397 | "darwin" 398 | ], 399 | "engines": { 400 | "node": ">=12" 401 | } 402 | }, 403 | "node_modules/@esbuild/darwin-x64": { 404 | "version": "0.18.20", 405 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", 406 | "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", 407 | "cpu": [ 408 | "x64" 409 | ], 410 | "dev": true, 411 | "license": "MIT", 412 | "optional": true, 413 | "os": [ 414 | "darwin" 415 | ], 416 | "engines": { 417 | "node": ">=12" 418 | } 419 | }, 420 | "node_modules/@esbuild/freebsd-arm64": { 421 | "version": "0.18.20", 422 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", 423 | "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", 424 | "cpu": [ 425 | "arm64" 426 | ], 427 | "dev": true, 428 | "license": "MIT", 429 | "optional": true, 430 | "os": [ 431 | "freebsd" 432 | ], 433 | "engines": { 434 | "node": ">=12" 435 | } 436 | }, 437 | "node_modules/@esbuild/freebsd-x64": { 438 | "version": "0.18.20", 439 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", 440 | "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", 441 | "cpu": [ 442 | "x64" 443 | ], 444 | "dev": true, 445 | "license": "MIT", 446 | "optional": true, 447 | "os": [ 448 | "freebsd" 449 | ], 450 | "engines": { 451 | "node": ">=12" 452 | } 453 | }, 454 | "node_modules/@esbuild/linux-arm": { 455 | "version": "0.18.20", 456 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", 457 | "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", 458 | "cpu": [ 459 | "arm" 460 | ], 461 | "dev": true, 462 | "license": "MIT", 463 | "optional": true, 464 | "os": [ 465 | "linux" 466 | ], 467 | "engines": { 468 | "node": ">=12" 469 | } 470 | }, 471 | "node_modules/@esbuild/linux-arm64": { 472 | "version": "0.18.20", 473 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", 474 | "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", 475 | "cpu": [ 476 | "arm64" 477 | ], 478 | "dev": true, 479 | "license": "MIT", 480 | "optional": true, 481 | "os": [ 482 | "linux" 483 | ], 484 | "engines": { 485 | "node": ">=12" 486 | } 487 | }, 488 | "node_modules/@esbuild/linux-ia32": { 489 | "version": "0.18.20", 490 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", 491 | "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", 492 | "cpu": [ 493 | "ia32" 494 | ], 495 | "dev": true, 496 | "license": "MIT", 497 | "optional": true, 498 | "os": [ 499 | "linux" 500 | ], 501 | "engines": { 502 | "node": ">=12" 503 | } 504 | }, 505 | "node_modules/@esbuild/linux-loong64": { 506 | "version": "0.18.20", 507 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", 508 | "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", 509 | "cpu": [ 510 | "loong64" 511 | ], 512 | "dev": true, 513 | "license": "MIT", 514 | "optional": true, 515 | "os": [ 516 | "linux" 517 | ], 518 | "engines": { 519 | "node": ">=12" 520 | } 521 | }, 522 | "node_modules/@esbuild/linux-mips64el": { 523 | "version": "0.18.20", 524 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", 525 | "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", 526 | "cpu": [ 527 | "mips64el" 528 | ], 529 | "dev": true, 530 | "license": "MIT", 531 | "optional": true, 532 | "os": [ 533 | "linux" 534 | ], 535 | "engines": { 536 | "node": ">=12" 537 | } 538 | }, 539 | "node_modules/@esbuild/linux-ppc64": { 540 | "version": "0.18.20", 541 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", 542 | "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", 543 | "cpu": [ 544 | "ppc64" 545 | ], 546 | "dev": true, 547 | "license": "MIT", 548 | "optional": true, 549 | "os": [ 550 | "linux" 551 | ], 552 | "engines": { 553 | "node": ">=12" 554 | } 555 | }, 556 | "node_modules/@esbuild/linux-riscv64": { 557 | "version": "0.18.20", 558 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", 559 | "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", 560 | "cpu": [ 561 | "riscv64" 562 | ], 563 | "dev": true, 564 | "license": "MIT", 565 | "optional": true, 566 | "os": [ 567 | "linux" 568 | ], 569 | "engines": { 570 | "node": ">=12" 571 | } 572 | }, 573 | "node_modules/@esbuild/linux-s390x": { 574 | "version": "0.18.20", 575 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", 576 | "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", 577 | "cpu": [ 578 | "s390x" 579 | ], 580 | "dev": true, 581 | "license": "MIT", 582 | "optional": true, 583 | "os": [ 584 | "linux" 585 | ], 586 | "engines": { 587 | "node": ">=12" 588 | } 589 | }, 590 | "node_modules/@esbuild/linux-x64": { 591 | "version": "0.18.20", 592 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", 593 | "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", 594 | "cpu": [ 595 | "x64" 596 | ], 597 | "dev": true, 598 | "license": "MIT", 599 | "optional": true, 600 | "os": [ 601 | "linux" 602 | ], 603 | "engines": { 604 | "node": ">=12" 605 | } 606 | }, 607 | "node_modules/@esbuild/netbsd-x64": { 608 | "version": "0.18.20", 609 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", 610 | "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", 611 | "cpu": [ 612 | "x64" 613 | ], 614 | "dev": true, 615 | "license": "MIT", 616 | "optional": true, 617 | "os": [ 618 | "netbsd" 619 | ], 620 | "engines": { 621 | "node": ">=12" 622 | } 623 | }, 624 | "node_modules/@esbuild/openbsd-x64": { 625 | "version": "0.18.20", 626 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", 627 | "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", 628 | "cpu": [ 629 | "x64" 630 | ], 631 | "dev": true, 632 | "license": "MIT", 633 | "optional": true, 634 | "os": [ 635 | "openbsd" 636 | ], 637 | "engines": { 638 | "node": ">=12" 639 | } 640 | }, 641 | "node_modules/@esbuild/sunos-x64": { 642 | "version": "0.18.20", 643 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", 644 | "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", 645 | "cpu": [ 646 | "x64" 647 | ], 648 | "dev": true, 649 | "license": "MIT", 650 | "optional": true, 651 | "os": [ 652 | "sunos" 653 | ], 654 | "engines": { 655 | "node": ">=12" 656 | } 657 | }, 658 | "node_modules/@esbuild/win32-arm64": { 659 | "version": "0.18.20", 660 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", 661 | "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", 662 | "cpu": [ 663 | "arm64" 664 | ], 665 | "dev": true, 666 | "license": "MIT", 667 | "optional": true, 668 | "os": [ 669 | "win32" 670 | ], 671 | "engines": { 672 | "node": ">=12" 673 | } 674 | }, 675 | "node_modules/@esbuild/win32-ia32": { 676 | "version": "0.18.20", 677 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", 678 | "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", 679 | "cpu": [ 680 | "ia32" 681 | ], 682 | "dev": true, 683 | "license": "MIT", 684 | "optional": true, 685 | "os": [ 686 | "win32" 687 | ], 688 | "engines": { 689 | "node": ">=12" 690 | } 691 | }, 692 | "node_modules/@esbuild/win32-x64": { 693 | "version": "0.18.20", 694 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", 695 | "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", 696 | "cpu": [ 697 | "x64" 698 | ], 699 | "dev": true, 700 | "license": "MIT", 701 | "optional": true, 702 | "os": [ 703 | "win32" 704 | ], 705 | "engines": { 706 | "node": ">=12" 707 | } 708 | }, 709 | "node_modules/@heroicons/react": { 710 | "version": "2.2.0", 711 | "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.2.0.tgz", 712 | "integrity": "sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==", 713 | "dev": true, 714 | "license": "MIT", 715 | "peerDependencies": { 716 | "react": ">= 16 || ^19.0.0-rc" 717 | } 718 | }, 719 | "node_modules/@isaacs/cliui": { 720 | "version": "8.0.2", 721 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 722 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 723 | "dev": true, 724 | "license": "ISC", 725 | "dependencies": { 726 | "string-width": "^5.1.2", 727 | "string-width-cjs": "npm:string-width@^4.2.0", 728 | "strip-ansi": "^7.0.1", 729 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 730 | "wrap-ansi": "^8.1.0", 731 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 732 | }, 733 | "engines": { 734 | "node": ">=12" 735 | } 736 | }, 737 | "node_modules/@jridgewell/gen-mapping": { 738 | "version": "0.3.8", 739 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", 740 | "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", 741 | "dev": true, 742 | "license": "MIT", 743 | "dependencies": { 744 | "@jridgewell/set-array": "^1.2.1", 745 | "@jridgewell/sourcemap-codec": "^1.4.10", 746 | "@jridgewell/trace-mapping": "^0.3.24" 747 | }, 748 | "engines": { 749 | "node": ">=6.0.0" 750 | } 751 | }, 752 | "node_modules/@jridgewell/resolve-uri": { 753 | "version": "3.1.2", 754 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 755 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 756 | "dev": true, 757 | "license": "MIT", 758 | "engines": { 759 | "node": ">=6.0.0" 760 | } 761 | }, 762 | "node_modules/@jridgewell/set-array": { 763 | "version": "1.2.1", 764 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 765 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 766 | "dev": true, 767 | "license": "MIT", 768 | "engines": { 769 | "node": ">=6.0.0" 770 | } 771 | }, 772 | "node_modules/@jridgewell/sourcemap-codec": { 773 | "version": "1.5.0", 774 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 775 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 776 | "dev": true, 777 | "license": "MIT" 778 | }, 779 | "node_modules/@jridgewell/trace-mapping": { 780 | "version": "0.3.25", 781 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 782 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 783 | "dev": true, 784 | "license": "MIT", 785 | "dependencies": { 786 | "@jridgewell/resolve-uri": "^3.1.0", 787 | "@jridgewell/sourcemap-codec": "^1.4.14" 788 | } 789 | }, 790 | "node_modules/@nodelib/fs.scandir": { 791 | "version": "2.1.5", 792 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 793 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 794 | "dev": true, 795 | "license": "MIT", 796 | "dependencies": { 797 | "@nodelib/fs.stat": "2.0.5", 798 | "run-parallel": "^1.1.9" 799 | }, 800 | "engines": { 801 | "node": ">= 8" 802 | } 803 | }, 804 | "node_modules/@nodelib/fs.stat": { 805 | "version": "2.0.5", 806 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 807 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 808 | "dev": true, 809 | "license": "MIT", 810 | "engines": { 811 | "node": ">= 8" 812 | } 813 | }, 814 | "node_modules/@nodelib/fs.walk": { 815 | "version": "1.2.8", 816 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 817 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 818 | "dev": true, 819 | "license": "MIT", 820 | "dependencies": { 821 | "@nodelib/fs.scandir": "2.1.5", 822 | "fastq": "^1.6.0" 823 | }, 824 | "engines": { 825 | "node": ">= 8" 826 | } 827 | }, 828 | "node_modules/@pkgjs/parseargs": { 829 | "version": "0.11.0", 830 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 831 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 832 | "dev": true, 833 | "license": "MIT", 834 | "optional": true, 835 | "engines": { 836 | "node": ">=14" 837 | } 838 | }, 839 | "node_modules/@types/babel__core": { 840 | "version": "7.20.5", 841 | "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", 842 | "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", 843 | "dev": true, 844 | "license": "MIT", 845 | "dependencies": { 846 | "@babel/parser": "^7.20.7", 847 | "@babel/types": "^7.20.7", 848 | "@types/babel__generator": "*", 849 | "@types/babel__template": "*", 850 | "@types/babel__traverse": "*" 851 | } 852 | }, 853 | "node_modules/@types/babel__generator": { 854 | "version": "7.6.8", 855 | "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", 856 | "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", 857 | "dev": true, 858 | "license": "MIT", 859 | "dependencies": { 860 | "@babel/types": "^7.0.0" 861 | } 862 | }, 863 | "node_modules/@types/babel__template": { 864 | "version": "7.4.4", 865 | "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", 866 | "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", 867 | "dev": true, 868 | "license": "MIT", 869 | "dependencies": { 870 | "@babel/parser": "^7.1.0", 871 | "@babel/types": "^7.0.0" 872 | } 873 | }, 874 | "node_modules/@types/babel__traverse": { 875 | "version": "7.20.6", 876 | "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", 877 | "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", 878 | "dev": true, 879 | "license": "MIT", 880 | "dependencies": { 881 | "@babel/types": "^7.20.7" 882 | } 883 | }, 884 | "node_modules/@types/prop-types": { 885 | "version": "15.7.14", 886 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", 887 | "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", 888 | "dev": true, 889 | "license": "MIT" 890 | }, 891 | "node_modules/@types/react": { 892 | "version": "18.3.18", 893 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz", 894 | "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==", 895 | "dev": true, 896 | "license": "MIT", 897 | "dependencies": { 898 | "@types/prop-types": "*", 899 | "csstype": "^3.0.2" 900 | } 901 | }, 902 | "node_modules/@types/react-dom": { 903 | "version": "18.3.5", 904 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz", 905 | "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==", 906 | "dev": true, 907 | "license": "MIT", 908 | "peerDependencies": { 909 | "@types/react": "^18.0.0" 910 | } 911 | }, 912 | "node_modules/@vitejs/plugin-react": { 913 | "version": "4.3.4", 914 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", 915 | "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", 916 | "dev": true, 917 | "license": "MIT", 918 | "dependencies": { 919 | "@babel/core": "^7.26.0", 920 | "@babel/plugin-transform-react-jsx-self": "^7.25.9", 921 | "@babel/plugin-transform-react-jsx-source": "^7.25.9", 922 | "@types/babel__core": "^7.20.5", 923 | "react-refresh": "^0.14.2" 924 | }, 925 | "engines": { 926 | "node": "^14.18.0 || >=16.0.0" 927 | }, 928 | "peerDependencies": { 929 | "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" 930 | } 931 | }, 932 | "node_modules/ansi-regex": { 933 | "version": "6.1.0", 934 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", 935 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", 936 | "dev": true, 937 | "license": "MIT", 938 | "engines": { 939 | "node": ">=12" 940 | }, 941 | "funding": { 942 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 943 | } 944 | }, 945 | "node_modules/ansi-styles": { 946 | "version": "6.2.1", 947 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 948 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 949 | "dev": true, 950 | "license": "MIT", 951 | "engines": { 952 | "node": ">=12" 953 | }, 954 | "funding": { 955 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 956 | } 957 | }, 958 | "node_modules/any-promise": { 959 | "version": "1.3.0", 960 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", 961 | "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", 962 | "dev": true, 963 | "license": "MIT" 964 | }, 965 | "node_modules/anymatch": { 966 | "version": "3.1.3", 967 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 968 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 969 | "dev": true, 970 | "license": "ISC", 971 | "dependencies": { 972 | "normalize-path": "^3.0.0", 973 | "picomatch": "^2.0.4" 974 | }, 975 | "engines": { 976 | "node": ">= 8" 977 | } 978 | }, 979 | "node_modules/arg": { 980 | "version": "5.0.2", 981 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", 982 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", 983 | "dev": true, 984 | "license": "MIT" 985 | }, 986 | "node_modules/autoprefixer": { 987 | "version": "10.4.20", 988 | "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", 989 | "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", 990 | "dev": true, 991 | "funding": [ 992 | { 993 | "type": "opencollective", 994 | "url": "https://opencollective.com/postcss/" 995 | }, 996 | { 997 | "type": "tidelift", 998 | "url": "https://tidelift.com/funding/github/npm/autoprefixer" 999 | }, 1000 | { 1001 | "type": "github", 1002 | "url": "https://github.com/sponsors/ai" 1003 | } 1004 | ], 1005 | "license": "MIT", 1006 | "dependencies": { 1007 | "browserslist": "^4.23.3", 1008 | "caniuse-lite": "^1.0.30001646", 1009 | "fraction.js": "^4.3.7", 1010 | "normalize-range": "^0.1.2", 1011 | "picocolors": "^1.0.1", 1012 | "postcss-value-parser": "^4.2.0" 1013 | }, 1014 | "bin": { 1015 | "autoprefixer": "bin/autoprefixer" 1016 | }, 1017 | "engines": { 1018 | "node": "^10 || ^12 || >=14" 1019 | }, 1020 | "peerDependencies": { 1021 | "postcss": "^8.1.0" 1022 | } 1023 | }, 1024 | "node_modules/balanced-match": { 1025 | "version": "1.0.2", 1026 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1027 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1028 | "dev": true, 1029 | "license": "MIT" 1030 | }, 1031 | "node_modules/binary-extensions": { 1032 | "version": "2.3.0", 1033 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 1034 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 1035 | "dev": true, 1036 | "license": "MIT", 1037 | "engines": { 1038 | "node": ">=8" 1039 | }, 1040 | "funding": { 1041 | "url": "https://github.com/sponsors/sindresorhus" 1042 | } 1043 | }, 1044 | "node_modules/brace-expansion": { 1045 | "version": "2.0.1", 1046 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1047 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1048 | "dev": true, 1049 | "license": "MIT", 1050 | "dependencies": { 1051 | "balanced-match": "^1.0.0" 1052 | } 1053 | }, 1054 | "node_modules/braces": { 1055 | "version": "3.0.3", 1056 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 1057 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 1058 | "dev": true, 1059 | "license": "MIT", 1060 | "dependencies": { 1061 | "fill-range": "^7.1.1" 1062 | }, 1063 | "engines": { 1064 | "node": ">=8" 1065 | } 1066 | }, 1067 | "node_modules/browserslist": { 1068 | "version": "4.24.4", 1069 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", 1070 | "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", 1071 | "dev": true, 1072 | "funding": [ 1073 | { 1074 | "type": "opencollective", 1075 | "url": "https://opencollective.com/browserslist" 1076 | }, 1077 | { 1078 | "type": "tidelift", 1079 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1080 | }, 1081 | { 1082 | "type": "github", 1083 | "url": "https://github.com/sponsors/ai" 1084 | } 1085 | ], 1086 | "license": "MIT", 1087 | "dependencies": { 1088 | "caniuse-lite": "^1.0.30001688", 1089 | "electron-to-chromium": "^1.5.73", 1090 | "node-releases": "^2.0.19", 1091 | "update-browserslist-db": "^1.1.1" 1092 | }, 1093 | "bin": { 1094 | "browserslist": "cli.js" 1095 | }, 1096 | "engines": { 1097 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 1098 | } 1099 | }, 1100 | "node_modules/camelcase-css": { 1101 | "version": "2.0.1", 1102 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", 1103 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", 1104 | "dev": true, 1105 | "license": "MIT", 1106 | "engines": { 1107 | "node": ">= 6" 1108 | } 1109 | }, 1110 | "node_modules/caniuse-lite": { 1111 | "version": "1.0.30001695", 1112 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001695.tgz", 1113 | "integrity": "sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==", 1114 | "dev": true, 1115 | "funding": [ 1116 | { 1117 | "type": "opencollective", 1118 | "url": "https://opencollective.com/browserslist" 1119 | }, 1120 | { 1121 | "type": "tidelift", 1122 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 1123 | }, 1124 | { 1125 | "type": "github", 1126 | "url": "https://github.com/sponsors/ai" 1127 | } 1128 | ], 1129 | "license": "CC-BY-4.0" 1130 | }, 1131 | "node_modules/chokidar": { 1132 | "version": "3.6.0", 1133 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 1134 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 1135 | "dev": true, 1136 | "license": "MIT", 1137 | "dependencies": { 1138 | "anymatch": "~3.1.2", 1139 | "braces": "~3.0.2", 1140 | "glob-parent": "~5.1.2", 1141 | "is-binary-path": "~2.1.0", 1142 | "is-glob": "~4.0.1", 1143 | "normalize-path": "~3.0.0", 1144 | "readdirp": "~3.6.0" 1145 | }, 1146 | "engines": { 1147 | "node": ">= 8.10.0" 1148 | }, 1149 | "funding": { 1150 | "url": "https://paulmillr.com/funding/" 1151 | }, 1152 | "optionalDependencies": { 1153 | "fsevents": "~2.3.2" 1154 | } 1155 | }, 1156 | "node_modules/chokidar/node_modules/glob-parent": { 1157 | "version": "5.1.2", 1158 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1159 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1160 | "dev": true, 1161 | "license": "ISC", 1162 | "dependencies": { 1163 | "is-glob": "^4.0.1" 1164 | }, 1165 | "engines": { 1166 | "node": ">= 6" 1167 | } 1168 | }, 1169 | "node_modules/color-convert": { 1170 | "version": "2.0.1", 1171 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1172 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1173 | "dev": true, 1174 | "license": "MIT", 1175 | "dependencies": { 1176 | "color-name": "~1.1.4" 1177 | }, 1178 | "engines": { 1179 | "node": ">=7.0.0" 1180 | } 1181 | }, 1182 | "node_modules/color-name": { 1183 | "version": "1.1.4", 1184 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1185 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1186 | "dev": true, 1187 | "license": "MIT" 1188 | }, 1189 | "node_modules/commander": { 1190 | "version": "4.1.1", 1191 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", 1192 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", 1193 | "dev": true, 1194 | "license": "MIT", 1195 | "engines": { 1196 | "node": ">= 6" 1197 | } 1198 | }, 1199 | "node_modules/convert-source-map": { 1200 | "version": "2.0.0", 1201 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", 1202 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", 1203 | "dev": true, 1204 | "license": "MIT" 1205 | }, 1206 | "node_modules/cross-spawn": { 1207 | "version": "7.0.6", 1208 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 1209 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 1210 | "dev": true, 1211 | "license": "MIT", 1212 | "dependencies": { 1213 | "path-key": "^3.1.0", 1214 | "shebang-command": "^2.0.0", 1215 | "which": "^2.0.1" 1216 | }, 1217 | "engines": { 1218 | "node": ">= 8" 1219 | } 1220 | }, 1221 | "node_modules/cssesc": { 1222 | "version": "3.0.0", 1223 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 1224 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 1225 | "dev": true, 1226 | "license": "MIT", 1227 | "bin": { 1228 | "cssesc": "bin/cssesc" 1229 | }, 1230 | "engines": { 1231 | "node": ">=4" 1232 | } 1233 | }, 1234 | "node_modules/csstype": { 1235 | "version": "3.1.3", 1236 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", 1237 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", 1238 | "dev": true, 1239 | "license": "MIT" 1240 | }, 1241 | "node_modules/debug": { 1242 | "version": "4.4.0", 1243 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 1244 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 1245 | "dev": true, 1246 | "license": "MIT", 1247 | "dependencies": { 1248 | "ms": "^2.1.3" 1249 | }, 1250 | "engines": { 1251 | "node": ">=6.0" 1252 | }, 1253 | "peerDependenciesMeta": { 1254 | "supports-color": { 1255 | "optional": true 1256 | } 1257 | } 1258 | }, 1259 | "node_modules/didyoumean": { 1260 | "version": "1.2.2", 1261 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", 1262 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", 1263 | "dev": true, 1264 | "license": "Apache-2.0" 1265 | }, 1266 | "node_modules/dlv": { 1267 | "version": "1.1.3", 1268 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", 1269 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", 1270 | "dev": true, 1271 | "license": "MIT" 1272 | }, 1273 | "node_modules/eastasianwidth": { 1274 | "version": "0.2.0", 1275 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1276 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 1277 | "dev": true, 1278 | "license": "MIT" 1279 | }, 1280 | "node_modules/electron-to-chromium": { 1281 | "version": "1.5.83", 1282 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.83.tgz", 1283 | "integrity": "sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ==", 1284 | "dev": true, 1285 | "license": "ISC" 1286 | }, 1287 | "node_modules/emoji-regex": { 1288 | "version": "9.2.2", 1289 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 1290 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 1291 | "dev": true, 1292 | "license": "MIT" 1293 | }, 1294 | "node_modules/esbuild": { 1295 | "version": "0.18.20", 1296 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", 1297 | "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", 1298 | "dev": true, 1299 | "hasInstallScript": true, 1300 | "license": "MIT", 1301 | "bin": { 1302 | "esbuild": "bin/esbuild" 1303 | }, 1304 | "engines": { 1305 | "node": ">=12" 1306 | }, 1307 | "optionalDependencies": { 1308 | "@esbuild/android-arm": "0.18.20", 1309 | "@esbuild/android-arm64": "0.18.20", 1310 | "@esbuild/android-x64": "0.18.20", 1311 | "@esbuild/darwin-arm64": "0.18.20", 1312 | "@esbuild/darwin-x64": "0.18.20", 1313 | "@esbuild/freebsd-arm64": "0.18.20", 1314 | "@esbuild/freebsd-x64": "0.18.20", 1315 | "@esbuild/linux-arm": "0.18.20", 1316 | "@esbuild/linux-arm64": "0.18.20", 1317 | "@esbuild/linux-ia32": "0.18.20", 1318 | "@esbuild/linux-loong64": "0.18.20", 1319 | "@esbuild/linux-mips64el": "0.18.20", 1320 | "@esbuild/linux-ppc64": "0.18.20", 1321 | "@esbuild/linux-riscv64": "0.18.20", 1322 | "@esbuild/linux-s390x": "0.18.20", 1323 | "@esbuild/linux-x64": "0.18.20", 1324 | "@esbuild/netbsd-x64": "0.18.20", 1325 | "@esbuild/openbsd-x64": "0.18.20", 1326 | "@esbuild/sunos-x64": "0.18.20", 1327 | "@esbuild/win32-arm64": "0.18.20", 1328 | "@esbuild/win32-ia32": "0.18.20", 1329 | "@esbuild/win32-x64": "0.18.20" 1330 | } 1331 | }, 1332 | "node_modules/escalade": { 1333 | "version": "3.2.0", 1334 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 1335 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 1336 | "dev": true, 1337 | "license": "MIT", 1338 | "engines": { 1339 | "node": ">=6" 1340 | } 1341 | }, 1342 | "node_modules/fast-glob": { 1343 | "version": "3.3.3", 1344 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", 1345 | "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", 1346 | "dev": true, 1347 | "license": "MIT", 1348 | "dependencies": { 1349 | "@nodelib/fs.stat": "^2.0.2", 1350 | "@nodelib/fs.walk": "^1.2.3", 1351 | "glob-parent": "^5.1.2", 1352 | "merge2": "^1.3.0", 1353 | "micromatch": "^4.0.8" 1354 | }, 1355 | "engines": { 1356 | "node": ">=8.6.0" 1357 | } 1358 | }, 1359 | "node_modules/fast-glob/node_modules/glob-parent": { 1360 | "version": "5.1.2", 1361 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1362 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1363 | "dev": true, 1364 | "license": "ISC", 1365 | "dependencies": { 1366 | "is-glob": "^4.0.1" 1367 | }, 1368 | "engines": { 1369 | "node": ">= 6" 1370 | } 1371 | }, 1372 | "node_modules/fastq": { 1373 | "version": "1.18.0", 1374 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", 1375 | "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", 1376 | "dev": true, 1377 | "license": "ISC", 1378 | "dependencies": { 1379 | "reusify": "^1.0.4" 1380 | } 1381 | }, 1382 | "node_modules/fill-range": { 1383 | "version": "7.1.1", 1384 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1385 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1386 | "dev": true, 1387 | "license": "MIT", 1388 | "dependencies": { 1389 | "to-regex-range": "^5.0.1" 1390 | }, 1391 | "engines": { 1392 | "node": ">=8" 1393 | } 1394 | }, 1395 | "node_modules/foreground-child": { 1396 | "version": "3.3.0", 1397 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", 1398 | "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", 1399 | "dev": true, 1400 | "license": "ISC", 1401 | "dependencies": { 1402 | "cross-spawn": "^7.0.0", 1403 | "signal-exit": "^4.0.1" 1404 | }, 1405 | "engines": { 1406 | "node": ">=14" 1407 | }, 1408 | "funding": { 1409 | "url": "https://github.com/sponsors/isaacs" 1410 | } 1411 | }, 1412 | "node_modules/fraction.js": { 1413 | "version": "4.3.7", 1414 | "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", 1415 | "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", 1416 | "dev": true, 1417 | "license": "MIT", 1418 | "engines": { 1419 | "node": "*" 1420 | }, 1421 | "funding": { 1422 | "type": "patreon", 1423 | "url": "https://github.com/sponsors/rawify" 1424 | } 1425 | }, 1426 | "node_modules/fsevents": { 1427 | "version": "2.3.3", 1428 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1429 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1430 | "dev": true, 1431 | "hasInstallScript": true, 1432 | "license": "MIT", 1433 | "optional": true, 1434 | "os": [ 1435 | "darwin" 1436 | ], 1437 | "engines": { 1438 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1439 | } 1440 | }, 1441 | "node_modules/function-bind": { 1442 | "version": "1.1.2", 1443 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 1444 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 1445 | "dev": true, 1446 | "license": "MIT", 1447 | "funding": { 1448 | "url": "https://github.com/sponsors/ljharb" 1449 | } 1450 | }, 1451 | "node_modules/gensync": { 1452 | "version": "1.0.0-beta.2", 1453 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 1454 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 1455 | "dev": true, 1456 | "license": "MIT", 1457 | "engines": { 1458 | "node": ">=6.9.0" 1459 | } 1460 | }, 1461 | "node_modules/glob": { 1462 | "version": "10.4.5", 1463 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 1464 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", 1465 | "dev": true, 1466 | "license": "ISC", 1467 | "dependencies": { 1468 | "foreground-child": "^3.1.0", 1469 | "jackspeak": "^3.1.2", 1470 | "minimatch": "^9.0.4", 1471 | "minipass": "^7.1.2", 1472 | "package-json-from-dist": "^1.0.0", 1473 | "path-scurry": "^1.11.1" 1474 | }, 1475 | "bin": { 1476 | "glob": "dist/esm/bin.mjs" 1477 | }, 1478 | "funding": { 1479 | "url": "https://github.com/sponsors/isaacs" 1480 | } 1481 | }, 1482 | "node_modules/glob-parent": { 1483 | "version": "6.0.2", 1484 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1485 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1486 | "dev": true, 1487 | "license": "ISC", 1488 | "dependencies": { 1489 | "is-glob": "^4.0.3" 1490 | }, 1491 | "engines": { 1492 | "node": ">=10.13.0" 1493 | } 1494 | }, 1495 | "node_modules/globals": { 1496 | "version": "11.12.0", 1497 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1498 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1499 | "dev": true, 1500 | "license": "MIT", 1501 | "engines": { 1502 | "node": ">=4" 1503 | } 1504 | }, 1505 | "node_modules/hasown": { 1506 | "version": "2.0.2", 1507 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 1508 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 1509 | "dev": true, 1510 | "license": "MIT", 1511 | "dependencies": { 1512 | "function-bind": "^1.1.2" 1513 | }, 1514 | "engines": { 1515 | "node": ">= 0.4" 1516 | } 1517 | }, 1518 | "node_modules/is-binary-path": { 1519 | "version": "2.1.0", 1520 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1521 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1522 | "dev": true, 1523 | "license": "MIT", 1524 | "dependencies": { 1525 | "binary-extensions": "^2.0.0" 1526 | }, 1527 | "engines": { 1528 | "node": ">=8" 1529 | } 1530 | }, 1531 | "node_modules/is-core-module": { 1532 | "version": "2.16.1", 1533 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", 1534 | "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", 1535 | "dev": true, 1536 | "license": "MIT", 1537 | "dependencies": { 1538 | "hasown": "^2.0.2" 1539 | }, 1540 | "engines": { 1541 | "node": ">= 0.4" 1542 | }, 1543 | "funding": { 1544 | "url": "https://github.com/sponsors/ljharb" 1545 | } 1546 | }, 1547 | "node_modules/is-extglob": { 1548 | "version": "2.1.1", 1549 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1550 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1551 | "dev": true, 1552 | "license": "MIT", 1553 | "engines": { 1554 | "node": ">=0.10.0" 1555 | } 1556 | }, 1557 | "node_modules/is-fullwidth-code-point": { 1558 | "version": "3.0.0", 1559 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1560 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1561 | "dev": true, 1562 | "license": "MIT", 1563 | "engines": { 1564 | "node": ">=8" 1565 | } 1566 | }, 1567 | "node_modules/is-glob": { 1568 | "version": "4.0.3", 1569 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1570 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1571 | "dev": true, 1572 | "license": "MIT", 1573 | "dependencies": { 1574 | "is-extglob": "^2.1.1" 1575 | }, 1576 | "engines": { 1577 | "node": ">=0.10.0" 1578 | } 1579 | }, 1580 | "node_modules/is-number": { 1581 | "version": "7.0.0", 1582 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1583 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1584 | "dev": true, 1585 | "license": "MIT", 1586 | "engines": { 1587 | "node": ">=0.12.0" 1588 | } 1589 | }, 1590 | "node_modules/isexe": { 1591 | "version": "2.0.0", 1592 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1593 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1594 | "dev": true, 1595 | "license": "ISC" 1596 | }, 1597 | "node_modules/jackspeak": { 1598 | "version": "3.4.3", 1599 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", 1600 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 1601 | "dev": true, 1602 | "license": "BlueOak-1.0.0", 1603 | "dependencies": { 1604 | "@isaacs/cliui": "^8.0.2" 1605 | }, 1606 | "funding": { 1607 | "url": "https://github.com/sponsors/isaacs" 1608 | }, 1609 | "optionalDependencies": { 1610 | "@pkgjs/parseargs": "^0.11.0" 1611 | } 1612 | }, 1613 | "node_modules/jiti": { 1614 | "version": "1.21.7", 1615 | "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", 1616 | "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", 1617 | "dev": true, 1618 | "license": "MIT", 1619 | "bin": { 1620 | "jiti": "bin/jiti.js" 1621 | } 1622 | }, 1623 | "node_modules/js-tokens": { 1624 | "version": "4.0.0", 1625 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1626 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1627 | "license": "MIT" 1628 | }, 1629 | "node_modules/jsesc": { 1630 | "version": "3.1.0", 1631 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", 1632 | "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", 1633 | "dev": true, 1634 | "license": "MIT", 1635 | "bin": { 1636 | "jsesc": "bin/jsesc" 1637 | }, 1638 | "engines": { 1639 | "node": ">=6" 1640 | } 1641 | }, 1642 | "node_modules/json5": { 1643 | "version": "2.2.3", 1644 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 1645 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 1646 | "dev": true, 1647 | "license": "MIT", 1648 | "bin": { 1649 | "json5": "lib/cli.js" 1650 | }, 1651 | "engines": { 1652 | "node": ">=6" 1653 | } 1654 | }, 1655 | "node_modules/lilconfig": { 1656 | "version": "3.1.3", 1657 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", 1658 | "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", 1659 | "dev": true, 1660 | "license": "MIT", 1661 | "engines": { 1662 | "node": ">=14" 1663 | }, 1664 | "funding": { 1665 | "url": "https://github.com/sponsors/antonk52" 1666 | } 1667 | }, 1668 | "node_modules/lines-and-columns": { 1669 | "version": "1.2.4", 1670 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 1671 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 1672 | "dev": true, 1673 | "license": "MIT" 1674 | }, 1675 | "node_modules/loose-envify": { 1676 | "version": "1.4.0", 1677 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1678 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1679 | "license": "MIT", 1680 | "dependencies": { 1681 | "js-tokens": "^3.0.0 || ^4.0.0" 1682 | }, 1683 | "bin": { 1684 | "loose-envify": "cli.js" 1685 | } 1686 | }, 1687 | "node_modules/lru-cache": { 1688 | "version": "10.4.3", 1689 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", 1690 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", 1691 | "dev": true, 1692 | "license": "ISC" 1693 | }, 1694 | "node_modules/merge2": { 1695 | "version": "1.4.1", 1696 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1697 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1698 | "dev": true, 1699 | "license": "MIT", 1700 | "engines": { 1701 | "node": ">= 8" 1702 | } 1703 | }, 1704 | "node_modules/micromatch": { 1705 | "version": "4.0.8", 1706 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", 1707 | "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", 1708 | "dev": true, 1709 | "license": "MIT", 1710 | "dependencies": { 1711 | "braces": "^3.0.3", 1712 | "picomatch": "^2.3.1" 1713 | }, 1714 | "engines": { 1715 | "node": ">=8.6" 1716 | } 1717 | }, 1718 | "node_modules/minimatch": { 1719 | "version": "9.0.5", 1720 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 1721 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 1722 | "dev": true, 1723 | "license": "ISC", 1724 | "dependencies": { 1725 | "brace-expansion": "^2.0.1" 1726 | }, 1727 | "engines": { 1728 | "node": ">=16 || 14 >=14.17" 1729 | }, 1730 | "funding": { 1731 | "url": "https://github.com/sponsors/isaacs" 1732 | } 1733 | }, 1734 | "node_modules/minipass": { 1735 | "version": "7.1.2", 1736 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 1737 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 1738 | "dev": true, 1739 | "license": "ISC", 1740 | "engines": { 1741 | "node": ">=16 || 14 >=14.17" 1742 | } 1743 | }, 1744 | "node_modules/ms": { 1745 | "version": "2.1.3", 1746 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1747 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1748 | "dev": true, 1749 | "license": "MIT" 1750 | }, 1751 | "node_modules/mz": { 1752 | "version": "2.7.0", 1753 | "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", 1754 | "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", 1755 | "dev": true, 1756 | "license": "MIT", 1757 | "dependencies": { 1758 | "any-promise": "^1.0.0", 1759 | "object-assign": "^4.0.1", 1760 | "thenify-all": "^1.0.0" 1761 | } 1762 | }, 1763 | "node_modules/nanoid": { 1764 | "version": "3.3.8", 1765 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", 1766 | "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", 1767 | "dev": true, 1768 | "funding": [ 1769 | { 1770 | "type": "github", 1771 | "url": "https://github.com/sponsors/ai" 1772 | } 1773 | ], 1774 | "license": "MIT", 1775 | "bin": { 1776 | "nanoid": "bin/nanoid.cjs" 1777 | }, 1778 | "engines": { 1779 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1780 | } 1781 | }, 1782 | "node_modules/node-releases": { 1783 | "version": "2.0.19", 1784 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", 1785 | "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", 1786 | "dev": true, 1787 | "license": "MIT" 1788 | }, 1789 | "node_modules/normalize-path": { 1790 | "version": "3.0.0", 1791 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1792 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1793 | "dev": true, 1794 | "license": "MIT", 1795 | "engines": { 1796 | "node": ">=0.10.0" 1797 | } 1798 | }, 1799 | "node_modules/normalize-range": { 1800 | "version": "0.1.2", 1801 | "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", 1802 | "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", 1803 | "dev": true, 1804 | "license": "MIT", 1805 | "engines": { 1806 | "node": ">=0.10.0" 1807 | } 1808 | }, 1809 | "node_modules/object-assign": { 1810 | "version": "4.1.1", 1811 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1812 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 1813 | "dev": true, 1814 | "license": "MIT", 1815 | "engines": { 1816 | "node": ">=0.10.0" 1817 | } 1818 | }, 1819 | "node_modules/object-hash": { 1820 | "version": "3.0.0", 1821 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", 1822 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", 1823 | "dev": true, 1824 | "license": "MIT", 1825 | "engines": { 1826 | "node": ">= 6" 1827 | } 1828 | }, 1829 | "node_modules/package-json-from-dist": { 1830 | "version": "1.0.1", 1831 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", 1832 | "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", 1833 | "dev": true, 1834 | "license": "BlueOak-1.0.0" 1835 | }, 1836 | "node_modules/path-key": { 1837 | "version": "3.1.1", 1838 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1839 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1840 | "dev": true, 1841 | "license": "MIT", 1842 | "engines": { 1843 | "node": ">=8" 1844 | } 1845 | }, 1846 | "node_modules/path-parse": { 1847 | "version": "1.0.7", 1848 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1849 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1850 | "dev": true, 1851 | "license": "MIT" 1852 | }, 1853 | "node_modules/path-scurry": { 1854 | "version": "1.11.1", 1855 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 1856 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 1857 | "dev": true, 1858 | "license": "BlueOak-1.0.0", 1859 | "dependencies": { 1860 | "lru-cache": "^10.2.0", 1861 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 1862 | }, 1863 | "engines": { 1864 | "node": ">=16 || 14 >=14.18" 1865 | }, 1866 | "funding": { 1867 | "url": "https://github.com/sponsors/isaacs" 1868 | } 1869 | }, 1870 | "node_modules/picocolors": { 1871 | "version": "1.1.1", 1872 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 1873 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 1874 | "dev": true, 1875 | "license": "ISC" 1876 | }, 1877 | "node_modules/picomatch": { 1878 | "version": "2.3.1", 1879 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1880 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1881 | "dev": true, 1882 | "license": "MIT", 1883 | "engines": { 1884 | "node": ">=8.6" 1885 | }, 1886 | "funding": { 1887 | "url": "https://github.com/sponsors/jonschlinkert" 1888 | } 1889 | }, 1890 | "node_modules/pify": { 1891 | "version": "2.3.0", 1892 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1893 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", 1894 | "dev": true, 1895 | "license": "MIT", 1896 | "engines": { 1897 | "node": ">=0.10.0" 1898 | } 1899 | }, 1900 | "node_modules/pirates": { 1901 | "version": "4.0.6", 1902 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", 1903 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", 1904 | "dev": true, 1905 | "license": "MIT", 1906 | "engines": { 1907 | "node": ">= 6" 1908 | } 1909 | }, 1910 | "node_modules/postcss": { 1911 | "version": "8.5.1", 1912 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", 1913 | "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", 1914 | "dev": true, 1915 | "funding": [ 1916 | { 1917 | "type": "opencollective", 1918 | "url": "https://opencollective.com/postcss/" 1919 | }, 1920 | { 1921 | "type": "tidelift", 1922 | "url": "https://tidelift.com/funding/github/npm/postcss" 1923 | }, 1924 | { 1925 | "type": "github", 1926 | "url": "https://github.com/sponsors/ai" 1927 | } 1928 | ], 1929 | "license": "MIT", 1930 | "dependencies": { 1931 | "nanoid": "^3.3.8", 1932 | "picocolors": "^1.1.1", 1933 | "source-map-js": "^1.2.1" 1934 | }, 1935 | "engines": { 1936 | "node": "^10 || ^12 || >=14" 1937 | } 1938 | }, 1939 | "node_modules/postcss-import": { 1940 | "version": "15.1.0", 1941 | "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", 1942 | "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", 1943 | "dev": true, 1944 | "license": "MIT", 1945 | "dependencies": { 1946 | "postcss-value-parser": "^4.0.0", 1947 | "read-cache": "^1.0.0", 1948 | "resolve": "^1.1.7" 1949 | }, 1950 | "engines": { 1951 | "node": ">=14.0.0" 1952 | }, 1953 | "peerDependencies": { 1954 | "postcss": "^8.0.0" 1955 | } 1956 | }, 1957 | "node_modules/postcss-js": { 1958 | "version": "4.0.1", 1959 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", 1960 | "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", 1961 | "dev": true, 1962 | "license": "MIT", 1963 | "dependencies": { 1964 | "camelcase-css": "^2.0.1" 1965 | }, 1966 | "engines": { 1967 | "node": "^12 || ^14 || >= 16" 1968 | }, 1969 | "funding": { 1970 | "type": "opencollective", 1971 | "url": "https://opencollective.com/postcss/" 1972 | }, 1973 | "peerDependencies": { 1974 | "postcss": "^8.4.21" 1975 | } 1976 | }, 1977 | "node_modules/postcss-load-config": { 1978 | "version": "4.0.2", 1979 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", 1980 | "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", 1981 | "dev": true, 1982 | "funding": [ 1983 | { 1984 | "type": "opencollective", 1985 | "url": "https://opencollective.com/postcss/" 1986 | }, 1987 | { 1988 | "type": "github", 1989 | "url": "https://github.com/sponsors/ai" 1990 | } 1991 | ], 1992 | "license": "MIT", 1993 | "dependencies": { 1994 | "lilconfig": "^3.0.0", 1995 | "yaml": "^2.3.4" 1996 | }, 1997 | "engines": { 1998 | "node": ">= 14" 1999 | }, 2000 | "peerDependencies": { 2001 | "postcss": ">=8.0.9", 2002 | "ts-node": ">=9.0.0" 2003 | }, 2004 | "peerDependenciesMeta": { 2005 | "postcss": { 2006 | "optional": true 2007 | }, 2008 | "ts-node": { 2009 | "optional": true 2010 | } 2011 | } 2012 | }, 2013 | "node_modules/postcss-nested": { 2014 | "version": "6.2.0", 2015 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", 2016 | "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", 2017 | "dev": true, 2018 | "funding": [ 2019 | { 2020 | "type": "opencollective", 2021 | "url": "https://opencollective.com/postcss/" 2022 | }, 2023 | { 2024 | "type": "github", 2025 | "url": "https://github.com/sponsors/ai" 2026 | } 2027 | ], 2028 | "license": "MIT", 2029 | "dependencies": { 2030 | "postcss-selector-parser": "^6.1.1" 2031 | }, 2032 | "engines": { 2033 | "node": ">=12.0" 2034 | }, 2035 | "peerDependencies": { 2036 | "postcss": "^8.2.14" 2037 | } 2038 | }, 2039 | "node_modules/postcss-selector-parser": { 2040 | "version": "6.1.2", 2041 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", 2042 | "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", 2043 | "dev": true, 2044 | "license": "MIT", 2045 | "dependencies": { 2046 | "cssesc": "^3.0.0", 2047 | "util-deprecate": "^1.0.2" 2048 | }, 2049 | "engines": { 2050 | "node": ">=4" 2051 | } 2052 | }, 2053 | "node_modules/postcss-value-parser": { 2054 | "version": "4.2.0", 2055 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", 2056 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 2057 | "dev": true, 2058 | "license": "MIT" 2059 | }, 2060 | "node_modules/queue-microtask": { 2061 | "version": "1.2.3", 2062 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2063 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2064 | "dev": true, 2065 | "funding": [ 2066 | { 2067 | "type": "github", 2068 | "url": "https://github.com/sponsors/feross" 2069 | }, 2070 | { 2071 | "type": "patreon", 2072 | "url": "https://www.patreon.com/feross" 2073 | }, 2074 | { 2075 | "type": "consulting", 2076 | "url": "https://feross.org/support" 2077 | } 2078 | ], 2079 | "license": "MIT" 2080 | }, 2081 | "node_modules/react": { 2082 | "version": "18.3.1", 2083 | "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", 2084 | "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", 2085 | "license": "MIT", 2086 | "dependencies": { 2087 | "loose-envify": "^1.1.0" 2088 | }, 2089 | "engines": { 2090 | "node": ">=0.10.0" 2091 | } 2092 | }, 2093 | "node_modules/react-dom": { 2094 | "version": "18.3.1", 2095 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", 2096 | "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", 2097 | "license": "MIT", 2098 | "dependencies": { 2099 | "loose-envify": "^1.1.0", 2100 | "scheduler": "^0.23.2" 2101 | }, 2102 | "peerDependencies": { 2103 | "react": "^18.3.1" 2104 | } 2105 | }, 2106 | "node_modules/react-refresh": { 2107 | "version": "0.14.2", 2108 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", 2109 | "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", 2110 | "dev": true, 2111 | "license": "MIT", 2112 | "engines": { 2113 | "node": ">=0.10.0" 2114 | } 2115 | }, 2116 | "node_modules/read-cache": { 2117 | "version": "1.0.0", 2118 | "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", 2119 | "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", 2120 | "dev": true, 2121 | "license": "MIT", 2122 | "dependencies": { 2123 | "pify": "^2.3.0" 2124 | } 2125 | }, 2126 | "node_modules/readdirp": { 2127 | "version": "3.6.0", 2128 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 2129 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 2130 | "dev": true, 2131 | "license": "MIT", 2132 | "dependencies": { 2133 | "picomatch": "^2.2.1" 2134 | }, 2135 | "engines": { 2136 | "node": ">=8.10.0" 2137 | } 2138 | }, 2139 | "node_modules/resolve": { 2140 | "version": "1.22.10", 2141 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", 2142 | "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", 2143 | "dev": true, 2144 | "license": "MIT", 2145 | "dependencies": { 2146 | "is-core-module": "^2.16.0", 2147 | "path-parse": "^1.0.7", 2148 | "supports-preserve-symlinks-flag": "^1.0.0" 2149 | }, 2150 | "bin": { 2151 | "resolve": "bin/resolve" 2152 | }, 2153 | "engines": { 2154 | "node": ">= 0.4" 2155 | }, 2156 | "funding": { 2157 | "url": "https://github.com/sponsors/ljharb" 2158 | } 2159 | }, 2160 | "node_modules/reusify": { 2161 | "version": "1.0.4", 2162 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2163 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2164 | "dev": true, 2165 | "license": "MIT", 2166 | "engines": { 2167 | "iojs": ">=1.0.0", 2168 | "node": ">=0.10.0" 2169 | } 2170 | }, 2171 | "node_modules/rollup": { 2172 | "version": "3.29.5", 2173 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz", 2174 | "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==", 2175 | "dev": true, 2176 | "license": "MIT", 2177 | "bin": { 2178 | "rollup": "dist/bin/rollup" 2179 | }, 2180 | "engines": { 2181 | "node": ">=14.18.0", 2182 | "npm": ">=8.0.0" 2183 | }, 2184 | "optionalDependencies": { 2185 | "fsevents": "~2.3.2" 2186 | } 2187 | }, 2188 | "node_modules/run-parallel": { 2189 | "version": "1.2.0", 2190 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2191 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2192 | "dev": true, 2193 | "funding": [ 2194 | { 2195 | "type": "github", 2196 | "url": "https://github.com/sponsors/feross" 2197 | }, 2198 | { 2199 | "type": "patreon", 2200 | "url": "https://www.patreon.com/feross" 2201 | }, 2202 | { 2203 | "type": "consulting", 2204 | "url": "https://feross.org/support" 2205 | } 2206 | ], 2207 | "license": "MIT", 2208 | "dependencies": { 2209 | "queue-microtask": "^1.2.2" 2210 | } 2211 | }, 2212 | "node_modules/scheduler": { 2213 | "version": "0.23.2", 2214 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", 2215 | "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", 2216 | "license": "MIT", 2217 | "dependencies": { 2218 | "loose-envify": "^1.1.0" 2219 | } 2220 | }, 2221 | "node_modules/semver": { 2222 | "version": "6.3.1", 2223 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 2224 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 2225 | "dev": true, 2226 | "license": "ISC", 2227 | "bin": { 2228 | "semver": "bin/semver.js" 2229 | } 2230 | }, 2231 | "node_modules/shebang-command": { 2232 | "version": "2.0.0", 2233 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2234 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2235 | "dev": true, 2236 | "license": "MIT", 2237 | "dependencies": { 2238 | "shebang-regex": "^3.0.0" 2239 | }, 2240 | "engines": { 2241 | "node": ">=8" 2242 | } 2243 | }, 2244 | "node_modules/shebang-regex": { 2245 | "version": "3.0.0", 2246 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2247 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2248 | "dev": true, 2249 | "license": "MIT", 2250 | "engines": { 2251 | "node": ">=8" 2252 | } 2253 | }, 2254 | "node_modules/signal-exit": { 2255 | "version": "4.1.0", 2256 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 2257 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 2258 | "dev": true, 2259 | "license": "ISC", 2260 | "engines": { 2261 | "node": ">=14" 2262 | }, 2263 | "funding": { 2264 | "url": "https://github.com/sponsors/isaacs" 2265 | } 2266 | }, 2267 | "node_modules/source-map-js": { 2268 | "version": "1.2.1", 2269 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 2270 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 2271 | "dev": true, 2272 | "license": "BSD-3-Clause", 2273 | "engines": { 2274 | "node": ">=0.10.0" 2275 | } 2276 | }, 2277 | "node_modules/string-width": { 2278 | "version": "5.1.2", 2279 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 2280 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 2281 | "dev": true, 2282 | "license": "MIT", 2283 | "dependencies": { 2284 | "eastasianwidth": "^0.2.0", 2285 | "emoji-regex": "^9.2.2", 2286 | "strip-ansi": "^7.0.1" 2287 | }, 2288 | "engines": { 2289 | "node": ">=12" 2290 | }, 2291 | "funding": { 2292 | "url": "https://github.com/sponsors/sindresorhus" 2293 | } 2294 | }, 2295 | "node_modules/string-width-cjs": { 2296 | "name": "string-width", 2297 | "version": "4.2.3", 2298 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2299 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2300 | "dev": true, 2301 | "license": "MIT", 2302 | "dependencies": { 2303 | "emoji-regex": "^8.0.0", 2304 | "is-fullwidth-code-point": "^3.0.0", 2305 | "strip-ansi": "^6.0.1" 2306 | }, 2307 | "engines": { 2308 | "node": ">=8" 2309 | } 2310 | }, 2311 | "node_modules/string-width-cjs/node_modules/ansi-regex": { 2312 | "version": "5.0.1", 2313 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2314 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2315 | "dev": true, 2316 | "license": "MIT", 2317 | "engines": { 2318 | "node": ">=8" 2319 | } 2320 | }, 2321 | "node_modules/string-width-cjs/node_modules/emoji-regex": { 2322 | "version": "8.0.0", 2323 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2324 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2325 | "dev": true, 2326 | "license": "MIT" 2327 | }, 2328 | "node_modules/string-width-cjs/node_modules/strip-ansi": { 2329 | "version": "6.0.1", 2330 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2331 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2332 | "dev": true, 2333 | "license": "MIT", 2334 | "dependencies": { 2335 | "ansi-regex": "^5.0.1" 2336 | }, 2337 | "engines": { 2338 | "node": ">=8" 2339 | } 2340 | }, 2341 | "node_modules/strip-ansi": { 2342 | "version": "7.1.0", 2343 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 2344 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 2345 | "dev": true, 2346 | "license": "MIT", 2347 | "dependencies": { 2348 | "ansi-regex": "^6.0.1" 2349 | }, 2350 | "engines": { 2351 | "node": ">=12" 2352 | }, 2353 | "funding": { 2354 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 2355 | } 2356 | }, 2357 | "node_modules/strip-ansi-cjs": { 2358 | "name": "strip-ansi", 2359 | "version": "6.0.1", 2360 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2361 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2362 | "dev": true, 2363 | "license": "MIT", 2364 | "dependencies": { 2365 | "ansi-regex": "^5.0.1" 2366 | }, 2367 | "engines": { 2368 | "node": ">=8" 2369 | } 2370 | }, 2371 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { 2372 | "version": "5.0.1", 2373 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2374 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2375 | "dev": true, 2376 | "license": "MIT", 2377 | "engines": { 2378 | "node": ">=8" 2379 | } 2380 | }, 2381 | "node_modules/sucrase": { 2382 | "version": "3.35.0", 2383 | "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", 2384 | "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", 2385 | "dev": true, 2386 | "license": "MIT", 2387 | "dependencies": { 2388 | "@jridgewell/gen-mapping": "^0.3.2", 2389 | "commander": "^4.0.0", 2390 | "glob": "^10.3.10", 2391 | "lines-and-columns": "^1.1.6", 2392 | "mz": "^2.7.0", 2393 | "pirates": "^4.0.1", 2394 | "ts-interface-checker": "^0.1.9" 2395 | }, 2396 | "bin": { 2397 | "sucrase": "bin/sucrase", 2398 | "sucrase-node": "bin/sucrase-node" 2399 | }, 2400 | "engines": { 2401 | "node": ">=16 || 14 >=14.17" 2402 | } 2403 | }, 2404 | "node_modules/supports-preserve-symlinks-flag": { 2405 | "version": "1.0.0", 2406 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2407 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2408 | "dev": true, 2409 | "license": "MIT", 2410 | "engines": { 2411 | "node": ">= 0.4" 2412 | }, 2413 | "funding": { 2414 | "url": "https://github.com/sponsors/ljharb" 2415 | } 2416 | }, 2417 | "node_modules/tailwindcss": { 2418 | "version": "3.4.17", 2419 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", 2420 | "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", 2421 | "dev": true, 2422 | "license": "MIT", 2423 | "dependencies": { 2424 | "@alloc/quick-lru": "^5.2.0", 2425 | "arg": "^5.0.2", 2426 | "chokidar": "^3.6.0", 2427 | "didyoumean": "^1.2.2", 2428 | "dlv": "^1.1.3", 2429 | "fast-glob": "^3.3.2", 2430 | "glob-parent": "^6.0.2", 2431 | "is-glob": "^4.0.3", 2432 | "jiti": "^1.21.6", 2433 | "lilconfig": "^3.1.3", 2434 | "micromatch": "^4.0.8", 2435 | "normalize-path": "^3.0.0", 2436 | "object-hash": "^3.0.0", 2437 | "picocolors": "^1.1.1", 2438 | "postcss": "^8.4.47", 2439 | "postcss-import": "^15.1.0", 2440 | "postcss-js": "^4.0.1", 2441 | "postcss-load-config": "^4.0.2", 2442 | "postcss-nested": "^6.2.0", 2443 | "postcss-selector-parser": "^6.1.2", 2444 | "resolve": "^1.22.8", 2445 | "sucrase": "^3.35.0" 2446 | }, 2447 | "bin": { 2448 | "tailwind": "lib/cli.js", 2449 | "tailwindcss": "lib/cli.js" 2450 | }, 2451 | "engines": { 2452 | "node": ">=14.0.0" 2453 | } 2454 | }, 2455 | "node_modules/thenify": { 2456 | "version": "3.3.1", 2457 | "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", 2458 | "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", 2459 | "dev": true, 2460 | "license": "MIT", 2461 | "dependencies": { 2462 | "any-promise": "^1.0.0" 2463 | } 2464 | }, 2465 | "node_modules/thenify-all": { 2466 | "version": "1.6.0", 2467 | "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", 2468 | "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", 2469 | "dev": true, 2470 | "license": "MIT", 2471 | "dependencies": { 2472 | "thenify": ">= 3.1.0 < 4" 2473 | }, 2474 | "engines": { 2475 | "node": ">=0.8" 2476 | } 2477 | }, 2478 | "node_modules/to-regex-range": { 2479 | "version": "5.0.1", 2480 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2481 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2482 | "dev": true, 2483 | "license": "MIT", 2484 | "dependencies": { 2485 | "is-number": "^7.0.0" 2486 | }, 2487 | "engines": { 2488 | "node": ">=8.0" 2489 | } 2490 | }, 2491 | "node_modules/ts-interface-checker": { 2492 | "version": "0.1.13", 2493 | "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", 2494 | "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", 2495 | "dev": true, 2496 | "license": "Apache-2.0" 2497 | }, 2498 | "node_modules/typescript": { 2499 | "version": "4.9.5", 2500 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", 2501 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", 2502 | "dev": true, 2503 | "license": "Apache-2.0", 2504 | "bin": { 2505 | "tsc": "bin/tsc", 2506 | "tsserver": "bin/tsserver" 2507 | }, 2508 | "engines": { 2509 | "node": ">=4.2.0" 2510 | } 2511 | }, 2512 | "node_modules/update-browserslist-db": { 2513 | "version": "1.1.2", 2514 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", 2515 | "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", 2516 | "dev": true, 2517 | "funding": [ 2518 | { 2519 | "type": "opencollective", 2520 | "url": "https://opencollective.com/browserslist" 2521 | }, 2522 | { 2523 | "type": "tidelift", 2524 | "url": "https://tidelift.com/funding/github/npm/browserslist" 2525 | }, 2526 | { 2527 | "type": "github", 2528 | "url": "https://github.com/sponsors/ai" 2529 | } 2530 | ], 2531 | "license": "MIT", 2532 | "dependencies": { 2533 | "escalade": "^3.2.0", 2534 | "picocolors": "^1.1.1" 2535 | }, 2536 | "bin": { 2537 | "update-browserslist-db": "cli.js" 2538 | }, 2539 | "peerDependencies": { 2540 | "browserslist": ">= 4.21.0" 2541 | } 2542 | }, 2543 | "node_modules/util-deprecate": { 2544 | "version": "1.0.2", 2545 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2546 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 2547 | "dev": true, 2548 | "license": "MIT" 2549 | }, 2550 | "node_modules/vite": { 2551 | "version": "4.5.7", 2552 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.7.tgz", 2553 | "integrity": "sha512-vNeGkxk5lbs2CNXFz5nVSKjivMr1oYSb+xcClCSgH9oe/9FK3xzDgjjKTvO0Udc48eCV2AY4GYT61D6Y3iX9iQ==", 2554 | "dev": true, 2555 | "license": "MIT", 2556 | "dependencies": { 2557 | "esbuild": "^0.18.10", 2558 | "postcss": "^8.4.27", 2559 | "rollup": "^3.27.1" 2560 | }, 2561 | "bin": { 2562 | "vite": "bin/vite.js" 2563 | }, 2564 | "engines": { 2565 | "node": "^14.18.0 || >=16.0.0" 2566 | }, 2567 | "funding": { 2568 | "url": "https://github.com/vitejs/vite?sponsor=1" 2569 | }, 2570 | "optionalDependencies": { 2571 | "fsevents": "~2.3.2" 2572 | }, 2573 | "peerDependencies": { 2574 | "@types/node": ">= 14", 2575 | "less": "*", 2576 | "lightningcss": "^1.21.0", 2577 | "sass": "*", 2578 | "stylus": "*", 2579 | "sugarss": "*", 2580 | "terser": "^5.4.0" 2581 | }, 2582 | "peerDependenciesMeta": { 2583 | "@types/node": { 2584 | "optional": true 2585 | }, 2586 | "less": { 2587 | "optional": true 2588 | }, 2589 | "lightningcss": { 2590 | "optional": true 2591 | }, 2592 | "sass": { 2593 | "optional": true 2594 | }, 2595 | "stylus": { 2596 | "optional": true 2597 | }, 2598 | "sugarss": { 2599 | "optional": true 2600 | }, 2601 | "terser": { 2602 | "optional": true 2603 | } 2604 | } 2605 | }, 2606 | "node_modules/which": { 2607 | "version": "2.0.2", 2608 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2609 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2610 | "dev": true, 2611 | "license": "ISC", 2612 | "dependencies": { 2613 | "isexe": "^2.0.0" 2614 | }, 2615 | "bin": { 2616 | "node-which": "bin/node-which" 2617 | }, 2618 | "engines": { 2619 | "node": ">= 8" 2620 | } 2621 | }, 2622 | "node_modules/wrap-ansi": { 2623 | "version": "8.1.0", 2624 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 2625 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 2626 | "dev": true, 2627 | "license": "MIT", 2628 | "dependencies": { 2629 | "ansi-styles": "^6.1.0", 2630 | "string-width": "^5.0.1", 2631 | "strip-ansi": "^7.0.1" 2632 | }, 2633 | "engines": { 2634 | "node": ">=12" 2635 | }, 2636 | "funding": { 2637 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2638 | } 2639 | }, 2640 | "node_modules/wrap-ansi-cjs": { 2641 | "name": "wrap-ansi", 2642 | "version": "7.0.0", 2643 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2644 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2645 | "dev": true, 2646 | "license": "MIT", 2647 | "dependencies": { 2648 | "ansi-styles": "^4.0.0", 2649 | "string-width": "^4.1.0", 2650 | "strip-ansi": "^6.0.0" 2651 | }, 2652 | "engines": { 2653 | "node": ">=10" 2654 | }, 2655 | "funding": { 2656 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2657 | } 2658 | }, 2659 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { 2660 | "version": "5.0.1", 2661 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2662 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2663 | "dev": true, 2664 | "license": "MIT", 2665 | "engines": { 2666 | "node": ">=8" 2667 | } 2668 | }, 2669 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { 2670 | "version": "4.3.0", 2671 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2672 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2673 | "dev": true, 2674 | "license": "MIT", 2675 | "dependencies": { 2676 | "color-convert": "^2.0.1" 2677 | }, 2678 | "engines": { 2679 | "node": ">=8" 2680 | }, 2681 | "funding": { 2682 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 2683 | } 2684 | }, 2685 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { 2686 | "version": "8.0.0", 2687 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2688 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2689 | "dev": true, 2690 | "license": "MIT" 2691 | }, 2692 | "node_modules/wrap-ansi-cjs/node_modules/string-width": { 2693 | "version": "4.2.3", 2694 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2695 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2696 | "dev": true, 2697 | "license": "MIT", 2698 | "dependencies": { 2699 | "emoji-regex": "^8.0.0", 2700 | "is-fullwidth-code-point": "^3.0.0", 2701 | "strip-ansi": "^6.0.1" 2702 | }, 2703 | "engines": { 2704 | "node": ">=8" 2705 | } 2706 | }, 2707 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { 2708 | "version": "6.0.1", 2709 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2710 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2711 | "dev": true, 2712 | "license": "MIT", 2713 | "dependencies": { 2714 | "ansi-regex": "^5.0.1" 2715 | }, 2716 | "engines": { 2717 | "node": ">=8" 2718 | } 2719 | }, 2720 | "node_modules/yallist": { 2721 | "version": "3.1.1", 2722 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 2723 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 2724 | "dev": true, 2725 | "license": "ISC" 2726 | }, 2727 | "node_modules/yaml": { 2728 | "version": "2.7.0", 2729 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", 2730 | "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", 2731 | "dev": true, 2732 | "license": "ISC", 2733 | "bin": { 2734 | "yaml": "bin.mjs" 2735 | }, 2736 | "engines": { 2737 | "node": ">= 14" 2738 | } 2739 | } 2740 | } 2741 | } 2742 | -------------------------------------------------------------------------------- /app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-react-tailwind-app", 3 | "version": "1.0.0", 4 | "description": "A minimal React + Tailwind CSS project configured for GitHub Pages.", 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "vite build", 8 | "serve": "vite preview" 9 | }, 10 | "dependencies": { 11 | "react": "^18.2.0", 12 | "react-dom": "^18.2.0" 13 | }, 14 | "devDependencies": { 15 | "@heroicons/react": "^2.0.13", 16 | "@types/react": "^18.0.28", 17 | "@types/react-dom": "^18.0.11", 18 | "@vitejs/plugin-react": "^4.3.4", 19 | "autoprefixer": "^10.4.14", 20 | "postcss": "^8.4.21", 21 | "tailwindcss": "^3.2.7", 22 | "typescript": "^4.9.5", 23 | "vite": "^4.0.4" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {} 5 | } 6 | }; 7 | -------------------------------------------------------------------------------- /app/rom-app-aggregated.txt: -------------------------------------------------------------------------------- 1 | ===== Tree of the project ===== 2 | . 3 | ├── README.md 4 | ├── index.html 5 | ├── package.json 6 | ├── postcss.config.cjs 7 | ├── src 8 | │   ├── App.tsx 9 | │   ├── components 10 | │   │   └── ResearchTimelineApp.tsx 11 | │   ├── index.css 12 | │   └── main.tsx 13 | ├── styles.css 14 | ├── tailwind.config.cjs 15 | ├── tsconfig.json 16 | └── vite.config.ts 17 | 18 | 3 directories, 12 files 19 | 20 | 21 | ===== Concatenated Files ===== 22 | ===== ./index.html ===== 23 | 24 | 25 | 26 | 27 | Research Timeline 28 | 29 | 30 | 31 | 32 | 33 |
34 | 35 | 36 | 37 | 38 | 39 | ===== ./styles.css ===== 40 | /* Optional global styles to complement Tailwind. */ 41 | 42 | /* Basic Reset and Global Styles */ 43 | * { 44 | margin: 0; 45 | padding: 0; 46 | box-sizing: border-box; 47 | } 48 | 49 | body { 50 | font-family: "Helvetica Neue", Arial, sans-serif; 51 | background: #fafafa; 52 | color: #333; 53 | line-height: 1.6; 54 | } 55 | 56 | /* Example container layout */ 57 | .container { 58 | max-width: 900px; 59 | margin: 0 auto; 60 | padding: 1.5rem; 61 | background-color: #ffffff; 62 | box-shadow: 0 1px 3px rgba(0,0,0,0.1); 63 | border-radius: 5px; 64 | } 65 | 66 | /* Headings */ 67 | header h1 { 68 | font-size: 2rem; 69 | margin-bottom: 0.5rem; 70 | color: #2c3e50; 71 | } 72 | 73 | .subtitle { 74 | font-size: 1.1rem; 75 | color: #555; 76 | margin-bottom: 1rem; 77 | } 78 | 79 | section { 80 | margin-bottom: 1rem; 81 | } 82 | 83 | /* Horizontal Rule (section divider) */ 84 | hr { 85 | margin: 2rem 0; 86 | border: none; 87 | height: 1px; 88 | background: #ddd; 89 | } 90 | 91 | /* Simple link styling */ 92 | a { 93 | color: #3498db; 94 | text-decoration: none; 95 | } 96 | a:hover { 97 | text-decoration: underline; 98 | } 99 | 100 | 101 | ===== ./postcss.config.cjs ===== 102 | module.exports = { 103 | plugins: { 104 | tailwindcss: {}, 105 | autoprefixer: {} 106 | } 107 | }; 108 | 109 | 110 | ===== ./README.md ===== 111 | 112 | 113 | ===== ./tailwind.config.cjs ===== 114 | /** @type {import('tailwindcss').Config} */ 115 | module.exports = { 116 | content: [ 117 | './index.html', 118 | './src/**/*.{ts,tsx,js,jsx}' 119 | ], 120 | theme: { 121 | extend: {} 122 | }, 123 | plugins: [] 124 | }; 125 | 126 | 127 | ===== ./package.json ===== 128 | { 129 | "name": "my-react-tailwind-app", 130 | "version": "1.0.0", 131 | "description": "A minimal React + Tailwind CSS project configured for GitHub Pages.", 132 | "scripts": { 133 | "dev": "vite", 134 | "build": "vite build", 135 | "serve": "vite preview" 136 | }, 137 | "dependencies": { 138 | "react": "^18.2.0", 139 | "react-dom": "^18.2.0" 140 | }, 141 | "devDependencies": { 142 | "@heroicons/react": "^2.0.13", 143 | "@types/react": "^18.0.28", 144 | "@types/react-dom": "^18.0.11", 145 | "@vitejs/plugin-react": "^4.3.4", 146 | "autoprefixer": "^10.4.14", 147 | "postcss": "^8.4.21", 148 | "tailwindcss": "^3.2.7", 149 | "typescript": "^4.9.5", 150 | "vite": "^4.0.4" 151 | } 152 | } 153 | 154 | 155 | ===== ./tsconfig.json ===== 156 | { 157 | "compilerOptions": { 158 | "target": "ESNext", 159 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 160 | "allowJs": false, 161 | "skipLibCheck": true, 162 | "strict": true, 163 | "module": "ESNext", 164 | "moduleResolution": "Node", 165 | "resolveJsonModule": true, 166 | "isolatedModules": true, 167 | "jsx": "react-jsx", 168 | "noEmit": true, 169 | "baseUrl": ".", 170 | "paths": { 171 | "@/*": ["./src/*"] 172 | } 173 | }, 174 | "include": [ 175 | "src/**/*.ts", 176 | "src/**/*.tsx" 177 | ], 178 | "exclude": [ 179 | "node_modules", 180 | "dist" 181 | ] 182 | } 183 | 184 | ===== ./vite.config.ts ===== 185 | // app/vite.config.ts 186 | import { defineConfig } from 'vite'; 187 | import react from '@vitejs/plugin-react'; 188 | 189 | export default defineConfig({ 190 | plugins: [react()], 191 | 192 | build: { 193 | // Output the build files to the top-level `docs/` folder 194 | outDir: '../docs' 195 | }, 196 | 197 | // If you plan to serve from a sub-path like username.github.io/my-repo, 198 | // set the base property accordingly, e.g.: 199 | // base: '/my-repo/', 200 | }); 201 | 202 | 203 | ===== ./src/App.tsx ===== 204 | import React from 'react'; 205 | import ResearchTimelineApp from './components/ResearchTimelineApp'; 206 | 207 | const App: React.FC = () => { 208 | return ; 209 | }; 210 | 211 | export default App; 212 | 213 | 214 | ===== ./src/main.tsx ===== 215 | import React from 'react'; 216 | import ReactDOM from 'react-dom/client'; 217 | 218 | // Tailwind base + utilities 219 | import './index.css'; 220 | 221 | // Optional extra user-defined CSS (styles.css in the project root) 222 | import '../styles.css'; 223 | 224 | import App from './App'; 225 | 226 | ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( 227 | 228 | 229 | 230 | ); 231 | 232 | 233 | ===== ./src/index.css ===== 234 | @tailwind base; 235 | @tailwind components; 236 | @tailwind utilities; 237 | 238 | /* You can add global overrides or layer directives here if needed. */ 239 | 240 | 241 | ===== ./src/components/ResearchTimelineApp.tsx ===== 242 | import React, { useState } from 'react'; 243 | import { 244 | DocumentTextIcon, 245 | BeakerIcon, 246 | ChartBarIcon 247 | } from '@heroicons/react/24/outline'; 248 | 249 | interface TimelineItem { 250 | year: number; 251 | title: string; 252 | description: string; 253 | color: string; 254 | link: string; 255 | } 256 | 257 | const ResearchTimelineApp: React.FC = () => { 258 | // We'll have three main sections in the sidebar: 259 | // 1) coverage -> "Current Model Coverage" 260 | // 2) naming -> "Notebook Naming Convention" 261 | // 3) colab -> "Interactive Colab Notebooks" 262 | const [activeSection, setActiveSection] = useState('coverage'); 263 | 264 | // Updated references in the timeline 265 | // You can click each timeline milestone if you want to implement that. 266 | // Right now they are static items displayed on the left panel. 267 | const timelineData: TimelineItem[] = [ 268 | { 269 | year: 2020, 270 | title: 'Li et al. (2020)', 271 | description: 'Fourier Neural Operator for parametric PDEs', 272 | color: 'bg-blue-100', 273 | link: 'https://arxiv.org/abs/2010.08895' 274 | }, 275 | { 276 | year: 2019, 277 | title: 'Lu et al. (2019)', 278 | description: 'DeepONet: Learning nonlinear operators for PDEs', 279 | color: 'bg-green-100', 280 | link: 'https://arxiv.org/abs/1910.03193' 281 | }, 282 | { 283 | year: 2022, 284 | title: 'Fresca & Manzoni (2022)', 285 | description: 'POD-DL-ROM for nonlinear PDEs', 286 | color: 'bg-purple-100', 287 | link: 'https://www.sciencedirect.com/science/article/pii/S0045782521005120' 288 | }, 289 | { 290 | year: 2021, 291 | title: 'Pant et al. (2021)', 292 | description: 'Deep learning for reduced-order fluid sims', 293 | color: 'bg-red-100', 294 | link: 'https://arxiv.org/abs/2107.04556' 295 | } 296 | ]; 297 | 298 | // Renders main content for whichever section is active. 299 | const renderContent = () => { 300 | switch (activeSection) { 301 | case 'coverage': 302 | // Display the "Current Model Coverage" from your README 303 | return ( 304 |
305 |

Current Model Coverage

306 |
307 |

308 | Li, Z., Kovachki, N., Azizzadenesheli, K., Liu, B., Bhattacharya, K., 309 | Stuart, A., & Anandkumar, A. (2020). Fourier neural operator 310 | for parametric partial differential equations. arXiv preprint 311 | 315 | arXiv:2010.08895 316 | 317 |

318 |

319 | Lu, L., Jin, P., & Karniadakis, G. E. (2019). Deeponet: 320 | Learning nonlinear operators for identifying differential equations 321 | based on the universal approximation theorem of operators. 322 | arXiv preprint 323 | 327 | arXiv:1910.03193 328 | 329 |

330 |

331 | Fresca, S., & Manzoni, A. (2022). POD-DL-ROM: Enhancing 332 | deep learning-based reduced order models for nonlinear parametrized PDEs 333 | by proper orthogonal decomposition. Computer Methods in Applied 334 | Mechanics and Engineering, 388, 114181. 335 | 339 | Paper 340 | 341 |

342 |

343 | Pant, P., Doshi, R., Bahl, P., & Barati Farimani, A. (2021). 344 | Deep learning for reduced order modelling and efficient temporal evolution 345 | of fluid simulations. Physics of Fluids, 33(10). 346 | 350 | Paper 351 | 352 |

353 |
354 |
355 | ); 356 | 357 | case 'naming': 358 | // Display the "Notebook Naming Convention" section 359 | return ( 360 |
361 |

Notebook Naming Convention

362 |

363 | In order to facilitate ease of navigation and comprehension, a standard 364 | naming schema has been adopted for the Jupyter notebooks: 365 |

366 |
367 | {`[Model]_[Equation/Problem+Dimension]_[TAG].ipynb`}
368 |             
369 |
    370 |
  • 371 | Model: Represents the computational model or algorithm 372 | under study (e.g., FNO, DLROM). 373 |
  • 374 |
  • 375 | Equation/Problem+Dimension: Specifies the mathematical 376 | problem or equation being solved along with its spatial dimensions 377 | (e.g., Burgers1D, NOAA2D). 378 |
  • 379 |
  • 380 | TAG: An optional identifier providing supplementary 381 | context or categorizing the notebook’s difficulty level or specific 382 | focus (e.g., Intro, Advanced, DataPrep). 383 |
  • 384 |
385 |
386 | ); 387 | 388 | case 'colab': 389 | // Display the "Interactive Colab Notebooks" section 390 | return ( 391 |
392 |

Interactive Colab Notebooks

393 |

394 | For users interested in a more interactive learning experience, Google 395 | Colab versions of these tutorials are available: 396 |

397 | 432 |
433 | ); 434 | 435 | default: 436 | return null; 437 | } 438 | }; 439 | 440 | return ( 441 |
442 | {/* Sidebar with Timeline */} 443 |
444 |
445 |

Reduced-Order Modeling

446 |
447 | 448 | {/* Navigation Menu */} 449 | 469 | 470 | {/* Timeline Section */} 471 |
472 |

Timeline of Papers

473 |
474 | {timelineData.map((item, index) => ( 475 |
476 | {/* Year bubble */} 477 |
480 | {item.year} 481 |
482 | {/* Paper info */} 483 |
484 |

485 | {item.title} 486 |

487 |

{item.description}

488 | 494 | View Paper 495 | 496 |
497 |
498 | ))} 499 |
500 |
501 |
502 | 503 | {/* Main Content */} 504 |
505 | {renderContent()} 506 |
507 |
508 | ); 509 | }; 510 | 511 | export default ResearchTimelineApp; 512 | 513 | 514 | -------------------------------------------------------------------------------- /app/src/App.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ResearchTimelineApp from './components/ResearchTimelineApp'; 3 | 4 | const App: React.FC = () => { 5 | return ; 6 | }; 7 | 8 | export default App; 9 | -------------------------------------------------------------------------------- /app/src/components/ResearchTimelineApp.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react'; 2 | import { 3 | DocumentTextIcon, 4 | BeakerIcon, 5 | ChartBarIcon 6 | } from '@heroicons/react/24/outline'; 7 | 8 | interface TimelineItem { 9 | year: number; 10 | title: string; 11 | description: string; 12 | color: string; 13 | link: string; 14 | } 15 | 16 | const ResearchTimelineApp: React.FC = () => { 17 | // We'll have three main sections in the sidebar: 18 | // 1) coverage -> "Current Model Coverage" 19 | // 2) naming -> "Notebook Naming Convention" 20 | // 3) colab -> "Interactive Colab Notebooks" 21 | const [activeSection, setActiveSection] = useState('coverage'); 22 | 23 | // Updated references in the timeline 24 | // You can click each timeline milestone if you want to implement that. 25 | // Right now they are static items displayed on the left panel. 26 | const timelineData: TimelineItem[] = [ 27 | { 28 | year: 2020, 29 | title: 'Li et al. (2020)', 30 | description: 'Fourier Neural Operator for parametric PDEs', 31 | color: 'bg-blue-100', 32 | link: 'https://arxiv.org/abs/2010.08895' 33 | }, 34 | { 35 | year: 2019, 36 | title: 'Lu et al. (2019)', 37 | description: 'DeepONet: Learning nonlinear operators for PDEs', 38 | color: 'bg-green-100', 39 | link: 'https://arxiv.org/abs/1910.03193' 40 | }, 41 | { 42 | year: 2022, 43 | title: 'Fresca & Manzoni (2022)', 44 | description: 'POD-DL-ROM for nonlinear PDEs', 45 | color: 'bg-purple-100', 46 | link: 'https://www.sciencedirect.com/science/article/pii/S0045782521005120' 47 | }, 48 | { 49 | year: 2021, 50 | title: 'Pant et al. (2021)', 51 | description: 'Deep learning for reduced-order fluid sims', 52 | color: 'bg-red-100', 53 | link: 'https://arxiv.org/abs/2107.04556' 54 | } 55 | ]; 56 | 57 | // Renders main content for whichever section is active. 58 | const renderContent = () => { 59 | switch (activeSection) { 60 | case 'coverage': 61 | // Display the "Current Model Coverage" from your README 62 | return ( 63 |
64 |

Current Model Coverage

65 |
66 |

67 | Li, Z., Kovachki, N., Azizzadenesheli, K., Liu, B., Bhattacharya, K., 68 | Stuart, A., & Anandkumar, A. (2020). Fourier neural operator 69 | for parametric partial differential equations. arXiv preprint 70 | 74 | arXiv:2010.08895 75 | 76 |

77 |

78 | Lu, L., Jin, P., & Karniadakis, G. E. (2019). Deeponet: 79 | Learning nonlinear operators for identifying differential equations 80 | based on the universal approximation theorem of operators. 81 | arXiv preprint 82 | 86 | arXiv:1910.03193 87 | 88 |

89 |

90 | Fresca, S., & Manzoni, A. (2022). POD-DL-ROM: Enhancing 91 | deep learning-based reduced order models for nonlinear parametrized PDEs 92 | by proper orthogonal decomposition. Computer Methods in Applied 93 | Mechanics and Engineering, 388, 114181. 94 | 98 | Paper 99 | 100 |

101 |

102 | Pant, P., Doshi, R., Bahl, P., & Barati Farimani, A. (2021). 103 | Deep learning for reduced order modelling and efficient temporal evolution 104 | of fluid simulations. Physics of Fluids, 33(10). 105 | 109 | Paper 110 | 111 |

112 |
113 |
114 | ); 115 | 116 | case 'naming': 117 | // Display the "Notebook Naming Convention" section 118 | return ( 119 |
120 |

Notebook Naming Convention

121 |

122 | In order to facilitate ease of navigation and comprehension, a standard 123 | naming schema has been adopted for the Jupyter notebooks: 124 |

125 |
126 | {`[Model]_[Equation/Problem+Dimension]_[TAG].ipynb`}
127 |             
128 |
    129 |
  • 130 | Model: Represents the computational model or algorithm 131 | under study (e.g., FNO, DLROM). 132 |
  • 133 |
  • 134 | Equation/Problem+Dimension: Specifies the mathematical 135 | problem or equation being solved along with its spatial dimensions 136 | (e.g., Burgers1D, NOAA2D). 137 |
  • 138 |
  • 139 | TAG: An optional identifier providing supplementary 140 | context or categorizing the notebook’s difficulty level or specific 141 | focus (e.g., Intro, Advanced, DataPrep). 142 |
  • 143 |
144 |
145 | ); 146 | 147 | case 'colab': 148 | // Display the "Interactive Colab Notebooks" section 149 | return ( 150 |
151 |

Interactive Colab Notebooks

152 |

153 | For users interested in a more interactive learning experience, Google 154 | Colab versions of these tutorials are available: 155 |

156 | 191 |
192 | ); 193 | 194 | default: 195 | return null; 196 | } 197 | }; 198 | 199 | return ( 200 |
201 | {/* Sidebar with Timeline */} 202 |
203 |
204 |

Reduced-Order Modeling

205 |
206 | 207 | {/* Navigation Menu */} 208 | 228 | 229 | {/* Timeline Section */} 230 |
231 |

Timeline of Papers

232 |
233 | {timelineData.map((item, index) => ( 234 |
235 | {/* Year bubble */} 236 |
239 | {item.year} 240 |
241 | {/* Paper info */} 242 |
243 |

244 | {item.title} 245 |

246 |

{item.description}

247 | 253 | View Paper 254 | 255 |
256 |
257 | ))} 258 |
259 |
260 |
261 | 262 | {/* Main Content */} 263 |
264 | {renderContent()} 265 |
266 |
267 | ); 268 | }; 269 | 270 | export default ResearchTimelineApp; 271 | -------------------------------------------------------------------------------- /app/src/index.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | /* You can add global overrides or layer directives here if needed. */ 6 | -------------------------------------------------------------------------------- /app/src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | 4 | // Tailwind base + utilities 5 | import './index.css'; 6 | 7 | // Optional extra user-defined CSS (styles.css in the project root) 8 | import '../styles.css'; 9 | 10 | import App from './App'; 11 | 12 | ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( 13 | 14 | 15 | 16 | ); 17 | -------------------------------------------------------------------------------- /app/styles.css: -------------------------------------------------------------------------------- 1 | /* Optional global styles to complement Tailwind. */ 2 | 3 | /* Basic Reset and Global Styles */ 4 | * { 5 | margin: 0; 6 | padding: 0; 7 | box-sizing: border-box; 8 | } 9 | 10 | body { 11 | font-family: "Helvetica Neue", Arial, sans-serif; 12 | background: #fafafa; 13 | color: #333; 14 | line-height: 1.6; 15 | } 16 | 17 | /* Example container layout */ 18 | .container { 19 | max-width: 900px; 20 | margin: 0 auto; 21 | padding: 1.5rem; 22 | background-color: #ffffff; 23 | box-shadow: 0 1px 3px rgba(0,0,0,0.1); 24 | border-radius: 5px; 25 | } 26 | 27 | /* Headings */ 28 | header h1 { 29 | font-size: 2rem; 30 | margin-bottom: 0.5rem; 31 | color: #2c3e50; 32 | } 33 | 34 | .subtitle { 35 | font-size: 1.1rem; 36 | color: #555; 37 | margin-bottom: 1rem; 38 | } 39 | 40 | section { 41 | margin-bottom: 1rem; 42 | } 43 | 44 | /* Horizontal Rule (section divider) */ 45 | hr { 46 | margin: 2rem 0; 47 | border: none; 48 | height: 1px; 49 | background: #ddd; 50 | } 51 | 52 | /* Simple link styling */ 53 | a { 54 | color: #3498db; 55 | text-decoration: none; 56 | } 57 | a:hover { 58 | text-decoration: underline; 59 | } 60 | -------------------------------------------------------------------------------- /app/tailwind.config.cjs: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: [ 4 | './index.html', 5 | './src/**/*.{ts,tsx,js,jsx}' 6 | ], 7 | theme: { 8 | extend: {} 9 | }, 10 | plugins: [] 11 | }; 12 | -------------------------------------------------------------------------------- /app/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 5 | "allowJs": false, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "module": "ESNext", 9 | "moduleResolution": "Node", 10 | "resolveJsonModule": true, 11 | "isolatedModules": true, 12 | "jsx": "react-jsx", 13 | "noEmit": true, 14 | "baseUrl": ".", 15 | "paths": { 16 | "@/*": ["./src/*"] 17 | } 18 | }, 19 | "include": [ 20 | "src/**/*.ts", 21 | "src/**/*.tsx" 22 | ], 23 | "exclude": [ 24 | "node_modules", 25 | "dist" 26 | ] 27 | } -------------------------------------------------------------------------------- /app/vite.config.ts: -------------------------------------------------------------------------------- 1 | // app/vite.config.ts 2 | import { defineConfig } from 'vite'; 3 | import react from '@vitejs/plugin-react'; 4 | 5 | export default defineConfig({ 6 | plugins: [react()], 7 | 8 | // "base" must match your GitHub repo name 9 | base: '/Reduced-Order-Modeling-Tutorials/', 10 | 11 | build: { 12 | // Output the build files to the top-level `docs/` folder 13 | outDir: '../docs' 14 | } 15 | }); 16 | -------------------------------------------------------------------------------- /docs/assets/index-95a7de50.css: -------------------------------------------------------------------------------- 1 | *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.static{position:static}.absolute{position:absolute}.relative{position:relative}.-left-\[26px\]{left:-26px}.my-4{margin-top:1rem;margin-bottom:1rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-16{margin-left:4rem}.mr-3{margin-right:.75rem}.mt-2{margin-top:.5rem}.inline-block{display:inline-block}.flex{display:flex}.h-12{height:3rem}.h-6{height:1.5rem}.h-screen{height:100vh}.w-12{width:3rem}.w-6{width:1.5rem}.w-80{width:20rem}.w-full{width:100%}.flex-1{flex:1 1 0%}.list-disc{list-style-type:disc}.items-center{align-items:center}.justify-center{justify-content:center}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l-4{border-left-width:4px}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.text-left{text-align:left}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Helvetica Neue,Arial,sans-serif;background:#fafafa;color:#333;line-height:1.6}.container{max-width:900px;margin:0 auto;padding:1.5rem;background-color:#fff;box-shadow:0 1px 3px #0000001a;border-radius:5px}header h1{font-size:2rem;margin-bottom:.5rem;color:#2c3e50}.subtitle{font-size:1.1rem;color:#555;margin-bottom:1rem}section{margin-bottom:1rem}hr{margin:2rem 0;border:none;height:1px;background:#ddd}a{color:#3498db;text-decoration:none}a:hover{text-decoration:underline} 2 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Research Timeline 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | # PyTorch for deep learning 2 | torch 3 | 4 | # Google Drive download utility 5 | gdown 6 | 7 | # Scientific computing 8 | scipy 9 | numpy 10 | h5py 11 | 12 | # Plotting libraries 13 | matplotlib 14 | plotly --------------------------------------------------------------------------------