initial progress
authorPhiTux <redacted>
Fri, 6 Dec 2024 22:46:44 +0000 (23:46 +0100)
committerPhiTux <redacted>
Fri, 6 Dec 2024 22:46:44 +0000 (23:46 +0100)
29 files changed:
backend/.gitignore
backend/requirements.txt
backend/server/main.py
backend/server/routers/users.py
backend/server/utils/fileHandling.py [new file with mode: 0644]
backend/server/utils/security.py [new file with mode: 0644]
backend/server/utils/settings.py [new file with mode: 0644]
dailytxt/.gitignore [deleted file]
dailytxt/.npmrc [deleted file]
dailytxt/.prettierignore [deleted file]
dailytxt/.prettierrc [deleted file]
dailytxt/README.md [deleted file]
dailytxt/eslint.config.js [deleted file]
dailytxt/package-lock.json [deleted file]
dailytxt/package.json [deleted file]
dailytxt/src/app.d.ts [deleted file]
dailytxt/src/app.html [deleted file]
dailytxt/src/lib/assets/locked_heart_with_keyhole.svg [deleted file]
dailytxt/src/lib/index.ts [deleted file]
dailytxt/src/routes/+layout.js [deleted file]
dailytxt/src/routes/+layout.svelte [deleted file]
dailytxt/src/routes/+page.svelte [deleted file]
dailytxt/src/routes/login/+page.svelte [deleted file]
dailytxt/src/scss/styles.scss [deleted file]
dailytxt/static/favicon.svg [deleted file]
dailytxt/svelte.config.js [deleted file]
dailytxt/tsconfig.json [deleted file]
dailytxt/vite.config.ts [deleted file]
frontend/src/routes/login/+page.svelte

index 14c8d943b11dae65fc600ee3033c71ee1b9b98b1..fc8ad9f126208e3f48fc9028f0a133e4969faa7d 100644 (file)
@@ -1,3 +1,6 @@
 .venv
 .envrc
-data/
\ No newline at end of file
+data/
+dev/
+*.pyc
+__pycache__/
\ No newline at end of file
index bf9317769b96f64d592bf9fde77a69eea2e1666a..a4636678a4bcabcaf86aee8e1073ef785c3a9752 100644 (file)
@@ -1,3 +1,6 @@
 fastapi[standard]
 pyjwt
-passlib[bcrypt]
\ No newline at end of file
+passlib[bcrypt]
+argon2_cffi
+cryptography
+pydantic-settings
\ No newline at end of file
index 53952c540e09a94affa1e8972825f482be43c8d6..2a933c9e9d81395ddfa3909d16244e68f19bc09c 100644 (file)
@@ -1,6 +1,13 @@
 from fastapi import FastAPI
 from .routers import users
 from fastapi.middleware.cors import CORSMiddleware
+import logging
+from sys import stdout
+
+logger = logging.getLogger("dailytxtLogger")
+consoleHandler = logging.StreamHandler(stdout)
+consoleHandler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s"))
+logger.addHandler(consoleHandler)
 
 app = FastAPI()
 
@@ -21,3 +28,5 @@ app.include_router(users.router)
 @app.get("/")
 async def root():
     return {"message": "Hello World"}
+
+logger.info("Server started")
\ No newline at end of file
index d9d7f3360863dee203195c4d963a14a794a28b01..6e2a62f92f142245e023c82ac0bd51c47c4feedb 100644 (file)
@@ -1,7 +1,12 @@
-from typing import Annotated
-from fastapi import APIRouter
-from fastapi import Form
+import json
+import secrets
+from fastapi import APIRouter, HTTPException
 from pydantic import BaseModel
+from ..utils import fileHandling
+from ..utils import security
+import logging
+
+logger = logging.getLogger("dailytxtLogger")
 
 router = APIRouter()
 
@@ -15,6 +20,83 @@ async def login(login: Login):
     return {"message": "Login"}
 
 
+class Register(BaseModel):
+    username: str
+    password: str
+
 @router.post("/users/register")
-async def register(username: Annotated[str, Form()], password: Annotated[str, Form()]):
-    return {"message": "Register"}
\ No newline at end of file
+async def register(register: Register):
+    content = fileHandling.getUsers()
+    if isinstance(content, Exception):
+        raise HTTPException(status_code=500, detail="Internal Server Error when trying to open users.json") 
+    
+
+    # check if username already exists
+    if len(content) > 0:
+        content: dict = json.loads(content)
+        if ("users" not in content.keys()):
+            logger.error("users.json is not in the correct format. Key 'users' is missing.")
+            raise HTTPException(status_code=500, detail="users.json is not in the correct format")
+        for user in content["users"]:
+            if user["username"] == register.username:
+                logger.error(f"Registration failed. Username '{register.username}' already exists")
+                raise HTTPException(status_code=400, detail="Username already exists")
+
+    # create new user-data
+    username = register.username
+    password = security.hash_password(register.password)
+    salt = secrets.token_urlsafe(16)
+    enc_enc_key = security.create_new_enc_enc_key(register.password, salt.encode()).decode()
+    
+
+    if len(content) == 0:
+        content = {"id_counter": 1, "users": [
+            {
+                "user_id": 1,
+                "dailytxt-version": 2,
+                "username": username,
+                "password": password,
+                "salt": salt, 
+                "enc_enc_key": enc_enc_key
+            }
+        ]}
+
+
+    else:
+        content["id_counter"] += 1
+        content["users"].append(
+            {
+                "user_id": content["id_counter"],
+                "dailytxt-version": 2,
+                "username": username,
+                "password": password,
+                "salt": salt, 
+                "enc_enc_key": enc_enc_key
+            }
+        )
+
+    try:
+        fileHandling.writeUsers(content)
+    except Exception as e:
+        raise HTTPException(status_code=500, detail="Internal Server Error when trying to write users.json") from e
+    else:
+        return {"success": True}
+
+
+"""
+{
+      "user_id": 1,
+      "dailytxt-version": 2,
+      "username": "Marco",
+      "password": "...",
+      "salt": "...",
+      "enc_enc_key": "...",
+      "LOGIN_ON_EACH_LOAD": false,
+      "backup_codes": [
+        {
+          "password": "...",
+          "salt": "...",
+          "enc_orig_password": "..."
+        }
+      ]
+    }"""
\ No newline at end of file
diff --git a/backend/server/utils/fileHandling.py b/backend/server/utils/fileHandling.py
new file mode 100644 (file)
index 0000000..77fa593
--- /dev/null
@@ -0,0 +1,31 @@
+import json
+import os
+import logging
+from .settings import settings
+
+logger = logging.getLogger("dailytxtLogger")
+
+def getUsers():
+    try:
+        f = open(os.path.join(settings.data_path, "users.json"), "r")
+    except FileNotFoundError:
+        logger.info("users.json - File not found")
+        return ""
+    except Exception as e:
+        logger.exception(e)
+        return e
+    else:
+        with f:
+            return f.read()
+
+def writeUsers(content):
+    # print working directory
+    try:
+        f = open(os.path.join(settings.data_path, "users.json"), "w")
+    except Exception as e:
+        logger.exception(e)
+        return e
+    else:
+        with f:
+            f.write(json.dumps(content, indent=4))
+            return True
\ No newline at end of file
diff --git a/backend/server/utils/security.py b/backend/server/utils/security.py
new file mode 100644 (file)
index 0000000..3cee90b
--- /dev/null
@@ -0,0 +1,21 @@
+from passlib.hash import argon2
+from argon2.low_level import hash_secret_raw, Type
+from cryptography.fernet import Fernet
+import base64
+
+def hash_password(password: str) -> str:
+    return argon2.hash(password)
+
+def verify_password(password: str, hash: str) -> bool:
+    return argon2.verify(password, hash)
+
+def derive_key_from_password(password: str, salt: bytes) -> bytes:
+    return hash_secret_raw(secret=password.encode(), salt=salt, time_cost=2, memory_cost=2**15, parallelism=1, hash_len=32, type=Type.ID)
+
+def create_new_enc_enc_key(password: str, salt: bytes) -> bytes:
+    derived_key = derive_key_from_password(password, salt) # password derived key only to encrypt the actual encryption key
+    key = Fernet.generate_key() # actual encryption key
+    f = Fernet(base64.urlsafe_b64encode(derived_key))
+    return f.encrypt(key)
+
+    
\ No newline at end of file
diff --git a/backend/server/utils/settings.py b/backend/server/utils/settings.py
new file mode 100644 (file)
index 0000000..f4c7a7c
--- /dev/null
@@ -0,0 +1,6 @@
+from pydantic_settings import BaseSettings
+
+class Settings(BaseSettings):
+  data_path: str = "/data"
+
+settings = Settings()
\ No newline at end of file
diff --git a/dailytxt/.gitignore b/dailytxt/.gitignore
deleted file mode 100644 (file)
index 79518f7..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-node_modules
-
-# Output
-.output
-.vercel
-/.svelte-kit
-/build
-
-# OS
-.DS_Store
-Thumbs.db
-
-# Env
-.env
-.env.*
-!.env.example
-!.env.test
-
-# Vite
-vite.config.js.timestamp-*
-vite.config.ts.timestamp-*
diff --git a/dailytxt/.npmrc b/dailytxt/.npmrc
deleted file mode 100644 (file)
index b6f27f1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-engine-strict=true
diff --git a/dailytxt/.prettierignore b/dailytxt/.prettierignore
deleted file mode 100644 (file)
index ab78a95..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# Package Managers
-package-lock.json
-pnpm-lock.yaml
-yarn.lock
diff --git a/dailytxt/.prettierrc b/dailytxt/.prettierrc
deleted file mode 100644 (file)
index 3f7802c..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-       "useTabs": true,
-       "singleQuote": true,
-       "trailingComma": "none",
-       "printWidth": 100,
-       "plugins": ["prettier-plugin-svelte"],
-       "overrides": [
-               {
-                       "files": "*.svelte",
-                       "options": {
-                               "parser": "svelte"
-                       }
-               }
-       ]
-}
diff --git a/dailytxt/README.md b/dailytxt/README.md
deleted file mode 100644 (file)
index b5b2950..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-# sv
-
-Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).
-
-## Creating a project
-
-If you're seeing this, you've probably already done this step. Congrats!
-
-```bash
-# create a new project in the current directory
-npx sv create
-
-# create a new project in my-app
-npx sv create my-app
-```
-
-## Developing
-
-Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
-
-```bash
-npm run dev
-
-# or start the server and open the app in a new browser tab
-npm run dev -- --open
-```
-
-## Building
-
-To create a production version of your app:
-
-```bash
-npm run build
-```
-
-You can preview the production build with `npm run preview`.
-
-> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
diff --git a/dailytxt/eslint.config.js b/dailytxt/eslint.config.js
deleted file mode 100644 (file)
index a526565..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-import prettier from 'eslint-config-prettier';
-import js from '@eslint/js';
-import svelte from 'eslint-plugin-svelte';
-import globals from 'globals';
-import ts from 'typescript-eslint';
-
-export default ts.config(
-       js.configs.recommended,
-       ...ts.configs.recommended,
-       ...svelte.configs['flat/recommended'],
-       prettier,
-       ...svelte.configs['flat/prettier'],
-       {
-               languageOptions: {
-                       globals: {
-                               ...globals.browser,
-                               ...globals.node
-                       }
-               }
-       },
-       {
-               files: ['**/*.svelte'],
-
-               languageOptions: {
-                       parserOptions: {
-                               parser: ts.parser
-                       }
-               }
-       },
-       {
-               ignores: ['build/', '.svelte-kit/', 'dist/']
-       }
-);
diff --git a/dailytxt/package-lock.json b/dailytxt/package-lock.json
deleted file mode 100644 (file)
index 14fc5e1..0000000
+++ /dev/null
@@ -1,3471 +0,0 @@
-{
-       "name": "dailytxt",
-       "version": "0.0.1",
-       "lockfileVersion": 3,
-       "requires": true,
-       "packages": {
-               "": {
-                       "name": "dailytxt",
-                       "version": "0.0.1",
-                       "dependencies": {
-                               "@popperjs/core": "^2.11.8",
-                               "bootstrap": "^5.3.3"
-                       },
-                       "devDependencies": {
-                               "@sveltejs/adapter-auto": "^3.0.0",
-                               "@sveltejs/adapter-static": "^3.0.6",
-                               "@sveltejs/kit": "^2.0.0",
-                               "@sveltejs/vite-plugin-svelte": "^4.0.0",
-                               "@types/bootstrap": "^5.2.10",
-                               "eslint": "^9.7.0",
-                               "eslint-config-prettier": "^9.1.0",
-                               "eslint-plugin-svelte": "^2.36.0",
-                               "globals": "^15.0.0",
-                               "prettier": "^3.3.2",
-                               "prettier-plugin-svelte": "^3.2.6",
-                               "sass": "1.77.6",
-                               "svelte": "^5.0.0",
-                               "svelte-check": "^4.0.0",
-                               "typescript": "^5.0.0",
-                               "typescript-eslint": "^8.0.0",
-                               "vite": "^5.0.3"
-                       }
-               },
-               "node_modules/@ampproject/remapping": {
-                       "version": "2.3.0",
-                       "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
-                       "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
-                       "dev": true,
-                       "license": "Apache-2.0",
-                       "dependencies": {
-                               "@jridgewell/gen-mapping": "^0.3.5",
-                               "@jridgewell/trace-mapping": "^0.3.24"
-                       },
-                       "engines": {
-                               "node": ">=6.0.0"
-                       }
-               },
-               "node_modules/@esbuild/aix-ppc64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
-                       "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
-                       "cpu": [
-                               "ppc64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "aix"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/android-arm": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
-                       "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
-                       "cpu": [
-                               "arm"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "android"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/android-arm64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
-                       "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
-                       "cpu": [
-                               "arm64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "android"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/android-x64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
-                       "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
-                       "cpu": [
-                               "x64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "android"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/darwin-arm64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
-                       "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
-                       "cpu": [
-                               "arm64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "darwin"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/darwin-x64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
-                       "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
-                       "cpu": [
-                               "x64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "darwin"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/freebsd-arm64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
-                       "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
-                       "cpu": [
-                               "arm64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "freebsd"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/freebsd-x64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
-                       "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
-                       "cpu": [
-                               "x64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "freebsd"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/linux-arm": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
-                       "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
-                       "cpu": [
-                               "arm"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/linux-arm64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
-                       "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
-                       "cpu": [
-                               "arm64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/linux-ia32": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
-                       "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
-                       "cpu": [
-                               "ia32"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/linux-loong64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
-                       "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
-                       "cpu": [
-                               "loong64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/linux-mips64el": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
-                       "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
-                       "cpu": [
-                               "mips64el"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/linux-ppc64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
-                       "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
-                       "cpu": [
-                               "ppc64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/linux-riscv64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
-                       "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
-                       "cpu": [
-                               "riscv64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/linux-s390x": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
-                       "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
-                       "cpu": [
-                               "s390x"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/linux-x64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
-                       "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
-                       "cpu": [
-                               "x64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/netbsd-x64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
-                       "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
-                       "cpu": [
-                               "x64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "netbsd"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/openbsd-x64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
-                       "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
-                       "cpu": [
-                               "x64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "openbsd"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/sunos-x64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
-                       "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
-                       "cpu": [
-                               "x64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "sunos"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/win32-arm64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
-                       "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
-                       "cpu": [
-                               "arm64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "win32"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/win32-ia32": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
-                       "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
-                       "cpu": [
-                               "ia32"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "win32"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@esbuild/win32-x64": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
-                       "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
-                       "cpu": [
-                               "x64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "win32"
-                       ],
-                       "engines": {
-                               "node": ">=12"
-                       }
-               },
-               "node_modules/@eslint-community/eslint-utils": {
-                       "version": "4.4.1",
-                       "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz",
-                       "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "eslint-visitor-keys": "^3.4.3"
-                       },
-                       "engines": {
-                               "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-                       },
-                       "funding": {
-                               "url": "https://opencollective.com/eslint"
-                       },
-                       "peerDependencies": {
-                               "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
-                       }
-               },
-               "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
-                       "version": "3.4.3",
-                       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
-                       "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
-                       "dev": true,
-                       "license": "Apache-2.0",
-                       "engines": {
-                               "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-                       },
-                       "funding": {
-                               "url": "https://opencollective.com/eslint"
-                       }
-               },
-               "node_modules/@eslint-community/regexpp": {
-                       "version": "4.12.1",
-                       "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
-                       "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
-                       }
-               },
-               "node_modules/@eslint/config-array": {
-                       "version": "0.19.0",
-                       "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz",
-                       "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==",
-                       "dev": true,
-                       "license": "Apache-2.0",
-                       "dependencies": {
-                               "@eslint/object-schema": "^2.1.4",
-                               "debug": "^4.3.1",
-                               "minimatch": "^3.1.2"
-                       },
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       }
-               },
-               "node_modules/@eslint/core": {
-                       "version": "0.9.0",
-                       "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz",
-                       "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==",
-                       "dev": true,
-                       "license": "Apache-2.0",
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       }
-               },
-               "node_modules/@eslint/eslintrc": {
-                       "version": "3.2.0",
-                       "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz",
-                       "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "ajv": "^6.12.4",
-                               "debug": "^4.3.2",
-                               "espree": "^10.0.1",
-                               "globals": "^14.0.0",
-                               "ignore": "^5.2.0",
-                               "import-fresh": "^3.2.1",
-                               "js-yaml": "^4.1.0",
-                               "minimatch": "^3.1.2",
-                               "strip-json-comments": "^3.1.1"
-                       },
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "url": "https://opencollective.com/eslint"
-                       }
-               },
-               "node_modules/@eslint/eslintrc/node_modules/globals": {
-                       "version": "14.0.0",
-                       "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
-                       "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=18"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
-                       }
-               },
-               "node_modules/@eslint/js": {
-                       "version": "9.15.0",
-                       "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz",
-                       "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       }
-               },
-               "node_modules/@eslint/object-schema": {
-                       "version": "2.1.4",
-                       "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz",
-                       "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==",
-                       "dev": true,
-                       "license": "Apache-2.0",
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       }
-               },
-               "node_modules/@eslint/plugin-kit": {
-                       "version": "0.2.3",
-                       "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz",
-                       "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==",
-                       "dev": true,
-                       "license": "Apache-2.0",
-                       "dependencies": {
-                               "levn": "^0.4.1"
-                       },
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       }
-               },
-               "node_modules/@humanfs/core": {
-                       "version": "0.19.1",
-                       "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
-                       "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
-                       "dev": true,
-                       "license": "Apache-2.0",
-                       "engines": {
-                               "node": ">=18.18.0"
-                       }
-               },
-               "node_modules/@humanfs/node": {
-                       "version": "0.16.6",
-                       "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
-                       "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
-                       "dev": true,
-                       "license": "Apache-2.0",
-                       "dependencies": {
-                               "@humanfs/core": "^0.19.1",
-                               "@humanwhocodes/retry": "^0.3.0"
-                       },
-                       "engines": {
-                               "node": ">=18.18.0"
-                       }
-               },
-               "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
-                       "version": "0.3.1",
-                       "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
-                       "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
-                       "dev": true,
-                       "license": "Apache-2.0",
-                       "engines": {
-                               "node": ">=18.18"
-                       },
-                       "funding": {
-                               "type": "github",
-                               "url": "https://github.com/sponsors/nzakas"
-                       }
-               },
-               "node_modules/@humanwhocodes/module-importer": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
-                       "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
-                       "dev": true,
-                       "license": "Apache-2.0",
-                       "engines": {
-                               "node": ">=12.22"
-                       },
-                       "funding": {
-                               "type": "github",
-                               "url": "https://github.com/sponsors/nzakas"
-                       }
-               },
-               "node_modules/@humanwhocodes/retry": {
-                       "version": "0.4.1",
-                       "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz",
-                       "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==",
-                       "dev": true,
-                       "license": "Apache-2.0",
-                       "engines": {
-                               "node": ">=18.18"
-                       },
-                       "funding": {
-                               "type": "github",
-                               "url": "https://github.com/sponsors/nzakas"
-                       }
-               },
-               "node_modules/@jridgewell/gen-mapping": {
-                       "version": "0.3.5",
-                       "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
-                       "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@jridgewell/set-array": "^1.2.1",
-                               "@jridgewell/sourcemap-codec": "^1.4.10",
-                               "@jridgewell/trace-mapping": "^0.3.24"
-                       },
-                       "engines": {
-                               "node": ">=6.0.0"
-                       }
-               },
-               "node_modules/@jridgewell/resolve-uri": {
-                       "version": "3.1.2",
-                       "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
-                       "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=6.0.0"
-                       }
-               },
-               "node_modules/@jridgewell/set-array": {
-                       "version": "1.2.1",
-                       "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
-                       "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=6.0.0"
-                       }
-               },
-               "node_modules/@jridgewell/sourcemap-codec": {
-                       "version": "1.5.0",
-                       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
-                       "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/@jridgewell/trace-mapping": {
-                       "version": "0.3.25",
-                       "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
-                       "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@jridgewell/resolve-uri": "^3.1.0",
-                               "@jridgewell/sourcemap-codec": "^1.4.14"
-                       }
-               },
-               "node_modules/@nodelib/fs.scandir": {
-                       "version": "2.1.5",
-                       "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
-                       "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@nodelib/fs.stat": "2.0.5",
-                               "run-parallel": "^1.1.9"
-                       },
-                       "engines": {
-                               "node": ">= 8"
-                       }
-               },
-               "node_modules/@nodelib/fs.stat": {
-                       "version": "2.0.5",
-                       "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
-                       "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">= 8"
-                       }
-               },
-               "node_modules/@nodelib/fs.walk": {
-                       "version": "1.2.8",
-                       "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
-                       "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@nodelib/fs.scandir": "2.1.5",
-                               "fastq": "^1.6.0"
-                       },
-                       "engines": {
-                               "node": ">= 8"
-                       }
-               },
-               "node_modules/@polka/url": {
-                       "version": "1.0.0-next.28",
-                       "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz",
-                       "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/@popperjs/core": {
-                       "version": "2.11.8",
-                       "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
-                       "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
-                       "license": "MIT",
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/popperjs"
-                       }
-               },
-               "node_modules/@rollup/rollup-android-arm-eabi": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.4.tgz",
-                       "integrity": "sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==",
-                       "cpu": [
-                               "arm"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "android"
-                       ]
-               },
-               "node_modules/@rollup/rollup-android-arm64": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.4.tgz",
-                       "integrity": "sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==",
-                       "cpu": [
-                               "arm64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "android"
-                       ]
-               },
-               "node_modules/@rollup/rollup-darwin-arm64": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.4.tgz",
-                       "integrity": "sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==",
-                       "cpu": [
-                               "arm64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "darwin"
-                       ]
-               },
-               "node_modules/@rollup/rollup-darwin-x64": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.4.tgz",
-                       "integrity": "sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==",
-                       "cpu": [
-                               "x64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "darwin"
-                       ]
-               },
-               "node_modules/@rollup/rollup-freebsd-arm64": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.4.tgz",
-                       "integrity": "sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==",
-                       "cpu": [
-                               "arm64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "freebsd"
-                       ]
-               },
-               "node_modules/@rollup/rollup-freebsd-x64": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.4.tgz",
-                       "integrity": "sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==",
-                       "cpu": [
-                               "x64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "freebsd"
-                       ]
-               },
-               "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.4.tgz",
-                       "integrity": "sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==",
-                       "cpu": [
-                               "arm"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
-               },
-               "node_modules/@rollup/rollup-linux-arm-musleabihf": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.4.tgz",
-                       "integrity": "sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==",
-                       "cpu": [
-                               "arm"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
-               },
-               "node_modules/@rollup/rollup-linux-arm64-gnu": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.4.tgz",
-                       "integrity": "sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==",
-                       "cpu": [
-                               "arm64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
-               },
-               "node_modules/@rollup/rollup-linux-arm64-musl": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.4.tgz",
-                       "integrity": "sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==",
-                       "cpu": [
-                               "arm64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
-               },
-               "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.4.tgz",
-                       "integrity": "sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==",
-                       "cpu": [
-                               "ppc64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
-               },
-               "node_modules/@rollup/rollup-linux-riscv64-gnu": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.4.tgz",
-                       "integrity": "sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==",
-                       "cpu": [
-                               "riscv64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
-               },
-               "node_modules/@rollup/rollup-linux-s390x-gnu": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.4.tgz",
-                       "integrity": "sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==",
-                       "cpu": [
-                               "s390x"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
-               },
-               "node_modules/@rollup/rollup-linux-x64-gnu": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.4.tgz",
-                       "integrity": "sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==",
-                       "cpu": [
-                               "x64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
-               },
-               "node_modules/@rollup/rollup-linux-x64-musl": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.4.tgz",
-                       "integrity": "sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==",
-                       "cpu": [
-                               "x64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
-               },
-               "node_modules/@rollup/rollup-win32-arm64-msvc": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.4.tgz",
-                       "integrity": "sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==",
-                       "cpu": [
-                               "arm64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "win32"
-                       ]
-               },
-               "node_modules/@rollup/rollup-win32-ia32-msvc": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.4.tgz",
-                       "integrity": "sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==",
-                       "cpu": [
-                               "ia32"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "win32"
-                       ]
-               },
-               "node_modules/@rollup/rollup-win32-x64-msvc": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.4.tgz",
-                       "integrity": "sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==",
-                       "cpu": [
-                               "x64"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "win32"
-                       ]
-               },
-               "node_modules/@sveltejs/adapter-auto": {
-                       "version": "3.3.1",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-3.3.1.tgz",
-                       "integrity": "sha512-5Sc7WAxYdL6q9j/+D0jJKjGREGlfIevDyHSQ2eNETHcB1TKlQWHcAo8AS8H1QdjNvSXpvOwNjykDUHPEAyGgdQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "import-meta-resolve": "^4.1.0"
-                       },
-                       "peerDependencies": {
-                               "@sveltejs/kit": "^2.0.0"
-                       }
-               },
-               "node_modules/@sveltejs/adapter-static": {
-                       "version": "3.0.6",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.6.tgz",
-                       "integrity": "sha512-MGJcesnJWj7FxDcB/GbrdYD3q24Uk0PIL4QIX149ku+hlJuj//nxUbb0HxUTpjkecWfHjVveSUnUaQWnPRXlpg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "peerDependencies": {
-                               "@sveltejs/kit": "^2.0.0"
-                       }
-               },
-               "node_modules/@sveltejs/kit": {
-                       "version": "2.8.4",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.8.4.tgz",
-                       "integrity": "sha512-oDSBHPokbP2iaQlHiEWAkVLsIugsXve8YtABtlyHBUljA63Wgx0UtV8MSOQOGpRft1M+Cd5rzer+0SFlppQwOg==",
-                       "dev": true,
-                       "hasInstallScript": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@types/cookie": "^0.6.0",
-                               "cookie": "^0.6.0",
-                               "devalue": "^5.1.0",
-                               "esm-env": "^1.0.0",
-                               "import-meta-resolve": "^4.1.0",
-                               "kleur": "^4.1.5",
-                               "magic-string": "^0.30.5",
-                               "mrmime": "^2.0.0",
-                               "sade": "^1.8.1",
-                               "set-cookie-parser": "^2.6.0",
-                               "sirv": "^3.0.0",
-                               "tiny-glob": "^0.2.9"
-                       },
-                       "bin": {
-                               "svelte-kit": "svelte-kit.js"
-                       },
-                       "engines": {
-                               "node": ">=18.13"
-                       },
-                       "peerDependencies": {
-                               "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1",
-                               "svelte": "^4.0.0 || ^5.0.0-next.0",
-                               "vite": "^5.0.3"
-                       }
-               },
-               "node_modules/@sveltejs/vite-plugin-svelte": {
-                       "version": "4.0.2",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-4.0.2.tgz",
-                       "integrity": "sha512-Y9r/fWy539XlAC7+5wfNJ4zH6TygUYoQ0Eegzp0zDDqhJ54+92gOyOX1l4MO1cJSx0O+Gp13YePT5XEa3+kX0w==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@sveltejs/vite-plugin-svelte-inspector": "^3.0.0-next.0||^3.0.0",
-                               "debug": "^4.3.7",
-                               "deepmerge": "^4.3.1",
-                               "kleur": "^4.1.5",
-                               "magic-string": "^0.30.12",
-                               "vitefu": "^1.0.3"
-                       },
-                       "engines": {
-                               "node": "^18.0.0 || ^20.0.0 || >=22"
-                       },
-                       "peerDependencies": {
-                               "svelte": "^5.0.0-next.96 || ^5.0.0",
-                               "vite": "^5.0.0"
-                       }
-               },
-               "node_modules/@sveltejs/vite-plugin-svelte-inspector": {
-                       "version": "3.0.1",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-3.0.1.tgz",
-                       "integrity": "sha512-2CKypmj1sM4GE7HjllT7UKmo4Q6L5xFRd7VMGEWhYnZ+wc6AUVU01IBd7yUi6WnFndEwWoMNOd6e8UjoN0nbvQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "debug": "^4.3.7"
-                       },
-                       "engines": {
-                               "node": "^18.0.0 || ^20.0.0 || >=22"
-                       },
-                       "peerDependencies": {
-                               "@sveltejs/vite-plugin-svelte": "^4.0.0-next.0||^4.0.0",
-                               "svelte": "^5.0.0-next.96 || ^5.0.0",
-                               "vite": "^5.0.0"
-                       }
-               },
-               "node_modules/@types/bootstrap": {
-                       "version": "5.2.10",
-                       "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-5.2.10.tgz",
-                       "integrity": "sha512-F2X+cd6551tep0MvVZ6nM8v7XgGN/twpdNDjqS1TUM7YFNEtQYWk+dKAnH+T1gr6QgCoGMPl487xw/9hXooa2g==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@popperjs/core": "^2.9.2"
-                       }
-               },
-               "node_modules/@types/cookie": {
-                       "version": "0.6.0",
-                       "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
-                       "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/@types/estree": {
-                       "version": "1.0.6",
-                       "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
-                       "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/@types/json-schema": {
-                       "version": "7.0.15",
-                       "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
-                       "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/@typescript-eslint/eslint-plugin": {
-                       "version": "8.16.0",
-                       "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.16.0.tgz",
-                       "integrity": "sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@eslint-community/regexpp": "^4.10.0",
-                               "@typescript-eslint/scope-manager": "8.16.0",
-                               "@typescript-eslint/type-utils": "8.16.0",
-                               "@typescript-eslint/utils": "8.16.0",
-                               "@typescript-eslint/visitor-keys": "8.16.0",
-                               "graphemer": "^1.4.0",
-                               "ignore": "^5.3.1",
-                               "natural-compare": "^1.4.0",
-                               "ts-api-utils": "^1.3.0"
-                       },
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
-                       },
-                       "peerDependencies": {
-                               "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
-                               "eslint": "^8.57.0 || ^9.0.0"
-                       },
-                       "peerDependenciesMeta": {
-                               "typescript": {
-                                       "optional": true
-                               }
-                       }
-               },
-               "node_modules/@typescript-eslint/parser": {
-                       "version": "8.16.0",
-                       "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.16.0.tgz",
-                       "integrity": "sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==",
-                       "dev": true,
-                       "license": "BSD-2-Clause",
-                       "dependencies": {
-                               "@typescript-eslint/scope-manager": "8.16.0",
-                               "@typescript-eslint/types": "8.16.0",
-                               "@typescript-eslint/typescript-estree": "8.16.0",
-                               "@typescript-eslint/visitor-keys": "8.16.0",
-                               "debug": "^4.3.4"
-                       },
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
-                       },
-                       "peerDependencies": {
-                               "eslint": "^8.57.0 || ^9.0.0"
-                       },
-                       "peerDependenciesMeta": {
-                               "typescript": {
-                                       "optional": true
-                               }
-                       }
-               },
-               "node_modules/@typescript-eslint/scope-manager": {
-                       "version": "8.16.0",
-                       "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz",
-                       "integrity": "sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@typescript-eslint/types": "8.16.0",
-                               "@typescript-eslint/visitor-keys": "8.16.0"
-                       },
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
-                       }
-               },
-               "node_modules/@typescript-eslint/type-utils": {
-                       "version": "8.16.0",
-                       "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.16.0.tgz",
-                       "integrity": "sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@typescript-eslint/typescript-estree": "8.16.0",
-                               "@typescript-eslint/utils": "8.16.0",
-                               "debug": "^4.3.4",
-                               "ts-api-utils": "^1.3.0"
-                       },
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
-                       },
-                       "peerDependencies": {
-                               "eslint": "^8.57.0 || ^9.0.0"
-                       },
-                       "peerDependenciesMeta": {
-                               "typescript": {
-                                       "optional": true
-                               }
-                       }
-               },
-               "node_modules/@typescript-eslint/types": {
-                       "version": "8.16.0",
-                       "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.16.0.tgz",
-                       "integrity": "sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
-                       }
-               },
-               "node_modules/@typescript-eslint/typescript-estree": {
-                       "version": "8.16.0",
-                       "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz",
-                       "integrity": "sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==",
-                       "dev": true,
-                       "license": "BSD-2-Clause",
-                       "dependencies": {
-                               "@typescript-eslint/types": "8.16.0",
-                               "@typescript-eslint/visitor-keys": "8.16.0",
-                               "debug": "^4.3.4",
-                               "fast-glob": "^3.3.2",
-                               "is-glob": "^4.0.3",
-                               "minimatch": "^9.0.4",
-                               "semver": "^7.6.0",
-                               "ts-api-utils": "^1.3.0"
-                       },
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
-                       },
-                       "peerDependenciesMeta": {
-                               "typescript": {
-                                       "optional": true
-                               }
-                       }
-               },
-               "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
-                       "version": "2.0.1",
-                       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-                       "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "balanced-match": "^1.0.0"
-                       }
-               },
-               "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
-                       "version": "9.0.5",
-                       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-                       "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-                       "dev": true,
-                       "license": "ISC",
-                       "dependencies": {
-                               "brace-expansion": "^2.0.1"
-                       },
-                       "engines": {
-                               "node": ">=16 || 14 >=14.17"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/isaacs"
-                       }
-               },
-               "node_modules/@typescript-eslint/utils": {
-                       "version": "8.16.0",
-                       "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.16.0.tgz",
-                       "integrity": "sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@eslint-community/eslint-utils": "^4.4.0",
-                               "@typescript-eslint/scope-manager": "8.16.0",
-                               "@typescript-eslint/types": "8.16.0",
-                               "@typescript-eslint/typescript-estree": "8.16.0"
-                       },
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
-                       },
-                       "peerDependencies": {
-                               "eslint": "^8.57.0 || ^9.0.0"
-                       },
-                       "peerDependenciesMeta": {
-                               "typescript": {
-                                       "optional": true
-                               }
-                       }
-               },
-               "node_modules/@typescript-eslint/visitor-keys": {
-                       "version": "8.16.0",
-                       "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz",
-                       "integrity": "sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@typescript-eslint/types": "8.16.0",
-                               "eslint-visitor-keys": "^4.2.0"
-                       },
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
-                       }
-               },
-               "node_modules/acorn": {
-                       "version": "8.14.0",
-                       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
-                       "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "bin": {
-                               "acorn": "bin/acorn"
-                       },
-                       "engines": {
-                               "node": ">=0.4.0"
-                       }
-               },
-               "node_modules/acorn-jsx": {
-                       "version": "5.3.2",
-                       "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
-                       "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "peerDependencies": {
-                               "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
-                       }
-               },
-               "node_modules/acorn-typescript": {
-                       "version": "1.4.13",
-                       "resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz",
-                       "integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==",
-                       "dev": true,
-                       "license": "MIT",
-                       "peerDependencies": {
-                               "acorn": ">=8.9.0"
-                       }
-               },
-               "node_modules/ajv": {
-                       "version": "6.12.6",
-                       "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-                       "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "fast-deep-equal": "^3.1.1",
-                               "fast-json-stable-stringify": "^2.0.0",
-                               "json-schema-traverse": "^0.4.1",
-                               "uri-js": "^4.2.2"
-                       },
-                       "funding": {
-                               "type": "github",
-                               "url": "https://github.com/sponsors/epoberezkin"
-                       }
-               },
-               "node_modules/ansi-styles": {
-                       "version": "4.3.0",
-                       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-                       "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "color-convert": "^2.0.1"
-                       },
-                       "engines": {
-                               "node": ">=8"
-                       },
-                       "funding": {
-                               "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-                       }
-               },
-               "node_modules/anymatch": {
-                       "version": "3.1.3",
-                       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
-                       "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
-                       "dev": true,
-                       "license": "ISC",
-                       "dependencies": {
-                               "normalize-path": "^3.0.0",
-                               "picomatch": "^2.0.4"
-                       },
-                       "engines": {
-                               "node": ">= 8"
-                       }
-               },
-               "node_modules/argparse": {
-                       "version": "2.0.1",
-                       "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-                       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-                       "dev": true,
-                       "license": "Python-2.0"
-               },
-               "node_modules/aria-query": {
-                       "version": "5.3.2",
-                       "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
-                       "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
-                       "dev": true,
-                       "license": "Apache-2.0",
-                       "engines": {
-                               "node": ">= 0.4"
-                       }
-               },
-               "node_modules/axobject-query": {
-                       "version": "4.1.0",
-                       "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
-                       "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
-                       "dev": true,
-                       "license": "Apache-2.0",
-                       "engines": {
-                               "node": ">= 0.4"
-                       }
-               },
-               "node_modules/balanced-match": {
-                       "version": "1.0.2",
-                       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-                       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/binary-extensions": {
-                       "version": "2.3.0",
-                       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
-                       "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=8"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
-                       }
-               },
-               "node_modules/bootstrap": {
-                       "version": "5.3.3",
-                       "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz",
-                       "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==",
-                       "funding": [
-                               {
-                                       "type": "github",
-                                       "url": "https://github.com/sponsors/twbs"
-                               },
-                               {
-                                       "type": "opencollective",
-                                       "url": "https://opencollective.com/bootstrap"
-                               }
-                       ],
-                       "license": "MIT",
-                       "peerDependencies": {
-                               "@popperjs/core": "^2.11.8"
-                       }
-               },
-               "node_modules/brace-expansion": {
-                       "version": "1.1.11",
-                       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-                       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "balanced-match": "^1.0.0",
-                               "concat-map": "0.0.1"
-                       }
-               },
-               "node_modules/braces": {
-                       "version": "3.0.3",
-                       "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
-                       "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "fill-range": "^7.1.1"
-                       },
-                       "engines": {
-                               "node": ">=8"
-                       }
-               },
-               "node_modules/callsites": {
-                       "version": "3.1.0",
-                       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-                       "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=6"
-                       }
-               },
-               "node_modules/chalk": {
-                       "version": "4.1.2",
-                       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-                       "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "ansi-styles": "^4.1.0",
-                               "supports-color": "^7.1.0"
-                       },
-                       "engines": {
-                               "node": ">=10"
-                       },
-                       "funding": {
-                               "url": "https://github.com/chalk/chalk?sponsor=1"
-                       }
-               },
-               "node_modules/chokidar": {
-                       "version": "3.6.0",
-                       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
-                       "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "anymatch": "~3.1.2",
-                               "braces": "~3.0.2",
-                               "glob-parent": "~5.1.2",
-                               "is-binary-path": "~2.1.0",
-                               "is-glob": "~4.0.1",
-                               "normalize-path": "~3.0.0",
-                               "readdirp": "~3.6.0"
-                       },
-                       "engines": {
-                               "node": ">= 8.10.0"
-                       },
-                       "funding": {
-                               "url": "https://paulmillr.com/funding/"
-                       },
-                       "optionalDependencies": {
-                               "fsevents": "~2.3.2"
-                       }
-               },
-               "node_modules/chokidar/node_modules/glob-parent": {
-                       "version": "5.1.2",
-                       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-                       "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-                       "dev": true,
-                       "license": "ISC",
-                       "dependencies": {
-                               "is-glob": "^4.0.1"
-                       },
-                       "engines": {
-                               "node": ">= 6"
-                       }
-               },
-               "node_modules/color-convert": {
-                       "version": "2.0.1",
-                       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-                       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "color-name": "~1.1.4"
-                       },
-                       "engines": {
-                               "node": ">=7.0.0"
-                       }
-               },
-               "node_modules/color-name": {
-                       "version": "1.1.4",
-                       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-                       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/concat-map": {
-                       "version": "0.0.1",
-                       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-                       "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/cookie": {
-                       "version": "0.6.0",
-                       "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
-                       "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">= 0.6"
-                       }
-               },
-               "node_modules/cross-spawn": {
-                       "version": "7.0.6",
-                       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
-                       "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "path-key": "^3.1.0",
-                               "shebang-command": "^2.0.0",
-                               "which": "^2.0.1"
-                       },
-                       "engines": {
-                               "node": ">= 8"
-                       }
-               },
-               "node_modules/cssesc": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
-                       "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "bin": {
-                               "cssesc": "bin/cssesc"
-                       },
-                       "engines": {
-                               "node": ">=4"
-                       }
-               },
-               "node_modules/debug": {
-                       "version": "4.3.7",
-                       "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
-                       "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "ms": "^2.1.3"
-                       },
-                       "engines": {
-                               "node": ">=6.0"
-                       },
-                       "peerDependenciesMeta": {
-                               "supports-color": {
-                                       "optional": true
-                               }
-                       }
-               },
-               "node_modules/deep-is": {
-                       "version": "0.1.4",
-                       "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
-                       "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/deepmerge": {
-                       "version": "4.3.1",
-                       "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
-                       "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=0.10.0"
-                       }
-               },
-               "node_modules/devalue": {
-                       "version": "5.1.1",
-                       "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz",
-                       "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/esbuild": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
-                       "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
-                       "dev": true,
-                       "hasInstallScript": true,
-                       "license": "MIT",
-                       "bin": {
-                               "esbuild": "bin/esbuild"
-                       },
-                       "engines": {
-                               "node": ">=12"
-                       },
-                       "optionalDependencies": {
-                               "@esbuild/aix-ppc64": "0.21.5",
-                               "@esbuild/android-arm": "0.21.5",
-                               "@esbuild/android-arm64": "0.21.5",
-                               "@esbuild/android-x64": "0.21.5",
-                               "@esbuild/darwin-arm64": "0.21.5",
-                               "@esbuild/darwin-x64": "0.21.5",
-                               "@esbuild/freebsd-arm64": "0.21.5",
-                               "@esbuild/freebsd-x64": "0.21.5",
-                               "@esbuild/linux-arm": "0.21.5",
-                               "@esbuild/linux-arm64": "0.21.5",
-                               "@esbuild/linux-ia32": "0.21.5",
-                               "@esbuild/linux-loong64": "0.21.5",
-                               "@esbuild/linux-mips64el": "0.21.5",
-                               "@esbuild/linux-ppc64": "0.21.5",
-                               "@esbuild/linux-riscv64": "0.21.5",
-                               "@esbuild/linux-s390x": "0.21.5",
-                               "@esbuild/linux-x64": "0.21.5",
-                               "@esbuild/netbsd-x64": "0.21.5",
-                               "@esbuild/openbsd-x64": "0.21.5",
-                               "@esbuild/sunos-x64": "0.21.5",
-                               "@esbuild/win32-arm64": "0.21.5",
-                               "@esbuild/win32-ia32": "0.21.5",
-                               "@esbuild/win32-x64": "0.21.5"
-                       }
-               },
-               "node_modules/escape-string-regexp": {
-                       "version": "4.0.0",
-                       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-                       "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=10"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
-                       }
-               },
-               "node_modules/eslint": {
-                       "version": "9.15.0",
-                       "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz",
-                       "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@eslint-community/eslint-utils": "^4.2.0",
-                               "@eslint-community/regexpp": "^4.12.1",
-                               "@eslint/config-array": "^0.19.0",
-                               "@eslint/core": "^0.9.0",
-                               "@eslint/eslintrc": "^3.2.0",
-                               "@eslint/js": "9.15.0",
-                               "@eslint/plugin-kit": "^0.2.3",
-                               "@humanfs/node": "^0.16.6",
-                               "@humanwhocodes/module-importer": "^1.0.1",
-                               "@humanwhocodes/retry": "^0.4.1",
-                               "@types/estree": "^1.0.6",
-                               "@types/json-schema": "^7.0.15",
-                               "ajv": "^6.12.4",
-                               "chalk": "^4.0.0",
-                               "cross-spawn": "^7.0.5",
-                               "debug": "^4.3.2",
-                               "escape-string-regexp": "^4.0.0",
-                               "eslint-scope": "^8.2.0",
-                               "eslint-visitor-keys": "^4.2.0",
-                               "espree": "^10.3.0",
-                               "esquery": "^1.5.0",
-                               "esutils": "^2.0.2",
-                               "fast-deep-equal": "^3.1.3",
-                               "file-entry-cache": "^8.0.0",
-                               "find-up": "^5.0.0",
-                               "glob-parent": "^6.0.2",
-                               "ignore": "^5.2.0",
-                               "imurmurhash": "^0.1.4",
-                               "is-glob": "^4.0.0",
-                               "json-stable-stringify-without-jsonify": "^1.0.1",
-                               "lodash.merge": "^4.6.2",
-                               "minimatch": "^3.1.2",
-                               "natural-compare": "^1.4.0",
-                               "optionator": "^0.9.3"
-                       },
-                       "bin": {
-                               "eslint": "bin/eslint.js"
-                       },
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "url": "https://eslint.org/donate"
-                       },
-                       "peerDependencies": {
-                               "jiti": "*"
-                       },
-                       "peerDependenciesMeta": {
-                               "jiti": {
-                                       "optional": true
-                               }
-                       }
-               },
-               "node_modules/eslint-compat-utils": {
-                       "version": "0.5.1",
-                       "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz",
-                       "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "semver": "^7.5.4"
-                       },
-                       "engines": {
-                               "node": ">=12"
-                       },
-                       "peerDependencies": {
-                               "eslint": ">=6.0.0"
-                       }
-               },
-               "node_modules/eslint-config-prettier": {
-                       "version": "9.1.0",
-                       "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
-                       "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "bin": {
-                               "eslint-config-prettier": "bin/cli.js"
-                       },
-                       "peerDependencies": {
-                               "eslint": ">=7.0.0"
-                       }
-               },
-               "node_modules/eslint-plugin-svelte": {
-                       "version": "2.46.0",
-                       "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.46.0.tgz",
-                       "integrity": "sha512-1A7iEMkzmCZ9/Iz+EAfOGYL8IoIG6zeKEq1SmpxGeM5SXmoQq+ZNnCpXFVJpsxPWYx8jIVGMerQMzX20cqUl0g==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@eslint-community/eslint-utils": "^4.4.0",
-                               "@jridgewell/sourcemap-codec": "^1.4.15",
-                               "eslint-compat-utils": "^0.5.1",
-                               "esutils": "^2.0.3",
-                               "known-css-properties": "^0.35.0",
-                               "postcss": "^8.4.38",
-                               "postcss-load-config": "^3.1.4",
-                               "postcss-safe-parser": "^6.0.0",
-                               "postcss-selector-parser": "^6.1.0",
-                               "semver": "^7.6.2",
-                               "svelte-eslint-parser": "^0.43.0"
-                       },
-                       "engines": {
-                               "node": "^14.17.0 || >=16.0.0"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/ota-meshi"
-                       },
-                       "peerDependencies": {
-                               "eslint": "^7.0.0 || ^8.0.0-0 || ^9.0.0-0",
-                               "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0"
-                       },
-                       "peerDependenciesMeta": {
-                               "svelte": {
-                                       "optional": true
-                               }
-                       }
-               },
-               "node_modules/eslint-scope": {
-                       "version": "8.2.0",
-                       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz",
-                       "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==",
-                       "dev": true,
-                       "license": "BSD-2-Clause",
-                       "dependencies": {
-                               "esrecurse": "^4.3.0",
-                               "estraverse": "^5.2.0"
-                       },
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "url": "https://opencollective.com/eslint"
-                       }
-               },
-               "node_modules/eslint-visitor-keys": {
-                       "version": "4.2.0",
-                       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
-                       "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
-                       "dev": true,
-                       "license": "Apache-2.0",
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "url": "https://opencollective.com/eslint"
-                       }
-               },
-               "node_modules/esm-env": {
-                       "version": "1.1.4",
-                       "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.1.4.tgz",
-                       "integrity": "sha512-oO82nKPHKkzIj/hbtuDYy/JHqBHFlMIW36SDiPCVsj87ntDLcWN+sJ1erdVryd4NxODacFTsdrIE3b7IamqbOg==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/espree": {
-                       "version": "10.3.0",
-                       "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
-                       "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
-                       "dev": true,
-                       "license": "BSD-2-Clause",
-                       "dependencies": {
-                               "acorn": "^8.14.0",
-                               "acorn-jsx": "^5.3.2",
-                               "eslint-visitor-keys": "^4.2.0"
-                       },
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "url": "https://opencollective.com/eslint"
-                       }
-               },
-               "node_modules/esquery": {
-                       "version": "1.6.0",
-                       "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
-                       "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
-                       "dev": true,
-                       "license": "BSD-3-Clause",
-                       "dependencies": {
-                               "estraverse": "^5.1.0"
-                       },
-                       "engines": {
-                               "node": ">=0.10"
-                       }
-               },
-               "node_modules/esrap": {
-                       "version": "1.2.2",
-                       "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.2.2.tgz",
-                       "integrity": "sha512-F2pSJklxx1BlQIQgooczXCPHmcWpn6EsP5oo73LQfonG9fIlIENQ8vMmfGXeojP9MrkzUNAfyU5vdFlR9shHAw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@jridgewell/sourcemap-codec": "^1.4.15",
-                               "@types/estree": "^1.0.1"
-                       }
-               },
-               "node_modules/esrecurse": {
-                       "version": "4.3.0",
-                       "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-                       "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-                       "dev": true,
-                       "license": "BSD-2-Clause",
-                       "dependencies": {
-                               "estraverse": "^5.2.0"
-                       },
-                       "engines": {
-                               "node": ">=4.0"
-                       }
-               },
-               "node_modules/estraverse": {
-                       "version": "5.3.0",
-                       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
-                       "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-                       "dev": true,
-                       "license": "BSD-2-Clause",
-                       "engines": {
-                               "node": ">=4.0"
-                       }
-               },
-               "node_modules/esutils": {
-                       "version": "2.0.3",
-                       "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-                       "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-                       "dev": true,
-                       "license": "BSD-2-Clause",
-                       "engines": {
-                               "node": ">=0.10.0"
-                       }
-               },
-               "node_modules/fast-deep-equal": {
-                       "version": "3.1.3",
-                       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-                       "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/fast-glob": {
-                       "version": "3.3.2",
-                       "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
-                       "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@nodelib/fs.stat": "^2.0.2",
-                               "@nodelib/fs.walk": "^1.2.3",
-                               "glob-parent": "^5.1.2",
-                               "merge2": "^1.3.0",
-                               "micromatch": "^4.0.4"
-                       },
-                       "engines": {
-                               "node": ">=8.6.0"
-                       }
-               },
-               "node_modules/fast-glob/node_modules/glob-parent": {
-                       "version": "5.1.2",
-                       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-                       "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-                       "dev": true,
-                       "license": "ISC",
-                       "dependencies": {
-                               "is-glob": "^4.0.1"
-                       },
-                       "engines": {
-                               "node": ">= 6"
-                       }
-               },
-               "node_modules/fast-json-stable-stringify": {
-                       "version": "2.1.0",
-                       "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-                       "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/fast-levenshtein": {
-                       "version": "2.0.6",
-                       "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-                       "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/fastq": {
-                       "version": "1.17.1",
-                       "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
-                       "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
-                       "dev": true,
-                       "license": "ISC",
-                       "dependencies": {
-                               "reusify": "^1.0.4"
-                       }
-               },
-               "node_modules/file-entry-cache": {
-                       "version": "8.0.0",
-                       "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
-                       "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "flat-cache": "^4.0.0"
-                       },
-                       "engines": {
-                               "node": ">=16.0.0"
-                       }
-               },
-               "node_modules/fill-range": {
-                       "version": "7.1.1",
-                       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
-                       "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "to-regex-range": "^5.0.1"
-                       },
-                       "engines": {
-                               "node": ">=8"
-                       }
-               },
-               "node_modules/find-up": {
-                       "version": "5.0.0",
-                       "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
-                       "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "locate-path": "^6.0.0",
-                               "path-exists": "^4.0.0"
-                       },
-                       "engines": {
-                               "node": ">=10"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
-                       }
-               },
-               "node_modules/flat-cache": {
-                       "version": "4.0.1",
-                       "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
-                       "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "flatted": "^3.2.9",
-                               "keyv": "^4.5.4"
-                       },
-                       "engines": {
-                               "node": ">=16"
-                       }
-               },
-               "node_modules/flatted": {
-                       "version": "3.3.2",
-                       "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz",
-                       "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==",
-                       "dev": true,
-                       "license": "ISC"
-               },
-               "node_modules/fsevents": {
-                       "version": "2.3.3",
-                       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
-                       "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
-                       "dev": true,
-                       "hasInstallScript": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "darwin"
-                       ],
-                       "engines": {
-                               "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-                       }
-               },
-               "node_modules/glob-parent": {
-                       "version": "6.0.2",
-                       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
-                       "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
-                       "dev": true,
-                       "license": "ISC",
-                       "dependencies": {
-                               "is-glob": "^4.0.3"
-                       },
-                       "engines": {
-                               "node": ">=10.13.0"
-                       }
-               },
-               "node_modules/globals": {
-                       "version": "15.12.0",
-                       "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz",
-                       "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=18"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
-                       }
-               },
-               "node_modules/globalyzer": {
-                       "version": "0.1.0",
-                       "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
-                       "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/globrex": {
-                       "version": "0.1.2",
-                       "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
-                       "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/graphemer": {
-                       "version": "1.4.0",
-                       "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
-                       "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/has-flag": {
-                       "version": "4.0.0",
-                       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-                       "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=8"
-                       }
-               },
-               "node_modules/ignore": {
-                       "version": "5.3.2",
-                       "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
-                       "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">= 4"
-                       }
-               },
-               "node_modules/immutable": {
-                       "version": "4.3.7",
-                       "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz",
-                       "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/import-fresh": {
-                       "version": "3.3.0",
-                       "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
-                       "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "parent-module": "^1.0.0",
-                               "resolve-from": "^4.0.0"
-                       },
-                       "engines": {
-                               "node": ">=6"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
-                       }
-               },
-               "node_modules/import-meta-resolve": {
-                       "version": "4.1.0",
-                       "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz",
-                       "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "funding": {
-                               "type": "github",
-                               "url": "https://github.com/sponsors/wooorm"
-                       }
-               },
-               "node_modules/imurmurhash": {
-                       "version": "0.1.4",
-                       "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-                       "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=0.8.19"
-                       }
-               },
-               "node_modules/is-binary-path": {
-                       "version": "2.1.0",
-                       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-                       "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "binary-extensions": "^2.0.0"
-                       },
-                       "engines": {
-                               "node": ">=8"
-                       }
-               },
-               "node_modules/is-extglob": {
-                       "version": "2.1.1",
-                       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-                       "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=0.10.0"
-                       }
-               },
-               "node_modules/is-glob": {
-                       "version": "4.0.3",
-                       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
-                       "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "is-extglob": "^2.1.1"
-                       },
-                       "engines": {
-                               "node": ">=0.10.0"
-                       }
-               },
-               "node_modules/is-number": {
-                       "version": "7.0.0",
-                       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-                       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=0.12.0"
-                       }
-               },
-               "node_modules/is-reference": {
-                       "version": "3.0.3",
-                       "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz",
-                       "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@types/estree": "^1.0.6"
-                       }
-               },
-               "node_modules/isexe": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-                       "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
-                       "dev": true,
-                       "license": "ISC"
-               },
-               "node_modules/js-yaml": {
-                       "version": "4.1.0",
-                       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
-                       "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "argparse": "^2.0.1"
-                       },
-                       "bin": {
-                               "js-yaml": "bin/js-yaml.js"
-                       }
-               },
-               "node_modules/json-buffer": {
-                       "version": "3.0.1",
-                       "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
-                       "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/json-schema-traverse": {
-                       "version": "0.4.1",
-                       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-                       "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/json-stable-stringify-without-jsonify": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
-                       "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/keyv": {
-                       "version": "4.5.4",
-                       "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
-                       "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "json-buffer": "3.0.1"
-                       }
-               },
-               "node_modules/kleur": {
-                       "version": "4.1.5",
-                       "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
-                       "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=6"
-                       }
-               },
-               "node_modules/known-css-properties": {
-                       "version": "0.35.0",
-                       "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz",
-                       "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/levn": {
-                       "version": "0.4.1",
-                       "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
-                       "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "prelude-ls": "^1.2.1",
-                               "type-check": "~0.4.0"
-                       },
-                       "engines": {
-                               "node": ">= 0.8.0"
-                       }
-               },
-               "node_modules/lilconfig": {
-                       "version": "2.1.0",
-                       "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
-                       "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=10"
-                       }
-               },
-               "node_modules/locate-character": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
-                       "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/locate-path": {
-                       "version": "6.0.0",
-                       "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
-                       "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "p-locate": "^5.0.0"
-                       },
-                       "engines": {
-                               "node": ">=10"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
-                       }
-               },
-               "node_modules/lodash.merge": {
-                       "version": "4.6.2",
-                       "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
-                       "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/magic-string": {
-                       "version": "0.30.14",
-                       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz",
-                       "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@jridgewell/sourcemap-codec": "^1.5.0"
-                       }
-               },
-               "node_modules/merge2": {
-                       "version": "1.4.1",
-                       "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-                       "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">= 8"
-                       }
-               },
-               "node_modules/micromatch": {
-                       "version": "4.0.8",
-                       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
-                       "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "braces": "^3.0.3",
-                               "picomatch": "^2.3.1"
-                       },
-                       "engines": {
-                               "node": ">=8.6"
-                       }
-               },
-               "node_modules/minimatch": {
-                       "version": "3.1.2",
-                       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-                       "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-                       "dev": true,
-                       "license": "ISC",
-                       "dependencies": {
-                               "brace-expansion": "^1.1.7"
-                       },
-                       "engines": {
-                               "node": "*"
-                       }
-               },
-               "node_modules/mri": {
-                       "version": "1.2.0",
-                       "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
-                       "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=4"
-                       }
-               },
-               "node_modules/mrmime": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz",
-                       "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=10"
-                       }
-               },
-               "node_modules/ms": {
-                       "version": "2.1.3",
-                       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-                       "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/nanoid": {
-                       "version": "3.3.8",
-                       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
-                       "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
-                       "dev": true,
-                       "funding": [
-                               {
-                                       "type": "github",
-                                       "url": "https://github.com/sponsors/ai"
-                               }
-                       ],
-                       "license": "MIT",
-                       "bin": {
-                               "nanoid": "bin/nanoid.cjs"
-                       },
-                       "engines": {
-                               "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
-                       }
-               },
-               "node_modules/natural-compare": {
-                       "version": "1.4.0",
-                       "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
-                       "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/normalize-path": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-                       "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=0.10.0"
-                       }
-               },
-               "node_modules/optionator": {
-                       "version": "0.9.4",
-                       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
-                       "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "deep-is": "^0.1.3",
-                               "fast-levenshtein": "^2.0.6",
-                               "levn": "^0.4.1",
-                               "prelude-ls": "^1.2.1",
-                               "type-check": "^0.4.0",
-                               "word-wrap": "^1.2.5"
-                       },
-                       "engines": {
-                               "node": ">= 0.8.0"
-                       }
-               },
-               "node_modules/p-limit": {
-                       "version": "3.1.0",
-                       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
-                       "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "yocto-queue": "^0.1.0"
-                       },
-                       "engines": {
-                               "node": ">=10"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
-                       }
-               },
-               "node_modules/p-locate": {
-                       "version": "5.0.0",
-                       "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
-                       "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "p-limit": "^3.0.2"
-                       },
-                       "engines": {
-                               "node": ">=10"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
-                       }
-               },
-               "node_modules/parent-module": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
-                       "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "callsites": "^3.0.0"
-                       },
-                       "engines": {
-                               "node": ">=6"
-                       }
-               },
-               "node_modules/path-exists": {
-                       "version": "4.0.0",
-                       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-                       "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=8"
-                       }
-               },
-               "node_modules/path-key": {
-                       "version": "3.1.1",
-                       "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-                       "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=8"
-                       }
-               },
-               "node_modules/picocolors": {
-                       "version": "1.1.1",
-                       "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
-                       "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
-                       "dev": true,
-                       "license": "ISC"
-               },
-               "node_modules/picomatch": {
-                       "version": "2.3.1",
-                       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-                       "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=8.6"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/jonschlinkert"
-                       }
-               },
-               "node_modules/postcss": {
-                       "version": "8.4.49",
-                       "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
-                       "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
-                       "dev": true,
-                       "funding": [
-                               {
-                                       "type": "opencollective",
-                                       "url": "https://opencollective.com/postcss/"
-                               },
-                               {
-                                       "type": "tidelift",
-                                       "url": "https://tidelift.com/funding/github/npm/postcss"
-                               },
-                               {
-                                       "type": "github",
-                                       "url": "https://github.com/sponsors/ai"
-                               }
-                       ],
-                       "license": "MIT",
-                       "dependencies": {
-                               "nanoid": "^3.3.7",
-                               "picocolors": "^1.1.1",
-                               "source-map-js": "^1.2.1"
-                       },
-                       "engines": {
-                               "node": "^10 || ^12 || >=14"
-                       }
-               },
-               "node_modules/postcss-load-config": {
-                       "version": "3.1.4",
-                       "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
-                       "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "lilconfig": "^2.0.5",
-                               "yaml": "^1.10.2"
-                       },
-                       "engines": {
-                               "node": ">= 10"
-                       },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/postcss/"
-                       },
-                       "peerDependencies": {
-                               "postcss": ">=8.0.9",
-                               "ts-node": ">=9.0.0"
-                       },
-                       "peerDependenciesMeta": {
-                               "postcss": {
-                                       "optional": true
-                               },
-                               "ts-node": {
-                                       "optional": true
-                               }
-                       }
-               },
-               "node_modules/postcss-safe-parser": {
-                       "version": "6.0.0",
-                       "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz",
-                       "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=12.0"
-                       },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/postcss/"
-                       },
-                       "peerDependencies": {
-                               "postcss": "^8.3.3"
-                       }
-               },
-               "node_modules/postcss-scss": {
-                       "version": "4.0.9",
-                       "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz",
-                       "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==",
-                       "dev": true,
-                       "funding": [
-                               {
-                                       "type": "opencollective",
-                                       "url": "https://opencollective.com/postcss/"
-                               },
-                               {
-                                       "type": "tidelift",
-                                       "url": "https://tidelift.com/funding/github/npm/postcss-scss"
-                               },
-                               {
-                                       "type": "github",
-                                       "url": "https://github.com/sponsors/ai"
-                               }
-                       ],
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=12.0"
-                       },
-                       "peerDependencies": {
-                               "postcss": "^8.4.29"
-                       }
-               },
-               "node_modules/postcss-selector-parser": {
-                       "version": "6.1.2",
-                       "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
-                       "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "cssesc": "^3.0.0",
-                               "util-deprecate": "^1.0.2"
-                       },
-                       "engines": {
-                               "node": ">=4"
-                       }
-               },
-               "node_modules/prelude-ls": {
-                       "version": "1.2.1",
-                       "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
-                       "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">= 0.8.0"
-                       }
-               },
-               "node_modules/prettier": {
-                       "version": "3.4.1",
-                       "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz",
-                       "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "bin": {
-                               "prettier": "bin/prettier.cjs"
-                       },
-                       "engines": {
-                               "node": ">=14"
-                       },
-                       "funding": {
-                               "url": "https://github.com/prettier/prettier?sponsor=1"
-                       }
-               },
-               "node_modules/prettier-plugin-svelte": {
-                       "version": "3.3.2",
-                       "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.3.2.tgz",
-                       "integrity": "sha512-kRPjH8wSj2iu+dO+XaUv4vD8qr5mdDmlak3IT/7AOgGIMRG86z/EHOLauFcClKEnOUf4A4nOA7sre5KrJD4Raw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "peerDependencies": {
-                               "prettier": "^3.0.0",
-                               "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0"
-                       }
-               },
-               "node_modules/punycode": {
-                       "version": "2.3.1",
-                       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
-                       "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=6"
-                       }
-               },
-               "node_modules/queue-microtask": {
-                       "version": "1.2.3",
-                       "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
-                       "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
-                       "dev": true,
-                       "funding": [
-                               {
-                                       "type": "github",
-                                       "url": "https://github.com/sponsors/feross"
-                               },
-                               {
-                                       "type": "patreon",
-                                       "url": "https://www.patreon.com/feross"
-                               },
-                               {
-                                       "type": "consulting",
-                                       "url": "https://feross.org/support"
-                               }
-                       ],
-                       "license": "MIT"
-               },
-               "node_modules/readdirp": {
-                       "version": "3.6.0",
-                       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
-                       "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "picomatch": "^2.2.1"
-                       },
-                       "engines": {
-                               "node": ">=8.10.0"
-                       }
-               },
-               "node_modules/resolve-from": {
-                       "version": "4.0.0",
-                       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-                       "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=4"
-                       }
-               },
-               "node_modules/reusify": {
-                       "version": "1.0.4",
-                       "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
-                       "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "iojs": ">=1.0.0",
-                               "node": ">=0.10.0"
-                       }
-               },
-               "node_modules/rollup": {
-                       "version": "4.27.4",
-                       "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.27.4.tgz",
-                       "integrity": "sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@types/estree": "1.0.6"
-                       },
-                       "bin": {
-                               "rollup": "dist/bin/rollup"
-                       },
-                       "engines": {
-                               "node": ">=18.0.0",
-                               "npm": ">=8.0.0"
-                       },
-                       "optionalDependencies": {
-                               "@rollup/rollup-android-arm-eabi": "4.27.4",
-                               "@rollup/rollup-android-arm64": "4.27.4",
-                               "@rollup/rollup-darwin-arm64": "4.27.4",
-                               "@rollup/rollup-darwin-x64": "4.27.4",
-                               "@rollup/rollup-freebsd-arm64": "4.27.4",
-                               "@rollup/rollup-freebsd-x64": "4.27.4",
-                               "@rollup/rollup-linux-arm-gnueabihf": "4.27.4",
-                               "@rollup/rollup-linux-arm-musleabihf": "4.27.4",
-                               "@rollup/rollup-linux-arm64-gnu": "4.27.4",
-                               "@rollup/rollup-linux-arm64-musl": "4.27.4",
-                               "@rollup/rollup-linux-powerpc64le-gnu": "4.27.4",
-                               "@rollup/rollup-linux-riscv64-gnu": "4.27.4",
-                               "@rollup/rollup-linux-s390x-gnu": "4.27.4",
-                               "@rollup/rollup-linux-x64-gnu": "4.27.4",
-                               "@rollup/rollup-linux-x64-musl": "4.27.4",
-                               "@rollup/rollup-win32-arm64-msvc": "4.27.4",
-                               "@rollup/rollup-win32-ia32-msvc": "4.27.4",
-                               "@rollup/rollup-win32-x64-msvc": "4.27.4",
-                               "fsevents": "~2.3.2"
-                       }
-               },
-               "node_modules/run-parallel": {
-                       "version": "1.2.0",
-                       "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
-                       "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
-                       "dev": true,
-                       "funding": [
-                               {
-                                       "type": "github",
-                                       "url": "https://github.com/sponsors/feross"
-                               },
-                               {
-                                       "type": "patreon",
-                                       "url": "https://www.patreon.com/feross"
-                               },
-                               {
-                                       "type": "consulting",
-                                       "url": "https://feross.org/support"
-                               }
-                       ],
-                       "license": "MIT",
-                       "dependencies": {
-                               "queue-microtask": "^1.2.2"
-                       }
-               },
-               "node_modules/sade": {
-                       "version": "1.8.1",
-                       "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
-                       "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "mri": "^1.1.0"
-                       },
-                       "engines": {
-                               "node": ">=6"
-                       }
-               },
-               "node_modules/sass": {
-                       "version": "1.77.6",
-                       "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz",
-                       "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "chokidar": ">=3.0.0 <4.0.0",
-                               "immutable": "^4.0.0",
-                               "source-map-js": ">=0.6.2 <2.0.0"
-                       },
-                       "bin": {
-                               "sass": "sass.js"
-                       },
-                       "engines": {
-                               "node": ">=14.0.0"
-                       }
-               },
-               "node_modules/semver": {
-                       "version": "7.6.3",
-                       "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
-                       "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
-                       "dev": true,
-                       "license": "ISC",
-                       "bin": {
-                               "semver": "bin/semver.js"
-                       },
-                       "engines": {
-                               "node": ">=10"
-                       }
-               },
-               "node_modules/set-cookie-parser": {
-                       "version": "2.7.1",
-                       "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
-                       "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/shebang-command": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
-                       "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "shebang-regex": "^3.0.0"
-                       },
-                       "engines": {
-                               "node": ">=8"
-                       }
-               },
-               "node_modules/shebang-regex": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
-                       "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=8"
-                       }
-               },
-               "node_modules/sirv": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz",
-                       "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@polka/url": "^1.0.0-next.24",
-                               "mrmime": "^2.0.0",
-                               "totalist": "^3.0.0"
-                       },
-                       "engines": {
-                               "node": ">=18"
-                       }
-               },
-               "node_modules/source-map-js": {
-                       "version": "1.2.1",
-                       "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
-                       "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
-                       "dev": true,
-                       "license": "BSD-3-Clause",
-                       "engines": {
-                               "node": ">=0.10.0"
-                       }
-               },
-               "node_modules/strip-json-comments": {
-                       "version": "3.1.1",
-                       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-                       "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=8"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
-                       }
-               },
-               "node_modules/supports-color": {
-                       "version": "7.2.0",
-                       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-                       "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "has-flag": "^4.0.0"
-                       },
-                       "engines": {
-                               "node": ">=8"
-                       }
-               },
-               "node_modules/svelte": {
-                       "version": "5.2.8",
-                       "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.2.8.tgz",
-                       "integrity": "sha512-VU7a01XwnFi6wXVkH5QY3FYXRZWrhsWZhaE8AYU6UeYZdslE3TFgQq6+HLrbMjOLkVhdKt74NGHYbhFeErQQ6g==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@ampproject/remapping": "^2.3.0",
-                               "@jridgewell/sourcemap-codec": "^1.5.0",
-                               "@types/estree": "^1.0.5",
-                               "acorn": "^8.12.1",
-                               "acorn-typescript": "^1.4.13",
-                               "aria-query": "^5.3.1",
-                               "axobject-query": "^4.1.0",
-                               "esm-env": "^1.0.0",
-                               "esrap": "^1.2.2",
-                               "is-reference": "^3.0.3",
-                               "locate-character": "^3.0.0",
-                               "magic-string": "^0.30.11",
-                               "zimmerframe": "^1.1.2"
-                       },
-                       "engines": {
-                               "node": ">=18"
-                       }
-               },
-               "node_modules/svelte-check": {
-                       "version": "4.1.0",
-                       "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.1.0.tgz",
-                       "integrity": "sha512-AflEZYqI578KuDZcpcorPSf597LStxlkN7XqXi38u09zlHODVKd7c+7OuubGzbhgGRUqNTdQCZ+Ga96iRXEf2g==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@jridgewell/trace-mapping": "^0.3.25",
-                               "chokidar": "^4.0.1",
-                               "fdir": "^6.2.0",
-                               "picocolors": "^1.0.0",
-                               "sade": "^1.7.4"
-                       },
-                       "bin": {
-                               "svelte-check": "bin/svelte-check"
-                       },
-                       "engines": {
-                               "node": ">= 18.0.0"
-                       },
-                       "peerDependencies": {
-                               "svelte": "^4.0.0 || ^5.0.0-next.0",
-                               "typescript": ">=5.0.0"
-                       }
-               },
-               "node_modules/svelte-check/node_modules/chokidar": {
-                       "version": "4.0.1",
-                       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz",
-                       "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "readdirp": "^4.0.1"
-                       },
-                       "engines": {
-                               "node": ">= 14.16.0"
-                       },
-                       "funding": {
-                               "url": "https://paulmillr.com/funding/"
-                       }
-               },
-               "node_modules/svelte-check/node_modules/fdir": {
-                       "version": "6.4.2",
-                       "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz",
-                       "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "peerDependencies": {
-                               "picomatch": "^3 || ^4"
-                       },
-                       "peerDependenciesMeta": {
-                               "picomatch": {
-                                       "optional": true
-                               }
-                       }
-               },
-               "node_modules/svelte-check/node_modules/picomatch": {
-                       "version": "4.0.2",
-                       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
-                       "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "peer": true,
-                       "engines": {
-                               "node": ">=12"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/jonschlinkert"
-                       }
-               },
-               "node_modules/svelte-check/node_modules/readdirp": {
-                       "version": "4.0.2",
-                       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz",
-                       "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">= 14.16.0"
-                       },
-                       "funding": {
-                               "type": "individual",
-                               "url": "https://paulmillr.com/funding/"
-                       }
-               },
-               "node_modules/svelte-eslint-parser": {
-                       "version": "0.43.0",
-                       "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.43.0.tgz",
-                       "integrity": "sha512-GpU52uPKKcVnh8tKN5P4UZpJ/fUDndmq7wfsvoVXsyP+aY0anol7Yqo01fyrlaWGMFfm4av5DyrjlaXdLRJvGA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "eslint-scope": "^7.2.2",
-                               "eslint-visitor-keys": "^3.4.3",
-                               "espree": "^9.6.1",
-                               "postcss": "^8.4.39",
-                               "postcss-scss": "^4.0.9"
-                       },
-                       "engines": {
-                               "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/ota-meshi"
-                       },
-                       "peerDependencies": {
-                               "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0"
-                       },
-                       "peerDependenciesMeta": {
-                               "svelte": {
-                                       "optional": true
-                               }
-                       }
-               },
-               "node_modules/svelte-eslint-parser/node_modules/eslint-scope": {
-                       "version": "7.2.2",
-                       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
-                       "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
-                       "dev": true,
-                       "license": "BSD-2-Clause",
-                       "dependencies": {
-                               "esrecurse": "^4.3.0",
-                               "estraverse": "^5.2.0"
-                       },
-                       "engines": {
-                               "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-                       },
-                       "funding": {
-                               "url": "https://opencollective.com/eslint"
-                       }
-               },
-               "node_modules/svelte-eslint-parser/node_modules/eslint-visitor-keys": {
-                       "version": "3.4.3",
-                       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
-                       "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
-                       "dev": true,
-                       "license": "Apache-2.0",
-                       "engines": {
-                               "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-                       },
-                       "funding": {
-                               "url": "https://opencollective.com/eslint"
-                       }
-               },
-               "node_modules/svelte-eslint-parser/node_modules/espree": {
-                       "version": "9.6.1",
-                       "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
-                       "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
-                       "dev": true,
-                       "license": "BSD-2-Clause",
-                       "dependencies": {
-                               "acorn": "^8.9.0",
-                               "acorn-jsx": "^5.3.2",
-                               "eslint-visitor-keys": "^3.4.1"
-                       },
-                       "engines": {
-                               "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-                       },
-                       "funding": {
-                               "url": "https://opencollective.com/eslint"
-                       }
-               },
-               "node_modules/tiny-glob": {
-                       "version": "0.2.9",
-                       "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
-                       "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "globalyzer": "0.1.0",
-                               "globrex": "^0.1.2"
-                       }
-               },
-               "node_modules/to-regex-range": {
-                       "version": "5.0.1",
-                       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-                       "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "is-number": "^7.0.0"
-                       },
-                       "engines": {
-                               "node": ">=8.0"
-                       }
-               },
-               "node_modules/totalist": {
-                       "version": "3.0.1",
-                       "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
-                       "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=6"
-                       }
-               },
-               "node_modules/ts-api-utils": {
-                       "version": "1.4.2",
-                       "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.2.tgz",
-                       "integrity": "sha512-ZF5gQIQa/UmzfvxbHZI3JXN0/Jt+vnAfAviNRAMc491laiK6YCLpCW9ft8oaCRFOTxCZtUTE6XB0ZQAe3olntw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=16"
-                       },
-                       "peerDependencies": {
-                               "typescript": ">=4.2.0"
-                       }
-               },
-               "node_modules/type-check": {
-                       "version": "0.4.0",
-                       "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
-                       "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "prelude-ls": "^1.2.1"
-                       },
-                       "engines": {
-                               "node": ">= 0.8.0"
-                       }
-               },
-               "node_modules/typescript": {
-                       "version": "5.7.2",
-                       "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
-                       "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
-                       "dev": true,
-                       "license": "Apache-2.0",
-                       "bin": {
-                               "tsc": "bin/tsc",
-                               "tsserver": "bin/tsserver"
-                       },
-                       "engines": {
-                               "node": ">=14.17"
-                       }
-               },
-               "node_modules/typescript-eslint": {
-                       "version": "8.16.0",
-                       "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.16.0.tgz",
-                       "integrity": "sha512-wDkVmlY6O2do4V+lZd0GtRfbtXbeD0q9WygwXXSJnC1xorE8eqyC2L1tJimqpSeFrOzRlYtWnUp/uzgHQOgfBQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "@typescript-eslint/eslint-plugin": "8.16.0",
-                               "@typescript-eslint/parser": "8.16.0",
-                               "@typescript-eslint/utils": "8.16.0"
-                       },
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
-                       },
-                       "peerDependencies": {
-                               "eslint": "^8.57.0 || ^9.0.0"
-                       },
-                       "peerDependenciesMeta": {
-                               "typescript": {
-                                       "optional": true
-                               }
-                       }
-               },
-               "node_modules/uri-js": {
-                       "version": "4.4.1",
-                       "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-                       "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-                       "dev": true,
-                       "license": "BSD-2-Clause",
-                       "dependencies": {
-                               "punycode": "^2.1.0"
-                       }
-               },
-               "node_modules/util-deprecate": {
-                       "version": "1.0.2",
-                       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-                       "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
-                       "dev": true,
-                       "license": "MIT"
-               },
-               "node_modules/vite": {
-                       "version": "5.4.11",
-                       "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz",
-                       "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "esbuild": "^0.21.3",
-                               "postcss": "^8.4.43",
-                               "rollup": "^4.20.0"
-                       },
-                       "bin": {
-                               "vite": "bin/vite.js"
-                       },
-                       "engines": {
-                               "node": "^18.0.0 || >=20.0.0"
-                       },
-                       "funding": {
-                               "url": "https://github.com/vitejs/vite?sponsor=1"
-                       },
-                       "optionalDependencies": {
-                               "fsevents": "~2.3.3"
-                       },
-                       "peerDependencies": {
-                               "@types/node": "^18.0.0 || >=20.0.0",
-                               "less": "*",
-                               "lightningcss": "^1.21.0",
-                               "sass": "*",
-                               "sass-embedded": "*",
-                               "stylus": "*",
-                               "sugarss": "*",
-                               "terser": "^5.4.0"
-                       },
-                       "peerDependenciesMeta": {
-                               "@types/node": {
-                                       "optional": true
-                               },
-                               "less": {
-                                       "optional": true
-                               },
-                               "lightningcss": {
-                                       "optional": true
-                               },
-                               "sass": {
-                                       "optional": true
-                               },
-                               "sass-embedded": {
-                                       "optional": true
-                               },
-                               "stylus": {
-                                       "optional": true
-                               },
-                               "sugarss": {
-                                       "optional": true
-                               },
-                               "terser": {
-                                       "optional": true
-                               }
-                       }
-               },
-               "node_modules/vitefu": {
-                       "version": "1.0.4",
-                       "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.4.tgz",
-                       "integrity": "sha512-y6zEE3PQf6uu/Mt6DTJ9ih+kyJLr4XcSgHR2zUkM8SWDhuixEJxfJ6CZGMHh1Ec3vPLoEA0IHU5oWzVqw8ulow==",
-                       "dev": true,
-                       "license": "MIT",
-                       "workspaces": [
-                               "tests/deps/*",
-                               "tests/projects/*"
-                       ],
-                       "peerDependencies": {
-                               "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0"
-                       },
-                       "peerDependenciesMeta": {
-                               "vite": {
-                                       "optional": true
-                               }
-                       }
-               },
-               "node_modules/which": {
-                       "version": "2.0.2",
-                       "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-                       "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-                       "dev": true,
-                       "license": "ISC",
-                       "dependencies": {
-                               "isexe": "^2.0.0"
-                       },
-                       "bin": {
-                               "node-which": "bin/node-which"
-                       },
-                       "engines": {
-                               "node": ">= 8"
-                       }
-               },
-               "node_modules/word-wrap": {
-                       "version": "1.2.5",
-                       "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
-                       "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=0.10.0"
-                       }
-               },
-               "node_modules/yaml": {
-                       "version": "1.10.2",
-                       "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
-                       "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
-                       "dev": true,
-                       "license": "ISC",
-                       "engines": {
-                               "node": ">= 6"
-                       }
-               },
-               "node_modules/yocto-queue": {
-                       "version": "0.1.0",
-                       "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
-                       "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=10"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
-                       }
-               },
-               "node_modules/zimmerframe": {
-                       "version": "1.1.2",
-                       "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz",
-                       "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==",
-                       "dev": true,
-                       "license": "MIT"
-               }
-       }
-}
diff --git a/dailytxt/package.json b/dailytxt/package.json
deleted file mode 100644 (file)
index 09329b4..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-{
-       "name": "dailytxt",
-       "version": "0.0.1",
-       "type": "module",
-       "scripts": {
-               "dev": "vite dev",
-               "build": "vite build",
-               "preview": "vite preview",
-               "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
-               "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
-               "format": "prettier --write .",
-               "lint": "prettier --check . && eslint ."
-       },
-       "devDependencies": {
-               "@sveltejs/adapter-auto": "^3.0.0",
-               "@sveltejs/adapter-static": "^3.0.6",
-               "@sveltejs/kit": "^2.0.0",
-               "@sveltejs/vite-plugin-svelte": "^4.0.0",
-               "@types/bootstrap": "^5.2.10",
-               "eslint": "^9.7.0",
-               "eslint-config-prettier": "^9.1.0",
-               "eslint-plugin-svelte": "^2.36.0",
-               "globals": "^15.0.0",
-               "prettier": "^3.3.2",
-               "prettier-plugin-svelte": "^3.2.6",
-               "sass": "1.77.6",
-               "svelte": "^5.0.0",
-               "svelte-check": "^4.0.0",
-               "typescript": "^5.0.0",
-               "typescript-eslint": "^8.0.0",
-               "vite": "^5.0.3"
-       },
-       "dependencies": {
-               "@popperjs/core": "^2.11.8",
-               "bootstrap": "^5.3.3"
-       }
-}
diff --git a/dailytxt/src/app.d.ts b/dailytxt/src/app.d.ts
deleted file mode 100644 (file)
index da08e6d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-// See https://svelte.dev/docs/kit/types#app.d.ts
-// for information about these interfaces
-declare global {
-       namespace App {
-               // interface Error {}
-               // interface Locals {}
-               // interface PageData {}
-               // interface PageState {}
-               // interface Platform {}
-       }
-}
-
-export {};
diff --git a/dailytxt/src/app.html b/dailytxt/src/app.html
deleted file mode 100644 (file)
index 1391f88..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<!doctype html>
-<html lang="en">
-       <head>
-               <meta charset="utf-8" />
-               <link rel="icon" href="%sveltekit.assets%/favicon.svg" />
-               <meta name="viewport" content="width=device-width, initial-scale=1" />
-               %sveltekit.head%
-       </head>
-       <body data-sveltekit-preload-data="hover">
-               <div style="display: contents">%sveltekit.body%</div>
-       </body>
-</html>
diff --git a/dailytxt/src/lib/assets/locked_heart_with_keyhole.svg b/dailytxt/src/lib/assets/locked_heart_with_keyhole.svg
deleted file mode 100644 (file)
index 0e58a3c..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   width="200mm"
-   height="200mm"
-   viewBox="0 0 200 200"
-   version="1.1"
-   id="svg8"
-   sodipodi:docname="locked_heart_with_keyhole.svg"
-   inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
-   inkscape:export-filename="/home/marco/Bilder/DailyTxT_Logo_2020/locked_heart_512.png"
-   inkscape:export-xdpi="65.024002"
-   inkscape:export-ydpi="65.024002"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:dc="http://purl.org/dc/elements/1.1/">
-  <defs
-     id="defs2">
-    <inkscape:path-effect
-       effect="mirror_symmetry"
-       start_point="100.22607,47.520526"
-       end_point="100.22607,78.791061"
-       center_point="100.22607,63.155794"
-       id="path-effect912"
-       is_visible="true"
-       lpeversion="1"
-       mode="free"
-       discard_orig_path="false"
-       fuse_paths="false"
-       oposite_fuse="false"
-       split_items="false" />
-    <inkscape:path-effect
-       effect="bspline"
-       id="path-effect910"
-       is_visible="true"
-       lpeversion="1"
-       weight="33.333333"
-       steps="2"
-       helper_size="0"
-       apply_no_weight="true"
-       apply_with_weight="true"
-       only_selected="false" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.7"
-     inkscape:cx="464.28571"
-     inkscape:cy="371.42857"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     inkscape:document-rotation="0"
-     showgrid="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1017"
-     inkscape:window-x="1912"
-     inkscape:window-y="317"
-     inkscape:window-maximized="1"
-     inkscape:pagecheckerboard="false"
-     inkscape:showpageshadow="false"
-     showborder="true"
-     inkscape:deskcolor="#d1d1d1" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Ebene 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <path
-       id="rect18"
-       style="fill:#f57c00;fill-opacity:1;fill-rule:evenodd;stroke-width:0.452355"
-       d="M 2.3677141,52.553119 A 58.397915,58.397915 0 0 0 17.482506,108.96152 l 82.587234,82.58722 82.58661,-82.5866 A 58.397915,58.397915 0 0 0 197.77114,52.553748 58.397915,58.397915 0 0 0 156.47752,11.26014 58.397915,58.397915 0 0 0 100.06911,26.374932 58.397915,58.397915 0 0 0 43.661325,11.259506 58.397915,58.397915 0 0 0 2.3677141,52.553119 Z" />
-    <rect
-       style="fill:#1565c0;fill-opacity:1;stroke-width:0.287211"
-       id="rect906"
-       width="69.861923"
-       height="63.937119"
-       x="65.304489"
-       y="75.826767"
-       ry="6.7518868" />
-    <path
-       style="fill:none;stroke:#1565c0;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 74.247469,78.791061 c -0.09578,-7.857458 -0.191563,-15.715105 1.676123,-20.927074 1.867685,-5.211969 5.698573,-7.777653 10.076426,-9.060557 4.377854,-1.282904 9.302034,-1.282904 14.226052,-1.282904 m 25.9786,31.270535 c 0.0958,-7.857458 0.19156,-15.715105 -1.67612,-20.927074 -1.86769,-5.211969 -5.69857,-7.777653 -10.07643,-9.060557 -4.37785,-1.282904 -9.30203,-1.282904 -14.22605,-1.282904"
-       id="path908"
-       inkscape:path-effect="#path-effect910;#path-effect912"
-       inkscape:original-d="M 74.247469,78.791061 C 74.151923,70.9336 74.05614,63.075953 73.960118,55.217885 c 3.831336,-2.565603 7.662223,-5.131288 11.493119,-7.697359 4.924635,2.22e-4 9.848815,2.22e-4 14.772833,0"
-       transform="matrix(0.90263587,0,0,1.0927354,9.7528706,-6.0621084)"
-       sodipodi:nodetypes="cccc"
-       class="UnoptimicedTransforms" />
-    <g
-       id="g940"
-       transform="translate(0,-1.1442912)">
-      <circle
-         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.44;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path934"
-         cx="100.3775"
-         cy="101.77544"
-         r="8.1988697" />
-      <rect
-         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.39629;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="rect936"
-         width="8.3338318"
-         height="18.939137"
-         x="96.238655"
-         y="104.36925"
-         ry="4.6886554" />
-    </g>
-  </g>
-</svg>
diff --git a/dailytxt/src/lib/index.ts b/dailytxt/src/lib/index.ts
deleted file mode 100644 (file)
index 856f2b6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-// place files you want to import through the `$lib` alias in this folder.
diff --git a/dailytxt/src/routes/+layout.js b/dailytxt/src/routes/+layout.js
deleted file mode 100644 (file)
index e9c9da3..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-export const ssr = false;
-//export const prerender = false;
-
-/**
- * @param {{ url: URL }} param0
- */
-export const load = ({ url }) => {
-  const { pathname } = url
-
-  return {
-    pathname
-  }
-}
\ No newline at end of file
diff --git a/dailytxt/src/routes/+layout.svelte b/dailytxt/src/routes/+layout.svelte
deleted file mode 100644 (file)
index d091f91..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-<script>
-       import { fade, blur, slide } from 'svelte/transition';
-
-       export let data;
-       let inDuration = 150;
-       let outDuration = 150;
-</script>
-
-<main class="d-flex flex-column">
-       <nav class="navbar navbar-expand-lg bg-body-tertiary">
-               <div class="container-fluid">
-                       <a class="nav-item" href="/">Navbar</a>
-                       <a class="nav-item" href="/login">Navbar</a>
-               </div>
-       </nav>
-
-       <div class="wrapper h-100">
-               {#key data.pathname}
-                       <div
-                               class="transition-wrapper h-100"
-                               out:blur={{ duration: outDuration }}
-                               in:blur={{ duration: inDuration, delay: outDuration }}
-                       >
-                               <slot />
-                       </div>
-               {/key}
-       </div>
-</main>
-
-<!-- in:crossfade={{ duration: inDuration, delay: outDuration }}
-                               out:crossfade={{ duration: outDuration }} -->
-
-<style>
-       main {
-               height: 100vh;
-       }
-
-       .wrapper {
-               position: relative; /* Ensure the wrapper is the positioning context */
-       }
-
-       .transition-wrapper {
-               position: absolute; /* Ensure the transition wrapper does not occupy space */
-               top: 0;
-               left: 0;
-               width: 100%;
-               height: 100%;
-       }
-</style>
diff --git a/dailytxt/src/routes/+page.svelte b/dailytxt/src/routes/+page.svelte
deleted file mode 100644 (file)
index fccb823..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<script>
-       import '../scss/styles.scss';
-       //import * as bootstrap from 'bootstrap';
-       import { Tooltip } from 'bootstrap';
-
-       //on mount
-       import { onMount } from 'svelte';
-       onMount(() => {
-               const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]');
-               const tooltipList = [...tooltipTriggerList].map(
-                       (tooltipTriggerEl) => new Tooltip(tooltipTriggerEl)
-               );
-       });
-</script>
-
-<h1>Welcome to SvelteKit</h1>
-<p>Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation</p>
-<button
-       type="button"
-       class="btn btn-primary"
-       data-bs-toggle="tooltip"
-       data-bs-title="Default tooltip">Primary</button
->
diff --git a/dailytxt/src/routes/login/+page.svelte b/dailytxt/src/routes/login/+page.svelte
deleted file mode 100644 (file)
index 5688321..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-<script>
-       import img from '$lib/assets/locked_heart_with_keyhole.svg';
-</script>
-
-<div class="logo-login-flex d-flex justify-content-center align-items-center flex-row h-100">
-       <div class="logo-wrapper d-flex flex-column align-items-center">
-               <img id="largeLogo" src={img} alt="locked heart with keyhole" />
-               <p>DailyTxT</p>
-       </div>
-       <div class="login-wrapper">
-               <div class="accordion" id="loginAccordion">
-                       <div class="accordion-item">
-                               <h2 class="accordion-header">
-                                       <button
-                                               class="accordion-button"
-                                               type="button"
-                                               data-bs-toggle="collapse"
-                                               data-bs-target="#collapseOne"
-                                               aria-expanded="true"
-                                               aria-controls="collapseOne"
-                                       >
-                                               Login
-                                       </button>
-                               </h2>
-                               <div
-                                       id="collapseOne"
-                                       class="accordion-collapse collapse show"
-                                       data-bs-parent="#loginAccordion"
-                               >
-                                       <div class="accordion-body">
-                                               <form action="">
-                                                       <div class="form-floating mb-3">
-                                                               <input type="text" class="form-control" id="loginUsername" placeholder="Username" />
-                                                               <label for="loginUsername">Username</label>
-                                                       </div>
-                                                       <div class="form-floating mb-3">
-                                                               <input
-                                                                       type="password"
-                                                                       class="form-control"
-                                                                       id="loginPassword"
-                                                                       placeholder="Password"
-                                                               />
-                                                               <label for="loginPassword">Password</label>
-                                                       </div>
-                                                       <div class="d-flex justify-content-center">
-                                                               <button type="submit" class="btn btn-primary">Login</button>
-                                                       </div>
-                                               </form>
-                                       </div>
-                               </div>
-                       </div>
-                       <div class="accordion-item">
-                               <h2 class="accordion-header">
-                                       <button
-                                               class="accordion-button collapsed"
-                                               type="button"
-                                               data-bs-toggle="collapse"
-                                               data-bs-target="#collapseTwo"
-                                               aria-expanded="false"
-                                               aria-controls="collapseTwo"
-                                       >
-                                               Registrierung
-                                       </button>
-                               </h2>
-                               <div id="collapseTwo" class="accordion-collapse collapse" data-bs-parent="#loginAccordion">
-                                       <div class="accordion-body">
-                                               <form action="">
-                                                       <div class="form-floating mb-3">
-                                                               <input
-                                                                       type="text"
-                                                                       class="form-control"
-                                                                       id="registerUsername"
-                                                                       placeholder="Username"
-                                                               />
-                                                               <label for="registerUsername">Username</label>
-                                                       </div>
-                                                       <div class="form-floating mb-3">
-                                                               <input
-                                                                       type="password"
-                                                                       class="form-control"
-                                                                       id="registerPassword"
-                                                                       placeholder="Password"
-                                                               />
-                                                               <label for="registerPassword">Password</label>
-                                                       </div>
-                                                       <div class="form-floating mb-3">
-                                                               <input
-                                                                       type="password"
-                                                                       class="form-control"
-                                                                       id="registerPassword2"
-                                                                       placeholder="Password bestätigen"
-                                                               />
-                                                               <label for="registerPassword2">Password bestätigen</label>
-                                                       </div>
-                                                       <div class="d-flex justify-content-center">
-                                                               <button type="submit" class="btn btn-primary">Registrieren</button>
-                                                       </div>
-                                               </form>
-                                       </div>
-                               </div>
-                       </div>
-               </div>
-       </div>
-</div>
-
-<style>
-       .logo-wrapper {
-               width: 50%;
-       }
-
-       #largeLogo {
-               width: 40%;
-               min-height: 10%;
-       }
-
-       .login-wrapper {
-               width: 50%;
-       }
-
-       #loginAccordion {
-               width: 70%;
-       }
-
-       @media screen and (max-width: 768px) {
-               .logo-login-flex {
-                       flex-direction: column !important;
-               }
-
-               .login-wrapper {
-                       min-width: 50%;
-                       max-width: 75%;
-               }
-       }
-</style>
diff --git a/dailytxt/src/scss/styles.scss b/dailytxt/src/scss/styles.scss
deleted file mode 100644 (file)
index ea4b383..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-// Import all of Bootstrap's CSS
-@import "bootstrap/scss/bootstrap";
\ No newline at end of file
diff --git a/dailytxt/static/favicon.svg b/dailytxt/static/favicon.svg
deleted file mode 100644 (file)
index 9bfbb99..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   width="200mm"
-   height="200mm"
-   viewBox="0 0 200 200"
-   version="1.1"
-   id="svg8"
-   sodipodi:docname="locked_heart.svg"
-   inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
-   inkscape:export-filename="/home/marco/Bilder/DailyTxT_Logo_2020/locked_heart_512.png"
-   inkscape:export-xdpi="65.024002"
-   inkscape:export-ydpi="65.024002"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:dc="http://purl.org/dc/elements/1.1/">
-  <defs
-     id="defs2">
-    <inkscape:path-effect
-       effect="mirror_symmetry"
-       start_point="100.22607,47.520526"
-       end_point="100.22607,78.791061"
-       center_point="100.22607,63.155794"
-       id="path-effect912"
-       is_visible="true"
-       lpeversion="1"
-       mode="free"
-       discard_orig_path="false"
-       fuse_paths="false"
-       oposite_fuse="false"
-       split_items="false" />
-    <inkscape:path-effect
-       effect="bspline"
-       id="path-effect910"
-       is_visible="true"
-       lpeversion="1"
-       weight="33.333333"
-       steps="2"
-       helper_size="0"
-       apply_no_weight="true"
-       apply_with_weight="true"
-       only_selected="false" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.7"
-     inkscape:cx="464.28571"
-     inkscape:cy="371.42857"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     inkscape:document-rotation="0"
-     showgrid="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1017"
-     inkscape:window-x="1912"
-     inkscape:window-y="317"
-     inkscape:window-maximized="1"
-     inkscape:pagecheckerboard="false"
-     inkscape:showpageshadow="false"
-     showborder="true"
-     inkscape:deskcolor="#d1d1d1" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Ebene 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <path
-       id="rect18"
-       style="fill:#f57c00;fill-opacity:1;fill-rule:evenodd;stroke-width:0.452355"
-       d="M 2.3677141,52.553119 A 58.397915,58.397915 0 0 0 17.482506,108.96152 l 82.587234,82.58722 82.58661,-82.5866 A 58.397915,58.397915 0 0 0 197.77114,52.553748 58.397915,58.397915 0 0 0 156.47752,11.26014 58.397915,58.397915 0 0 0 100.06911,26.374932 58.397915,58.397915 0 0 0 43.661325,11.259506 58.397915,58.397915 0 0 0 2.3677141,52.553119 Z" />
-    <rect
-       style="fill:#1565c0;fill-opacity:1;stroke-width:0.287211"
-       id="rect906"
-       width="69.861923"
-       height="63.937119"
-       x="65.304489"
-       y="75.826767"
-       ry="6.7518868" />
-    <path
-       style="fill:none;stroke:#1565c0;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 74.247469,78.791061 c -0.09578,-7.857458 -0.191563,-15.715105 1.676123,-20.927074 1.867685,-5.211969 5.698573,-7.777653 10.076426,-9.060557 4.377854,-1.282904 9.302034,-1.282904 14.226052,-1.282904 m 25.9786,31.270535 c 0.0958,-7.857458 0.19156,-15.715105 -1.67612,-20.927074 -1.86769,-5.211969 -5.69857,-7.777653 -10.07643,-9.060557 -4.37785,-1.282904 -9.30203,-1.282904 -14.22605,-1.282904"
-       id="path908"
-       inkscape:path-effect="#path-effect910;#path-effect912"
-       inkscape:original-d="M 74.247469,78.791061 C 74.151923,70.9336 74.05614,63.075953 73.960118,55.217885 c 3.831336,-2.565603 7.662223,-5.131288 11.493119,-7.697359 4.924635,2.22e-4 9.848815,2.22e-4 14.772833,0"
-       transform="matrix(0.90263587,0,0,1.0927354,9.7528706,-6.0621084)"
-       sodipodi:nodetypes="cccc"
-       class="UnoptimicedTransforms" />
-  </g>
-</svg>
diff --git a/dailytxt/svelte.config.js b/dailytxt/svelte.config.js
deleted file mode 100644 (file)
index 2eb0235..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-//import adapter from '@sveltejs/adapter-auto';
-import adapter from '@sveltejs/adapter-static';
-import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
-
-/** @type {import('@sveltejs/kit').Config} */
-const config = {
-       // Consult https://svelte.dev/docs/kit/integrations
-       // for more information about preprocessors
-       preprocess: vitePreprocess(),
-
-       /*kit: {
-               // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
-               // If your environment is not supported, or you settled on a specific environment, switch out the adapter.
-               // See https://svelte.dev/docs/kit/adapters for more information about adapters.
-               adapter: adapter()
-       }*/
-       kit: {
-               adapter: adapter({
-                       // default options are shown. On some platforms
-                       // these options are set automatically — see below
-                       pages: 'build',
-                       assets: 'build',
-                       fallback: undefined,
-                       precompress: false,
-                       strict: true
-               })
-       }
-};
-
-export default config;
diff --git a/dailytxt/tsconfig.json b/dailytxt/tsconfig.json
deleted file mode 100644 (file)
index 0b2d886..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "extends": "./.svelte-kit/tsconfig.json",
-       "compilerOptions": {
-               "allowJs": true,
-               "checkJs": true,
-               "esModuleInterop": true,
-               "forceConsistentCasingInFileNames": true,
-               "resolveJsonModule": true,
-               "skipLibCheck": true,
-               "sourceMap": true,
-               "strict": true,
-               "moduleResolution": "bundler"
-       }
-       // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias
-       // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files
-       //
-       // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
-       // from the referenced tsconfig.json - TypeScript does not merge them in
-}
diff --git a/dailytxt/vite.config.ts b/dailytxt/vite.config.ts
deleted file mode 100644 (file)
index bbf8c7d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-import { sveltekit } from '@sveltejs/kit/vite';
-import { defineConfig } from 'vite';
-
-export default defineConfig({
-       plugins: [sveltekit()]
-});
index c7e66decbde5881bebdeec2ddb9ad038de8c2272..c415332e13674abb9352d4270e72407cd5be583d 100644 (file)
@@ -2,6 +2,17 @@
        import img from '$lib/assets/locked_heart_with_keyhole.svg';
        import { onMount } from 'svelte';
        import axios from 'axios';
+       import { dev } from '$app/environment';
+
+       let show_warning_empty_fields = $state(false);
+       let show_warning_passwords_do_not_match = $state(false);
+
+       let show_registration_success = $state(false);
+       let show_registration_failed = $state(false);
+       let show_registration_failed_with_message = $state(false);
+       let registration_failed_message = $state('');
+
+       let API_URL = dev ? 'http://localhost:8000' : window.location.pathname.replace(/\/+$/, '');
 
        function handleLogin(event) {
                event.preventDefault();
@@ -9,7 +20,7 @@
                const password = document.getElementById('loginPassword').value;
 
                axios
-                       .post('http://localhost:8000/users/login', { username, password })
+                       .post(API_URL + '/users/login', { username, password })
                        .then((response) => {
                                console.log(response);
                        })
        }
 
        function handleRegister(event) {
+               show_warning_empty_fields = false;
+               show_warning_passwords_do_not_match = false;
+               show_registration_success = false;
+               show_registration_failed = false;
+               show_registration_failed_with_message = false;
+
                event.preventDefault();
                const username = document.getElementById('registerUsername').value;
                const password = document.getElementById('registerPassword').value;
                const password2 = document.getElementById('registerPassword2').value;
-               console.log('Register attempt:', { username, password, password2 });
-               // Add your registration logic here
+
+               if (username === '' || password === '') {
+                       show_warning_empty_fields = true;
+                       console.error('Please fill out all fields');
+                       return;
+               }
+
+               if (password !== password2) {
+                       show_warning_passwords_do_not_match = true;
+                       console.error('Passwords do not match');
+                       return;
+               }
+
+               axios
+                       .post(API_URL + '/users/register', { username, password })
+                       .then((response) => {
+                               if (response.data.success) {
+                                       show_registration_success = true;
+                                       console.log('Registration successful');
+                               } else {
+                                       show_registration_failed = true;
+                                       console.error('Registration failed');
+                               }
+                       })
+                       .catch((error) => {
+                               console.error(error.response.data.detail);
+                               registration_failed_message = error.response.data.detail;
+                               show_registration_failed_with_message = true;
+                       });
        }
 </script>
 
                                        data-bs-parent="#loginAccordion"
                                >
                                        <div class="accordion-body">
-                                               <form on:submit={handleLogin}>
+                                               <form onsubmit={handleLogin}>
                                                        <div class="form-floating mb-3">
                                                                <!-- svelte-ignore a11y_autofocus -->
                                                                <input
                                </h2>
                                <div id="collapseTwo" class="accordion-collapse collapse" data-bs-parent="#loginAccordion">
                                        <div class="accordion-body">
-                                               <form on:submit={handleRegister}>
+                                               <form onsubmit={handleRegister}>
                                                        <div class="form-floating mb-3">
                                                                <input
                                                                        type="text"
                                                                />
                                                                <label for="registerPassword2">Password bestätigen</label>
                                                        </div>
+                                                       {#if show_registration_failed_with_message}
+                                                               <div class="alert alert-danger" role="alert">
+                                                                       Registrierung fehlgeschlagen!<br />
+                                                                       Fehlermeldung: <i>{registration_failed_message}</i>
+                                                               </div>
+                                                       {/if}
+                                                       {#if show_registration_failed}
+                                                               <div class="alert alert-danger" role="alert">
+                                                                       Registrierung fehlgeschlagen - bitte Fehlermeldungen analysieren!
+                                                               </div>
+                                                       {/if}
+                                                       {#if show_registration_success}
+                                                               <div class="alert alert-success" role="alert">
+                                                                       Registrierung erfolgreich - bitte einloggen!
+                                                               </div>
+                                                       {/if}
+                                                       {#if show_warning_empty_fields}
+                                                               <div class="alert alert-danger" role="alert">
+                                                                       Eingabefelder dürfen nicht leer sein!
+                                                               </div>
+                                                       {/if}
+                                                       {#if show_warning_passwords_do_not_match}
+                                                               <div class="alert alert-danger" role="alert">Passwörter stimmen nicht überein!</div>
+                                                       {/if}
                                                        <div class="d-flex justify-content-center">
                                                                <button type="submit" class="btn btn-primary">Registrieren</button>
                                                        </div>
git clone https://git.99rst.org/PROJECT