From eea6e595f678bf1a6904219f11937d51ce88bce0 Mon Sep 17 00:00:00 2001 From: sevelinCA Date: Thu, 20 Jun 2024 14:17:42 +0200 Subject: [PATCH 001/174] Implement frontend authentication and authorization --- .gitignore | 2 + package-lock.json | 898 ++++++++++++++++++++++++++- package.json | 15 +- src/App.tsx | 4 +- src/Components/dashboard/Sidebar.tsx | 114 ++++ src/Components/modal/EmailSent.tsx | 18 + src/Constants/AuthButton.tsx | 20 + src/Constants/Input.tsx | 25 + src/Lib/AuthKitStore.tsx | 12 + src/Lib/VerifyEmail.tsx | 33 + src/Lib/authgoogle.tsx | 53 ++ src/Lib/navlinks.tsx | 59 ++ src/Portal/Buyer.tsx | 18 + src/Portal/Seller.tsx | 25 + src/Portal/admin.tsx | 22 +- src/Redux/features/ApiSlice.tsx | 10 + src/Redux/features/AuthSlice.tsx | 46 +- src/Redux/store.tsx | 6 +- src/Routes/index.tsx | 40 ++ src/index.html | 36 +- src/index.tsx | 19 +- src/pages/SignUp.tsx | 135 ++++ src/pages/Signin.tsx | 155 +++++ src/pages/Users.tsx | 9 + src/pages/VerifyCode.tsx | 117 ++++ src/services/Logout.tsx | 12 + tailwind.config.js | 28 +- webpack.config.js | 100 +-- 28 files changed, 1922 insertions(+), 109 deletions(-) create mode 100644 src/Components/dashboard/Sidebar.tsx create mode 100644 src/Components/modal/EmailSent.tsx create mode 100644 src/Constants/AuthButton.tsx create mode 100644 src/Constants/Input.tsx create mode 100644 src/Lib/AuthKitStore.tsx create mode 100644 src/Lib/VerifyEmail.tsx create mode 100644 src/Lib/authgoogle.tsx create mode 100644 src/Lib/navlinks.tsx create mode 100644 src/Portal/Buyer.tsx create mode 100644 src/Portal/Seller.tsx create mode 100644 src/Redux/features/ApiSlice.tsx create mode 100644 src/pages/SignUp.tsx create mode 100644 src/pages/Signin.tsx create mode 100644 src/pages/Users.tsx create mode 100644 src/pages/VerifyCode.tsx create mode 100644 src/services/Logout.tsx diff --git a/.gitignore b/.gitignore index 42502664..ff4285b5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ node_modules/ .env +.env.production +.env.development ##node_modules diff --git a/package-lock.json b/package-lock.json index ef2458f2..43b5b4f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,19 +9,23 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@auth-kit/react-router": "^3.1.3", "@reduxjs/toolkit": "^2.2.5", "@types/js-cookie": "^3.0.6", "@types/react": "^18.3.3", + "@types/react-auth-kit": "^1.2.1", "@types/react-dom": "^18.3.0", "@types/react-lazy-load-image-component": "^1.6.4", "@types/react-redux": "^7.1.33", + "@types/react-router-dom": "^5.3.3", "autoprefixer": "^10.4.19", "axios": "^1.7.2", - "dotenv": "^16.4.5", + "crypto-browserify": "^3.12.0", "js-cookie": "^3.0.5", "jwt-decode": "^4.0.0", "postcss": "^8.4.38", "react": "^18.3.1", + "react-auth-kit": "^3.1.3", "react-dom": "^18.3.1", "react-hook-form": "^7.52.0", "react-icons": "^5.2.1", @@ -38,10 +42,14 @@ "@babel/preset-env": "^7.24.7", "@babel/preset-react": "^7.24.7", "@babel/preset-typescript": "^7.24.7", + "@types/dotenv": "^8.2.0", + "@types/jwt-decode": "^3.1.0", "@typescript-eslint/eslint-plugin": "^7.13.1", "@typescript-eslint/parser": "^7.13.1", "babel-loader": "^9.1.3", "css-loader": "^7.1.2", + "dotenv": "^16.4.5", + "dotenv-webpack": "^8.1.0", "eslint": "^8.57.0", "eslint-config-airbnb": "^19.0.4", "eslint-plugin-import": "^2.29.1", @@ -50,6 +58,7 @@ "eslint-plugin-react-hooks": "^4.6.2", "file-loader": "^6.2.0", "html-webpack-plugin": "^5.6.0", + "http-proxy-middleware": "^3.0.0", "postcss-loader": "^8.1.1", "style-loader": "^4.0.0", "tailwindcss": "^3.4.4", @@ -85,6 +94,18 @@ "node": ">=6.0.0" } }, + "node_modules/@auth-kit/react-router": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@auth-kit/react-router/-/react-router-3.1.3.tgz", + "integrity": "sha512-6T4BbfVkspthhzZaY5p8Huq2m5Q/qKb5DTVjtMRWzlRQP99X01HzQwN1XMyeN1NX2Z/ln+/YJwFRt8S9DyKbbg==", + "dependencies": { + "react-auth-kit": "^3.1.3" + }, + "peerDependencies": { + "react": ">=16.8.0 || ^17.x || ^18.x", + "react-router": ">=6.x" + } + }, "node_modules/@babel/code-frame": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", @@ -2440,6 +2461,156 @@ "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "dev": true }, + "node_modules/@next/env": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.4.tgz", + "integrity": "sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==", + "peer": true + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.4.tgz", + "integrity": "sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz", + "integrity": "sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz", + "integrity": "sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz", + "integrity": "sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz", + "integrity": "sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz", + "integrity": "sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz", + "integrity": "sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz", + "integrity": "sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.4.tgz", + "integrity": "sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2521,6 +2692,22 @@ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "peer": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "peer": true, + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", @@ -2559,6 +2746,16 @@ "@types/node": "*" } }, + "node_modules/@types/dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw==", + "deprecated": "This is a stub types definition. dotenv provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "dotenv": "*" + } + }, "node_modules/@types/eslint": { "version": "8.56.10", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", @@ -2609,6 +2806,11 @@ "@types/send": "*" } }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" + }, "node_modules/@types/hoist-non-react-statics": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", @@ -2656,6 +2858,16 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/jwt-decode": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/jwt-decode/-/jwt-decode-3.1.0.tgz", + "integrity": "sha512-tthwik7TKkou3mVnBnvVuHnHElbjtdbM63pdBCbZTirCt3WAdM73Y79mOri7+ljsS99ZVwUFZHLMxJuJnv/z1w==", + "deprecated": "This is a stub types definition. jwt-decode provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "jwt-decode": "*" + } + }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", @@ -2706,6 +2918,15 @@ "csstype": "^3.0.2" } }, + "node_modules/@types/react-auth-kit": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/react-auth-kit/-/react-auth-kit-1.2.1.tgz", + "integrity": "sha512-Jlo0PJsXVEuUxd2gYyE6fLQD5dPRfE1uLgcvPz5gr5+oF72FIBqxN0UcplhCUHG5QRe5zS3U2kBufi/K71DjLA==", + "deprecated": "This is a stub types definition. react-auth-kit provides its own type definitions, so you do not need this installed.", + "dependencies": { + "react-auth-kit": "*" + } + }, "node_modules/@types/react-dom": { "version": "18.3.0", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", @@ -2742,6 +2963,25 @@ "@babel/runtime": "^7.9.2" } }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, "node_modules/@types/retry": { "version": "0.12.2", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", @@ -3626,6 +3866,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, "node_modules/ast-types-flow": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", @@ -3867,6 +4122,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, "node_modules/body-parser": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", @@ -3937,6 +4197,106 @@ "node": ">=8" } }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "dependencies": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.5", + "hash-base": "~3.0", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/browserify-sign/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/browserslist": { "version": "4.23.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", @@ -3974,6 +4334,11 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + }, "node_modules/bundle-name": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", @@ -3989,6 +4354,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "peer": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -4125,6 +4502,15 @@ "node": ">=6.0" } }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/clean-css": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", @@ -4137,6 +4523,12 @@ "node": ">= 10.0" } }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "peer": true + }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -4313,8 +4705,7 @@ "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/cosmiconfig": { "version": "9.0.0", @@ -4342,6 +4733,45 @@ } } }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -4356,6 +4786,27 @@ "node": ">= 8" } }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, "node_modules/css-loader": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", @@ -4620,6 +5071,15 @@ "node": ">=6" } }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -4642,6 +5102,21 @@ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", "dev": true }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -4762,6 +5237,7 @@ "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, "engines": { "node": ">=12" }, @@ -4769,6 +5245,39 @@ "url": "https://dotenvx.com" } }, + "node_modules/dotenv-defaults": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", + "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", + "dev": true, + "dependencies": { + "dotenv": "^8.2.0" + } + }, + "node_modules/dotenv-defaults/node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-webpack": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-8.1.0.tgz", + "integrity": "sha512-owK1JcsPkIobeqjVrk6h7jPED/W6ZpdFsMPR+5ursB7/SdgDyO+VzAU+szK8C8u3qUhtENyYnj8eyXMR5kkGag==", + "dev": true, + "dependencies": { + "dotenv-defaults": "^2.0.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "webpack": "^4 || ^5" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -4786,6 +5295,25 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.805.tgz", "integrity": "sha512-8W4UJwX/w9T0QSzINJckTKG6CYpAUTqsaWcWIsdud3I1FYJcMgW9QqT1/4CBff/pP/TihWh13OmiyY8neto6vw==" }, + "node_modules/elliptic": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", + "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -5835,6 +6363,15 @@ "node": ">=0.8.x" } }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -6540,8 +7077,7 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graphemer": { "version": "1.4.0", @@ -6624,6 +7160,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -6645,6 +7202,16 @@ "he": "bin/he" } }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -6835,29 +7402,45 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz", + "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==", "dev": true, "dependencies": { - "@types/http-proxy": "^1.17.8", + "@types/http-proxy": "^1.17.10", + "debug": "^4.3.4", "http-proxy": "^1.18.1", "is-glob": "^4.0.1", "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "micromatch": "^4.0.5" }, "engines": { - "node": ">=12.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" }, - "peerDependencies": { - "@types/express": "^4.17.13" + "engines": { + "node": ">=6.0" }, "peerDependenciesMeta": { - "@types/express": { + "supports-color": { "optional": true } } }, + "node_modules/http-proxy-middleware/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -6985,8 +7568,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/internal-slot": { "version": "1.0.7", @@ -7492,8 +8074,7 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/isexe": { "version": "2.0.0", @@ -7820,6 +8401,16 @@ "node": "14 || >=16.14" } }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -7891,6 +8482,23 @@ "node": ">=8.6" } }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -7934,8 +8542,12 @@ "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" }, "node_modules/minimatch": { "version": "9.0.4", @@ -8038,6 +8650,84 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "node_modules/next": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.4.tgz", + "integrity": "sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==", + "peer": true, + "dependencies": { + "@next/env": "14.2.4", + "@swc/helpers": "0.5.5", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.2.4", + "@next/swc-darwin-x64": "14.2.4", + "@next/swc-linux-arm64-gnu": "14.2.4", + "@next/swc-linux-arm64-musl": "14.2.4", + "@next/swc-linux-x64-gnu": "14.2.4", + "@next/swc-linux-x64-musl": "14.2.4", + "@next/swc-win32-arm64-msvc": "14.2.4", + "@next/swc-win32-ia32-msvc": "14.2.4", + "@next/swc-win32-x64-msvc": "14.2.4" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "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" + } + ], + "peer": true, + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -8398,6 +9088,22 @@ "node": ">=6" } }, + "node_modules/parse-asn1": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", + "dependencies": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "hash-base": "~3.0", + "pbkdf2": "^3.1.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -8499,6 +9205,21 @@ "node": ">=8" } }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/picocolors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", @@ -8814,8 +9535,7 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/prop-types": { "version": "15.8.1", @@ -8855,6 +9575,24 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -8903,11 +9641,19 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, "dependencies": { "safe-buffer": "^5.1.0" } }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -8952,6 +9698,20 @@ "node": ">=0.10.0" } }, + "node_modules/react-auth-kit": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/react-auth-kit/-/react-auth-kit-3.1.3.tgz", + "integrity": "sha512-3FvzdfutxxlXQ5qqWcgEvoJitz10eWe2y/ZPipeOPR8FNEbViJQ5pSV+3pyUq3z9nmYHaT83pASnCpQNBkWAkA==", + "dependencies": { + "js-cookie": "^3.0.1", + "rxjs": "^7.8.1" + }, + "peerDependencies": { + "next": ">=13.0 || ^14.x", + "react": ">=16.8.0 || ^17.x || ^18.x", + "react-dom": ">=16.8.0 || ^17.x || ^18.x" + } + }, "node_modules/react-dom": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", @@ -9385,6 +10145,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, "node_modules/run-applescript": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", @@ -9420,6 +10189,14 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-array-concat": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", @@ -9448,7 +10225,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -9699,6 +10475,18 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -9965,6 +10753,15 @@ "node": ">= 0.8" } }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "peer": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -10191,6 +10988,29 @@ "webpack": "^5.27.0" } }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "peer": true, + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, "node_modules/sucrase": { "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", @@ -10524,8 +11344,7 @@ "node_modules/tslib": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dev": true + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/type-check": { "version": "0.4.0", @@ -10795,8 +11614,7 @@ "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 + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/utila": { "version": "0.4.0", @@ -11123,6 +11941,30 @@ "ajv": "^8.8.2" } }, + "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", diff --git a/package.json b/package.json index c5ebfe8f..b4cd7d74 100644 --- a/package.json +++ b/package.json @@ -4,26 +4,30 @@ "description": "", "main": "index.ts", "scripts": { - "dev": "PORT=5000 webpack serve --open", - "build": "webpack" + "dev": "webpack serve --env NODE_ENV=development", + "build": "webpack --env NODE_ENV=production" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { + "@auth-kit/react-router": "^3.1.3", "@reduxjs/toolkit": "^2.2.5", "@types/js-cookie": "^3.0.6", "@types/react": "^18.3.3", + "@types/react-auth-kit": "^1.2.1", "@types/react-dom": "^18.3.0", "@types/react-lazy-load-image-component": "^1.6.4", "@types/react-redux": "^7.1.33", + "@types/react-router-dom": "^5.3.3", "autoprefixer": "^10.4.19", "axios": "^1.7.2", - "dotenv": "^16.4.5", + "crypto-browserify": "^3.12.0", "js-cookie": "^3.0.5", "jwt-decode": "^4.0.0", "postcss": "^8.4.38", "react": "^18.3.1", + "react-auth-kit": "^3.1.3", "react-dom": "^18.3.1", "react-hook-form": "^7.52.0", "react-icons": "^5.2.1", @@ -40,10 +44,14 @@ "@babel/preset-env": "^7.24.7", "@babel/preset-react": "^7.24.7", "@babel/preset-typescript": "^7.24.7", + "@types/dotenv": "^8.2.0", + "@types/jwt-decode": "^3.1.0", "@typescript-eslint/eslint-plugin": "^7.13.1", "@typescript-eslint/parser": "^7.13.1", "babel-loader": "^9.1.3", "css-loader": "^7.1.2", + "dotenv": "^16.4.5", + "dotenv-webpack": "^8.1.0", "eslint": "^8.57.0", "eslint-config-airbnb": "^19.0.4", "eslint-plugin-import": "^2.29.1", @@ -52,6 +60,7 @@ "eslint-plugin-react-hooks": "^4.6.2", "file-loader": "^6.2.0", "html-webpack-plugin": "^5.6.0", + "http-proxy-middleware": "^3.0.0", "postcss-loader": "^8.1.1", "style-loader": "^4.0.0", "tailwindcss": "^3.4.4", diff --git a/src/App.tsx b/src/App.tsx index 4e3fd937..e2dedc08 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,10 +1,10 @@ import React from 'react'; -import image from "./asset/images/home-page-dealflow-4.jpg" import { LazyLoadImage } from "react-lazy-load-image-component" +import AppRoutes from './Routes'; const App: React.FC = () => (
- +
); diff --git a/src/Components/dashboard/Sidebar.tsx b/src/Components/dashboard/Sidebar.tsx new file mode 100644 index 00000000..40cd3661 --- /dev/null +++ b/src/Components/dashboard/Sidebar.tsx @@ -0,0 +1,114 @@ +import React, { useState } from 'react' + +import { useNavigate } from 'react-router-dom' +import Logout from '../../services/Logout' + + +const Sidebar = () => { + const navigate = useNavigate() + const [active, setActive] = useState('001') + const Navlinks = [ + { + id: '001', + label: "dashboard", + icon: + + + , + location: "/admin" + + }, + { + id: '002', + label: "Users", + icon: + + + + + + , + location: "/admin/users" + + }, + { + id: '003', + label: "Sellers", + icon: + + + , + location: "/admin" + + }, + { + id: '004', + label: "Analytics", + icon: + + + , + location: "/admin" + + }, + { + id: '005', + label: "dashboard", + icon: + + + , + location: "/admin" + + }, + ] + + const handleNavigate = (data: any) => { + setActive(data.id); + navigate(data.location); + }; + const handelLogout = Logout() + + + + return ( +
+
+ + + + + + + + + + + + + + +
+
+ {Navlinks.map((item, index) => { + return ( +
handleNavigate(item)} key={index} className={` cursor-pointer flex flex-row gap-[10px] items-center p-2 rounded-[12px] ${active === item.id ? "bg-secondary" : ""}`}> + {item.icon} + {item.label} +
+ ) + })} +
+ + + + + Sign Out + +
+
+
+ ) +} + +export default Sidebar \ No newline at end of file diff --git a/src/Components/modal/EmailSent.tsx b/src/Components/modal/EmailSent.tsx new file mode 100644 index 00000000..4dda6888 --- /dev/null +++ b/src/Components/modal/EmailSent.tsx @@ -0,0 +1,18 @@ +import React from 'react' + +interface emailProps { + email?: string +} + +const EmailSent: React.FC = ({ email }) => { + return ( +
+
+

Verify your email on {email}

+
+
+ + ) +} + +export default EmailSent \ No newline at end of file diff --git a/src/Constants/AuthButton.tsx b/src/Constants/AuthButton.tsx new file mode 100644 index 00000000..45c907c0 --- /dev/null +++ b/src/Constants/AuthButton.tsx @@ -0,0 +1,20 @@ +import React from 'react' + +interface AuthButtonProps { + label: string, + isLoading: boolean +} + +const AuthButton: React.FC = ({ label, isLoading }) => { + return ( + + ) +} + +export default AuthButton \ No newline at end of file diff --git a/src/Constants/Input.tsx b/src/Constants/Input.tsx new file mode 100644 index 00000000..d3834121 --- /dev/null +++ b/src/Constants/Input.tsx @@ -0,0 +1,25 @@ +import React from 'react' + +interface InputProps { + label: string, + type: string, + value: string, + placeholder: string, + error? : boolean, + + onChange: (value: string) => void +} + +const Input: React.FC = ({label,type,value,placeholder,onChange,error}) => { + const handelChange = (e: React.ChangeEvent)=>{ + onChange(e.target.value) + } + return ( +
+ {label} + +
+ ) +} + +export default Input \ No newline at end of file diff --git a/src/Lib/AuthKitStore.tsx b/src/Lib/AuthKitStore.tsx new file mode 100644 index 00000000..4c165d1a --- /dev/null +++ b/src/Lib/AuthKitStore.tsx @@ -0,0 +1,12 @@ +import React from "react"; +import createStore from "react-auth-kit/createStore" + + +const store = createStore({ + authName:'_auth', + authType:'cookie', + cookieDomain: window.location.hostname, + cookieSecure: window.location.protocol === 'https:', + }); + +export default store \ No newline at end of file diff --git a/src/Lib/VerifyEmail.tsx b/src/Lib/VerifyEmail.tsx new file mode 100644 index 00000000..7daa7fff --- /dev/null +++ b/src/Lib/VerifyEmail.tsx @@ -0,0 +1,33 @@ +import React, { useEffect } from 'react'; +import { useLocation } from 'react-router-dom'; +import { useVerifyEmailQuery } from '../Redux/features/AuthSlice'; +const VerifyEmail = () => { + const location = useLocation(); + const getQueryParams = (search: string) => { + return new URLSearchParams(search); + }; + const queryParams = getQueryParams(location.search); + const token = queryParams.get('token'); + const { data, isLoading, isError, error } = useVerifyEmailQuery(token || ''); + if (isLoading) { + return
Loading...
; + } + if (isError || !data || !data.message) { + return ( +
+

Verification Link has expired or invalid token

+
+ ); + } + if (data.message === "Email verified successfully") { + window.location.href = "/login"; + return null; + } + return ( +
+

Verification Link has expired or invalid token

+
+ ); +}; + +export default VerifyEmail; diff --git a/src/Lib/authgoogle.tsx b/src/Lib/authgoogle.tsx new file mode 100644 index 00000000..c7937137 --- /dev/null +++ b/src/Lib/authgoogle.tsx @@ -0,0 +1,53 @@ +import React, { useEffect } from 'react'; +import { useLocation, useNavigate } from 'react-router-dom'; +import useSignIn from 'react-auth-kit/hooks/useSignIn'; +import {jwtDecode} from 'jwt-decode'; + +const AuthGoogle: React.FC = () => { + const navigate = useNavigate(); + const signIn = useSignIn(); + const location = useLocation(); + + const getQueryParams = (search: string) => { + return new URLSearchParams(search); + }; + + useEffect(() => { + const queryParams = getQueryParams(location.search); + const token = queryParams.get('token'); + const userDataString = queryParams.get('user'); + const userData = userDataString ? JSON.parse(userDataString) : null; + + if (token) { + const decodedToken: any = jwtDecode(token); + const sign = signIn({ + auth: { + token: token, + type: "Bearer", + }, + userState: userData, + }); + + if (sign) { + if (decodedToken.role === "vendor") { + navigate('/vendor'); + } else if (decodedToken.role === "buyer") { + navigate('/buyer'); + } else { + navigate('/buyer'); + } + } + } else { + console.log("no token found"); + } + }, [location.search, navigate, signIn]); + + return ( +
+ Loading.. + +
+ ); +}; + +export default AuthGoogle; diff --git a/src/Lib/navlinks.tsx b/src/Lib/navlinks.tsx new file mode 100644 index 00000000..20e44819 --- /dev/null +++ b/src/Lib/navlinks.tsx @@ -0,0 +1,59 @@ +import React from 'react' +import useAuthUser from 'react-auth-kit/hooks/useAuthUser' + +const userData:any = useAuthUser() +export const Navlinks = [ + { + id: '001', + label: "dashboard", + icon: + + + , + location: "/admin" + + }, + { + id: '002', + label: userData.role === "admin" ? "Users" : "My Products", + icon: + + + + + + , + location: "/admin/users" + + }, + { + id: '003', + label: "Sellers", + icon: + + + , + location: "/admin/sellers" + + }, + { + id: '004', + label: "Analytics", + icon: + + + , + location: "/admin/analytics" + + }, + { + id: '005', + label: "dashboard", + icon: + + + , + location: "/admin" + + }, +] \ No newline at end of file diff --git a/src/Portal/Buyer.tsx b/src/Portal/Buyer.tsx new file mode 100644 index 00000000..e5fb5cdb --- /dev/null +++ b/src/Portal/Buyer.tsx @@ -0,0 +1,18 @@ +import React, { useEffect } from 'react' +import useSignOut from 'react-auth-kit/hooks/useSignOut'; +import Logout from '../services/Logout'; +import useAuthUser from 'react-auth-kit/hooks/useAuthUser'; +import { useNavigate } from 'react-router-dom'; +; + +const Buyer = () => { + const handelLogout = Logout() + return ( +
+

Buyer Dashboard

+ +
+ ) +} + +export default Buyer \ No newline at end of file diff --git a/src/Portal/Seller.tsx b/src/Portal/Seller.tsx new file mode 100644 index 00000000..7d230411 --- /dev/null +++ b/src/Portal/Seller.tsx @@ -0,0 +1,25 @@ +import React, { useEffect } from 'react' +import useSignOut from 'react-auth-kit/hooks/useSignOut' +import Logout from '../services/Logout' +import useAuthUser from 'react-auth-kit/hooks/useAuthUser' +import { useNavigate } from 'react-router-dom' + +const Seller = () => { + const navigate = useNavigate() + const userData: any = useAuthUser() + useEffect(() => { + if (userData.role !== "vendor") { + navigate(`/${userData.role}`) + return + } + }, [navigate]) + const handelLogout = Logout() + return ( +
+

Seller Dashboard

+ +
+ ) +} + +export default Seller \ No newline at end of file diff --git a/src/Portal/admin.tsx b/src/Portal/admin.tsx index 5cea60ad..d94a0688 100644 --- a/src/Portal/admin.tsx +++ b/src/Portal/admin.tsx @@ -1,11 +1,25 @@ -import React from 'react' +import React, { useEffect } from 'react' +import Logout from '../services/Logout' +import useAuthUser from "react-auth-kit/hooks/useAuthUser" +import { Outlet, useNavigate } from 'react-router-dom' +import Sidebar from '../Components/dashboard/Sidebar' -const admin = () => { +const Admin = () => { + const navigate = useNavigate() + const userData: any = useAuthUser() + useEffect(() => { + if (userData.role !== "admin") { + navigate(`/${userData.role}`) + return + } + }, [navigate]) return ( -
+
+ +
) } -export default admin +export default Admin diff --git a/src/Redux/features/ApiSlice.tsx b/src/Redux/features/ApiSlice.tsx new file mode 100644 index 00000000..166fda15 --- /dev/null +++ b/src/Redux/features/ApiSlice.tsx @@ -0,0 +1,10 @@ +import { createApi,fetchBaseQuery } from "@reduxjs/toolkit/query/react" +const API_URL:any = `${process.env.BACKEND_API_URL}` + +const baseQuery = fetchBaseQuery({baseUrl: API_URL,credentials: "include"}) +export const apiSlice = createApi({ + reducerPath: "api", + baseQuery, + endpoints: (buider)=> ({}) +}) + diff --git a/src/Redux/features/AuthSlice.tsx b/src/Redux/features/AuthSlice.tsx index c0be27aa..8bd36212 100644 --- a/src/Redux/features/AuthSlice.tsx +++ b/src/Redux/features/AuthSlice.tsx @@ -1,16 +1,36 @@ -import React from 'react' -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; -import Cookies from 'js-cookie'; -import jwtDecode from 'jwt-decode'; +import { apiSlice } from "./ApiSlice"; +const AuthApiSlice = apiSlice.injectEndpoints({ + endpoints: (builder) => ({ + login: builder.mutation({ + query: (credentials) => ({ + url: "/login", + method: "POST", + body: credentials, + }) + }), + verifyCode: builder.mutation({ + query: (credentials)=>({ + url: "/verify-code", + method: "POST", + body: credentials, -const AuthSlice = () => { - return ( -
- -
- ) -} - -export default AuthSlice + }) + }), + register: builder.mutation({ + query: (credentials) => ({ + url: "/register", + method: "POST", + body: credentials, + }) + }), + verifyEmail: builder.query({ + query: (token)=>({ + url: `/verfiy-email?token=${token}` + }) + }) + }) +}) +export const { useLoginMutation,useVerifyCodeMutation,useRegisterMutation,useVerifyEmailQuery } = AuthApiSlice +export default AuthApiSlice \ No newline at end of file diff --git a/src/Redux/store.tsx b/src/Redux/store.tsx index a27627af..7038fae8 100644 --- a/src/Redux/store.tsx +++ b/src/Redux/store.tsx @@ -1,10 +1,12 @@ import { configureStore } from '@reduxjs/toolkit'; import AuthSlice from './features/AuthSlice'; +import { apiSlice } from './features/ApiSlice'; export const store = configureStore({ reducer: { - auth: AuthSlice, - } + [apiSlice.reducerPath]:apiSlice.reducer + }, + middleware: (getDefaultMiddelware)=> getDefaultMiddelware().concat(apiSlice.middleware) }); export type RootState = ReturnType; diff --git a/src/Routes/index.tsx b/src/Routes/index.tsx index e69de29b..15aecb7f 100644 --- a/src/Routes/index.tsx +++ b/src/Routes/index.tsx @@ -0,0 +1,40 @@ +import React from 'react'; +import { Route, Routes } from 'react-router-dom'; +import Signin from '../pages/Signin'; +import SignUp from '../pages/SignUp'; +import Admin from '../Portal/admin'; +import Buyer from '../Portal/Buyer'; +import Seller from '../Portal/Seller'; +import VerifyCode from '../pages/VerifyCode'; +import VerifyEmail from '../Lib/VerifyEmail'; +import AuthGoogle from '../Lib/authgoogle'; +import AuthOutlet from '@auth-kit/react-router/AuthOutlet' +import Users from '../pages/users'; + + +const AppRoutes: React.FC = () => { + return ( +
+ + } /> + } /> + } /> + } /> + } /> + }> + }> + } /> + } /> + + + + } /> + } /> + + + +
+ ); +} + +export default AppRoutes; diff --git a/src/index.html b/src/index.html index 37f5cb0d..8319115e 100644 --- a/src/index.html +++ b/src/index.html @@ -1,11 +1,29 @@ - - - - React TypeScript App - - -
- - + + + + + + + + + + + + React App + + + +
+ + \ No newline at end of file diff --git a/src/index.tsx b/src/index.tsx index 10e11359..3aca0cc0 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -3,11 +3,18 @@ import ReactDOM from 'react-dom'; import App from './App'; import './index.css'; import { Provider } from 'react-redux'; -import { store }from './Redux/store'; +import AuthProvider from "react-auth-kit/AuthProvider" +import { store } from './Redux/store'; +import authStore from "./Lib/AuthKitStore" +import { BrowserRouter } from "react-router-dom" ReactDOM.render( - - - -, - document.getElementById('root')); + + + + + + + + , + document.getElementById('root')); diff --git a/src/pages/SignUp.tsx b/src/pages/SignUp.tsx new file mode 100644 index 00000000..9f01a412 --- /dev/null +++ b/src/pages/SignUp.tsx @@ -0,0 +1,135 @@ +"use client" +import axios from 'axios' +import React, { useState } from 'react' +import AuthButton from '../Constants/AuthButton' +import Input from '../Constants/Input' +import { useRegisterMutation } from '../Redux/features/AuthSlice' +import EmailSent from '../Components/modal/EmailSent' + + +const SignUp: React.FC = () => { + const [name, setName] = useState("") + const [email, setEmail] = useState("") + const [password, setPassword] = useState("") + const [errorr, setError] = useState("") + const [isEmpty, setIsEmpty] = useState("") + const [err, setErr] = useState(false) + const [modal, setModal] = useState(false) + + const [register, {isLoading}] = useRegisterMutation() + const validationFunc = (e: any) => { + e.preventDefault() + if (name.trim() === "" ) { + setError("Name Are required") + setIsEmpty("name") + return + }else if(email.trim() === ""){ + setError("Email Are required") + setIsEmpty("email") + return + }else if(password.trim() === ""){ + setError("Password Are required") + setIsEmpty("password") + return + } + AuthLogin() + } + + const AuthLogin = async () => { + try { + const credentials:any = { + name, + email, + password + } + const response = await register(credentials).unwrap() + if(response.message==="Email Verfication Sent"){ + setModal(true) + console.log(response) + return + } + console.log(response) + + } catch (error: any) { + if(error.data.Message==="Email already exists"){ + setError("Email has been taken") + setIsEmpty("email") + + } + console.log(error) + + + } + } + + const loginWithGoogle = () => { + const googleAuthUrl = "http://localhost:5000/auth/google"; + window.open(googleAuthUrl, "_self"); + } + return ( +
+ {modal ?( + + ):( + "" + )} + +
+ + + + + + + + + + + + + + + +
+ Sign Up + Enter your credentials +
+ {errorr} + +
validationFunc(e)} className='flex flex-col gap-[10px] w-full' method="post"> + + + setName(value)} /> + setEmail(value)} /> + setPassword(value)} /> + + + +
+ + + + + + + + + + + + + + + Sign Up with Google +
+ + +
+
+ @2024 crafters, all right reserved +
+
+ ) +} + +export default SignUp \ No newline at end of file diff --git a/src/pages/Signin.tsx b/src/pages/Signin.tsx new file mode 100644 index 00000000..54acc055 --- /dev/null +++ b/src/pages/Signin.tsx @@ -0,0 +1,155 @@ +import axios from 'axios' +import React, { useState } from 'react' +import AuthButton from '../Constants/AuthButton' +import Input from '../Constants/Input' +import { useLoginMutation } from '../Redux/features/AuthSlice' +import useSignIn from 'react-auth-kit/hooks/useSignIn'; +import { useNavigate } from 'react-router-dom' + +const Signin: React.FC = () => { + const navigate = useNavigate() + const signIn = useSignIn() + const [email, setEmail] = useState("") + const [password, setPassword] = useState("") + const [errorr, setError] = useState("") + const [isEmpty, setIsEmpty] = useState("") + const [err, setErr] = useState(false) + + const [login, { isLoading }] = useLoginMutation() + const validationFunc = (e: any) => { + e.preventDefault() + if (email.trim() === "") { + setError("Email Are required") + setIsEmpty("email") + return + } else if (password.trim() === "") { + setError("Password Are required") + setIsEmpty("password") + return + } + AuthLogin() + } + + const AuthLogin = async () => { + try { + const credentials: any = { + email, + password + } + const response = await login(credentials).unwrap() + if (response.message === "2FA code sent. Please verify the code.") { + navigate('/2fa') + return + } + + if (response.message) { + console.log(response) + if (response.user.isVerfied == true) { + signIn({ + auth: { + token: response.token, + type: "Bearer" + }, + userState: response.user + }) + + if (response.user.role === "buyer") { + navigate('/buyer') + return + } else if (response.user.role === "vendor") { + navigate('/vendor') + return + } else if (response.user.role = "admin") { + navigate('/admin') + return + } + }else{ + setError("Please verify your email") + setIsEmpty("email") + + } + + } + + } catch (error: any) { + if (error.data.message === 'Invalid credentials. Try again') { + setError("Invalid credentials. Try again") + setErr(true) + } + if(error.data.message === 'User not found'){ + setError("Invalid credentials. Try again") + setErr(true) + + } + + } + + } + + const loginWithGoogle = () => { + const googleAuthUrl = "http://localhost:5000/auth/google"; + window.location.href = googleAuthUrl; + } + return ( +
+ +
+ + + + + + + + + + + + + + + +
+ Sign In + Enter your credentials +
+ {errorr} + +
validationFunc(e)} className='flex flex-col gap-[10px] w-full' method="post"> + + setEmail(value)} /> + setPassword(value)} /> + + +
+ + + + + + + + + + + + + + + Sign In with Google +
+
+ Not Registered yet? + Create an Account +
+ + +
+
+ @2024 crafters, all right reserved +
+
+ ) +} + +export default Signin \ No newline at end of file diff --git a/src/pages/Users.tsx b/src/pages/Users.tsx new file mode 100644 index 00000000..68d44d66 --- /dev/null +++ b/src/pages/Users.tsx @@ -0,0 +1,9 @@ +import React from 'react' + +const Users = () => { + return ( +
Useraaas
+ ) +} + +export default Users \ No newline at end of file diff --git a/src/pages/VerifyCode.tsx b/src/pages/VerifyCode.tsx new file mode 100644 index 00000000..e68cd8f9 --- /dev/null +++ b/src/pages/VerifyCode.tsx @@ -0,0 +1,117 @@ +import axios from 'axios' +import React, { useEffect, useRef, useState } from 'react' +import { useVerifyCodeMutation } from '../Redux/features/AuthSlice' +import useSignIn from 'react-auth-kit/hooks/useSignIn' +import { useNavigate } from 'react-router-dom' + +const VerfiyCode = () => { + const navigate = useNavigate() + const signIn = useSignIn() + const [code, setCode] = useState("") + const [error, setError] = useState("") + const [verifyCode, { isLoading }] = useVerifyCodeMutation() + + const verfiyCode = async (e: React.FormEvent) => { + e.preventDefault() + setError("") + e.preventDefault(); + try { + const response = await verifyCode({ code }).unwrap(); + if(response.message && response.message === "Login successful"){ + const saveCookie = signIn({ + auth:{ + token: response.token, + type: "Bearer" + }, + userState: response.user + }) + if(saveCookie){ + if(response.user.role === "admin"){ + navigate('/admin') + }else if(response.user.role === "vendor"){ + navigate('/seller') + }else { + navigate('/buyer') + } + + } + + } + + } catch (err) { + console.log(err) + setError('Invalid or expired code'); + } + } + const inputRefs = useRef<(HTMLInputElement | null)[]>(Array(6).fill(null)); + useEffect(() => { + if (inputRefs.current[0]) { + inputRefs.current[0].focus(); + } + }, []); + + + const handleInputChange = (index: number, value: string) => { + if (/^\d*$/.test(value) && value.length <= 6) { + const newCode = code.split(''); + newCode[index] = value; + setCode(newCode.join('')); + if (inputRefs.current[index + 1] && value.length > 0) { + inputRefs.current[index + 1]?.focus(); + } + } + }; + + return ( +
+
+ + + + + + + + + + + + + + + + {error} +
+
+ {[...Array(6)].map((_, index) => ( + inputRefs.current[index] = el} + type="text" + value={code[index] || ''} + maxLength={1} + pattern="\d" + onChange={(e) => handleInputChange(index, e.target.value)} + className="border border-gray-300 rounded-md px-3 py-2 text-lg text-center w-12" + /> + ))} +
+
+ + navigate(-1)} className=' cursor-pointer p-2 flex itemas-center justify-center w-full bg-gray-200 text-white rounded-[12px] font-[300] text-[20px]'>Back + + +
+ +
+ +
+
+ @2024 crafters, all right reserved +
+
+ ) +} + +export default VerfiyCode \ No newline at end of file diff --git a/src/services/Logout.tsx b/src/services/Logout.tsx new file mode 100644 index 00000000..f529624d --- /dev/null +++ b/src/services/Logout.tsx @@ -0,0 +1,12 @@ +import React from 'react' +import useSignOut from 'react-auth-kit/hooks/useSignOut' + +const Logout = () => { + const signOut = useSignOut() + return ()=>{ + signOut() + window.location.href="login" + } +} + +export default Logout \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js index 66282f00..dcb41221 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -4,7 +4,33 @@ module.exports = { './src/**/*.{js,jsx,ts,tsx}', ], theme: { - extend: {}, + extend: { + colors:{ + primary: "#013362", + secondary: "#C9974C", + white: "#fff", + black: "#000", + gray:{ + 100: "#EEEDED", + 200: "#CACACA" + }, + border: "#666666" + }, + fontFamily:{ + outfit: ['Outfit', 'sans-serif'], + poppins: ['Poppins', 'sans-serif'], + }, + screens: { + 'sm': '360px', + 'md': '540px', + 'lg': '768px', + 'xl': '1024px', + '2xl': '1280px', + '3xl': '1440px', + '4xl': '1600px', + '5xl': '1920px', + }, + }, }, plugins: [], } diff --git a/webpack.config.js b/webpack.config.js index b0ae38fa..db4fc3fb 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,47 +1,65 @@ -const path = require('path'); -const HtmlWebpackPlugin = require('html-webpack-plugin'); +const path = require("path"); +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const Dotenv = require("dotenv-webpack"); +const webpack = require("webpack"); -module.exports = { - entry: './src/index.tsx', - mode: 'development', - devtool: 'inline-source-map', - devServer: { - static: './dist', - open: true, - }, - module: { - rules: [ - { - test: /\.(ts|tsx)$/, - exclude: /node_modules/, - use: { - loader: 'babel-loader', - options: { - presets: ['@babel/preset-env', '@babel/preset-react'], +module.exports = (env) => { + const isProduction = env.NODE_ENV === "production"; + const dotenvFilename = isProduction ? ".env.production" : ".env.development"; + + return { + entry: "./src/index.tsx", + mode: isProduction ? "production" : "development", + devtool: isProduction ? "source-map" : "inline-source-map", + devServer: { + static: "./dist", + open: true, + historyApiFallback: true, + }, + module: { + rules: [ + { + test: /\.(ts|tsx)$/, + exclude: /node_modules/, + use: { + loader: "babel-loader", + options: { + presets: ["@babel/preset-env", "@babel/preset-react"], + }, }, }, + { + test: /\.css$/, + use: ["style-loader", "css-loader", "postcss-loader"], + }, + { + test: /\.(png|svg|jpg|jpeg|gif)$/i, + type: "asset/resource", + }, + ], + }, + resolve: { + extensions: [".js", ".jsx", ".ts", ".tsx"], + fallback: { + crypto: require.resolve("crypto-browserify"), }, - { - test: /\.css$/, - use: ['style-loader', 'css-loader', 'postcss-loader'], - }, - { - test: /\.(png|svg|jpg|jpeg|gif)$/i, - type: 'asset/resource', - }, + }, + plugins: [ + new HtmlWebpackPlugin({ + template: "./src/index.html", + }), + new Dotenv({ + path: dotenvFilename, + }), + new webpack.DefinePlugin({ + 'process.env.NODE_ENV': JSON.stringify(env.NODE_ENV), + }), ], - }, - resolve: { - extensions: ['.js', '.jsx', '.ts', '.tsx'], - }, - plugins: [ - new HtmlWebpackPlugin({ - template: './src/index.html', - }), - ], - output: { - filename: 'bundle.js', - path: path.resolve(__dirname, 'dist'), - clean: true, - }, + output: { + filename: "bundle.js", + path: path.resolve(__dirname, "dist"), + clean: true, + publicPath: '/', + }, + }; }; From 6b64a4327a8bed64539d03e0f68225aad3d4d5c8 Mon Sep 17 00:00:00 2001 From: ismaelmurekezi Date: Sun, 23 Jun 2024 15:12:01 +0200 Subject: [PATCH 002/174] implementation of orderStatus charts --- package-lock.json | 296 ++++++++++++++++++++- package.json | 1 + src/Components/Analytics/OrderStatus.tsx | 74 ++++++ src/Components/Analytics/SellingReport.tsx | 125 +++++++++ src/Components/Analytics/TopProduct.tsx | 41 +++ src/Components/Analytics/WeeklyReport.tsx | 96 +++++++ src/Routes/index.tsx | 13 +- src/pages/Analytics.tsx | 57 ++++ 8 files changed, 691 insertions(+), 12 deletions(-) create mode 100644 src/Components/Analytics/OrderStatus.tsx create mode 100644 src/Components/Analytics/SellingReport.tsx create mode 100644 src/Components/Analytics/TopProduct.tsx create mode 100644 src/Components/Analytics/WeeklyReport.tsx create mode 100644 src/pages/Analytics.tsx diff --git a/package-lock.json b/package-lock.json index 43b5b4f2..d5b5106b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,6 +34,7 @@ "react-redux": "^9.1.2", "react-router-dom": "^6.23.1", "reactjs-popup": "^2.0.6", + "recharts": "^2.12.7", "socket.io-client": "^4.7.5", "typescript": "^5.4.5" }, @@ -2746,6 +2747,60 @@ "@types/node": "*" } }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + }, "node_modules/@types/dotenv": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz", @@ -4543,6 +4598,14 @@ "node": ">=6" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -4887,6 +4950,116 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -4953,6 +5126,11 @@ "ms": "2.0.0" } }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -5168,6 +5346,15 @@ "utila": "~0.4" } }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/dom-serializer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", @@ -6351,8 +6538,7 @@ "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, "node_modules/events": { "version": "3.3.0", @@ -6443,6 +6629,14 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -7584,6 +7778,14 @@ "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, "node_modules/interpret": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", @@ -8353,8 +8555,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.debounce": { "version": "4.0.8", @@ -8797,7 +8998,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -9541,7 +9741,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -9826,6 +10025,35 @@ "react-dom": ">=16.8" } }, + "node_modules/react-smooth": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.1.tgz", + "integrity": "sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w==", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/reactjs-popup": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/reactjs-popup/-/reactjs-popup-2.0.6.tgz", @@ -9873,6 +10101,36 @@ "node": ">=8.10.0" } }, + "node_modules/recharts": { + "version": "2.12.7", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.12.7.tgz", + "integrity": "sha512-hlLJMhPQfv4/3NBSAyq3gzGg4h2v69RJh6KU7b3pXYNNAELs9kEoXOjbkxdXpALqKBoVmVptGfLpxdaVYqjmXQ==", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^16.10.2", + "react-smooth": "^4.0.0", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, "node_modules/rechoir": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", @@ -11224,6 +11482,11 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -11649,6 +11912,27 @@ "node": ">= 0.8" } }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, "node_modules/watchpack": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", diff --git a/package.json b/package.json index b4cd7d74..434ad0e7 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "react-redux": "^9.1.2", "react-router-dom": "^6.23.1", "reactjs-popup": "^2.0.6", + "recharts": "^2.12.7", "socket.io-client": "^4.7.5", "typescript": "^5.4.5" }, diff --git a/src/Components/Analytics/OrderStatus.tsx b/src/Components/Analytics/OrderStatus.tsx new file mode 100644 index 00000000..29a97e37 --- /dev/null +++ b/src/Components/Analytics/OrderStatus.tsx @@ -0,0 +1,74 @@ +import React from "react"; +import { + PieChart, + Pie, + Sector, + Cell, + ResponsiveContainer, + Tooltip, +} from "recharts"; + +interface OrderStatusProps { + statusCounts: { [key: string]: number }; +} + +const OrderStatus: React.FC = ({ statusCounts }) => { + const colors = ["#FFC632", "#ED3333", "#17BF6B"]; + + const data = Object.entries(statusCounts).map(([status, value], index) => ({ + name: status, + value, + color: colors[index % colors.length], + })); + + + return ( +
+
+
+

Order status

+

Total Earnings of the Month

+
+
+ + + + + {data.map((item) => ( + + ))} + + + +
+ + + + Delivered + + + + Pending + + + + cancelled + +
+
+
+
+ ); +}; + +export default OrderStatus; + + diff --git a/src/Components/Analytics/SellingReport.tsx b/src/Components/Analytics/SellingReport.tsx new file mode 100644 index 00000000..57b44ad6 --- /dev/null +++ b/src/Components/Analytics/SellingReport.tsx @@ -0,0 +1,125 @@ +import React from "react"; +import { + Bar, + BarChart, + CartesianGrid, + Legend, + ResponsiveContainer, + Tooltip, + XAxis, + YAxis, +} from "recharts"; + +const data = [ + { + name: "January", + Expense: 4000, + Income: 2400, + amt: 2400, + }, + { + name: "February", + Expense: 3000, + Income: 1398, + amt: 2210, + }, + { + name: "March", + Expense: 2000, + Income: 9800, + amt: 2290, + }, + { + name: "April", + Expense: 2780, + Income: 3908, + amt: 2000, + }, + { + name: "May", + Expense: 1890, + Income: 4800, + amt: 2181, + }, + { + name: "June", + Expense: 2390, + Income: 3800, + amt: 2500, + }, + { + name: "July", + Expense: 3490, + Income: 4300, + amt: 2100, + }, + { + name: "August", + Expense: 3490, + Income: 4300, + amt: 2100, + }, + { + name: "September", + Expense: 3490, + Income: 4300, + amt: 2100, + }, + { + name: "October", + Expense: 3490, + Income: 4300, + amt: 2100, + }, + { + name: "November", + Expense: 3490, + Income: 4300, + amt: 2100, + }, + { + name: "December", + Expense: 3490, + Income: 4300, + amt: 2100, + }, +]; + +const SellingReport = () => { + return ( +
+
+

Reports

+ +

Year selling Analytics

+ +
+ + + + + + + + + + + +
+ ); +}; + +export default SellingReport; diff --git a/src/Components/Analytics/TopProduct.tsx b/src/Components/Analytics/TopProduct.tsx new file mode 100644 index 00000000..acbdf4bb --- /dev/null +++ b/src/Components/Analytics/TopProduct.tsx @@ -0,0 +1,41 @@ +import React from 'react' + +const TopProduct = () => { + return ( +
+

Top product

+
+
+

Id

+

01

+

02

+

03

+

04

+
+
+

Name

+

Home decore

+

Lorem ipsum

+

Lorem ipsum

+

Lorem ipsum

+
+
+

Popularity

+

Lorem ipsum

+

Lorem ipsum

+

Lorem ipsum

+

Lorem ipsum

+
+
+

Sales

+

46%

+

17%

+

19%

+

29%

+
+
+
+ ); +} + +export default TopProduct \ No newline at end of file diff --git a/src/Components/Analytics/WeeklyReport.tsx b/src/Components/Analytics/WeeklyReport.tsx new file mode 100644 index 00000000..94b13ffa --- /dev/null +++ b/src/Components/Analytics/WeeklyReport.tsx @@ -0,0 +1,96 @@ +import React from "react"; +import { + Bar, + BarChart, + CartesianGrid, + Legend, + ResponsiveContainer, + Tooltip, + XAxis, + YAxis, +} from "recharts"; + +const data = [ + { + name: "Monday", + Expense: 4000, + Income: 2400, + amt: 2400, + }, + { + name: "Tuesday", + Expense: 3000, + Income: 1398, + amt: 2210, + }, + { + name: "Wednesday", + Expense: 2000, + Income: 9800, + amt: 2290, + }, + { + name: "Thurday", + Expense: 2780, + Income: 3908, + amt: 2000, + }, + { + name: "Friday", + Expense: 1890, + Income: 4800, + amt: 2181, + }, + { + name: "Saturday", + Expense: 2390, + Income: 3800, + amt: 2500, + }, + { + name: "Sunday", + Expense: 3490, + Income: 4300, + amt: 2100, + }, + { + name: "August", + Expense: 3490, + Income: 4300, + amt: 2100, + }, + +]; + +const WeeklyReport = () => { + return ( +
+ + + + + + + + + + + +
+ ); +}; + +export default WeeklyReport; diff --git a/src/Routes/index.tsx b/src/Routes/index.tsx index 15aecb7f..0980fc62 100644 --- a/src/Routes/index.tsx +++ b/src/Routes/index.tsx @@ -8,8 +8,11 @@ import Seller from '../Portal/Seller'; import VerifyCode from '../pages/VerifyCode'; import VerifyEmail from '../Lib/VerifyEmail'; import AuthGoogle from '../Lib/authgoogle'; +import Users from '../pages/Users'; import AuthOutlet from '@auth-kit/react-router/AuthOutlet' -import Users from '../pages/users'; +import Analytics from '../pages/Analytics'; + + const AppRoutes: React.FC = () => { @@ -17,22 +20,20 @@ const AppRoutes: React.FC = () => {
} /> + } /> } /> } /> } /> } /> - }> + }> }> } /> - } /> - - + } /> } /> } /> -
); } diff --git a/src/pages/Analytics.tsx b/src/pages/Analytics.tsx new file mode 100644 index 00000000..b95128be --- /dev/null +++ b/src/pages/Analytics.tsx @@ -0,0 +1,57 @@ +import React, { useEffect, useState } from "react"; +import OrderStatus from "../Components/Analytics/OrderStatus"; +import axios from "axios"; +import SellingReport from "../Components/Analytics/SellingReport"; + +interface DeliveryAddress { + city: string; + street: string; +} + +interface Product { + productId: string; + name: string; + quantity: number; + price: number; +} + +interface Order { + createdAt: string; + deliveryAddress: DeliveryAddress; + expectedDeliveryDate: string | null; + orderId: string; + paymentMethod: string; + products: Product[]; + status: string; + totalAmount: number | null; + updatedAt: string; + userId: string; +} + +const Analytics = () => { + const [statusCounts, setStatusCounts] = useState<{ [key: string]: number }>( + {} + ); + + useEffect(() => { + axios.get("http://localhost:5000/order/getAllOrder").then((res) => { + console.log(res.data); + + const counts: { [key: string]: number } = {}; + res.data.forEach((order) => { + counts[order.status] = (counts[order.status] || 0) + 1; + }); + setStatusCounts(counts); + }); + }, []); + + return ( +
+

Order Statuses:

+ + {/* */} +
+ ); +}; + +export default Analytics; From 0edbe3d908f1f7c37ba1d54322b4743f7a8478a6 Mon Sep 17 00:00:00 2001 From: ManziPatrick Date: Mon, 24 Jun 2024 17:05:56 +0200 Subject: [PATCH 003/174] mend --- package-lock.json | 60 +++++- package.json | 3 + src/Components/singleproduct/Sproduct.tsx | 138 +++++++++++++ src/Components/singleproduct/reviews.tsx | 191 ++++++++++++++++++ .../singleproduct/similaryProduct.tsx | 21 ++ src/Components/singleproduct/star.tsx | 36 ++++ src/Routes/index.tsx | 3 + .../0ce8299f7b1c845d575f949b244ea238.jpg | Bin 0 -> 51596 bytes .../529d198d51183b1643323dd26b8db71d (1).jpg | Bin 0 -> 68459 bytes .../529d198d51183b1643323dd26b8db71d.jpg | Bin 0 -> 68459 bytes .../906065671b27036677551e1a225eb026.jpg | Bin 0 -> 59558 bytes .../f8c69bc0404ff0b6158cab028ac8e632.jpg | Bin 0 -> 59635 bytes src/asset/images/products/heart_.png | Bin 0 -> 595 bytes src/asset/images/products/star.png | Bin 0 -> 647 bytes src/pages/singlePage.tsx | 16 ++ 15 files changed, 466 insertions(+), 2 deletions(-) create mode 100644 src/Components/singleproduct/Sproduct.tsx create mode 100644 src/Components/singleproduct/reviews.tsx create mode 100644 src/Components/singleproduct/similaryProduct.tsx create mode 100644 src/Components/singleproduct/star.tsx create mode 100644 src/asset/images/products/0ce8299f7b1c845d575f949b244ea238.jpg create mode 100644 src/asset/images/products/529d198d51183b1643323dd26b8db71d (1).jpg create mode 100644 src/asset/images/products/529d198d51183b1643323dd26b8db71d.jpg create mode 100644 src/asset/images/products/906065671b27036677551e1a225eb026.jpg create mode 100644 src/asset/images/products/f8c69bc0404ff0b6158cab028ac8e632.jpg create mode 100644 src/asset/images/products/heart_.png create mode 100644 src/asset/images/products/star.png create mode 100644 src/pages/singlePage.tsx diff --git a/package-lock.json b/package-lock.json index 43b5b4f2..e376e5f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,9 @@ "license": "ISC", "dependencies": { "@auth-kit/react-router": "^3.1.3", + "@fortawesome/fontawesome-free": "^6.5.2", + "@fortawesome/free-solid-svg-icons": "^6.5.2", + "@fortawesome/react-fontawesome": "^0.2.2", "@reduxjs/toolkit": "^2.2.5", "@types/js-cookie": "^3.0.6", "@types/react": "^18.3.3", @@ -2246,6 +2249,61 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz", + "integrity": "sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.5.2.tgz", + "integrity": "sha512-hRILoInAx8GNT5IMkrtIt9blOdrqHOnPBH+k70aWUAqPZPgopb9G5EQJFpaBx/S8zp2fC+mPW349Bziuk1o28Q==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.2.tgz", + "integrity": "sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw==", + "hasInstallScript": true, + "peer": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.5.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz", + "integrity": "sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.5.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/react-fontawesome": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.2.tgz", + "integrity": "sha512-EnkrprPNqI6SXJl//m29hpaNzOp1bruISWaOiRtkMi/xSvHJlzc2j2JAYS7egxt/EbjSNV/k6Xy0AQI6vB2+1g==", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "react": ">=16.3" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -8797,7 +8855,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -9541,7 +9598,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", diff --git a/package.json b/package.json index b4cd7d74..9e07ea3b 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,9 @@ "license": "ISC", "dependencies": { "@auth-kit/react-router": "^3.1.3", + "@fortawesome/fontawesome-free": "^6.5.2", + "@fortawesome/free-solid-svg-icons": "^6.5.2", + "@fortawesome/react-fontawesome": "^0.2.2", "@reduxjs/toolkit": "^2.2.5", "@types/js-cookie": "^3.0.6", "@types/react": "^18.3.3", diff --git a/src/Components/singleproduct/Sproduct.tsx b/src/Components/singleproduct/Sproduct.tsx new file mode 100644 index 00000000..5ba030ca --- /dev/null +++ b/src/Components/singleproduct/Sproduct.tsx @@ -0,0 +1,138 @@ +import React, { useState } from 'react'; +import mainproduct1 from "../../asset/images/products/0ce8299f7b1c845d575f949b244ea238.jpg"; +import mainproduct2 from "../../asset/images/products/529d198d51183b1643323dd26b8db71d (1).jpg"; +import mainproduct4 from "../../asset/images/products/529d198d51183b1643323dd26b8db71d.jpg"; +import mainproduct3 from "../../asset/images/products/f8c69bc0404ff0b6158cab028ac8e632.jpg"; +import heart from "../../asset/images/products/heart_.png" +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faMinus, faPlus } from '@fortawesome/free-solid-svg-icons'; + +const Sproduct = () => { + const images = [mainproduct1, mainproduct2, mainproduct3,mainproduct4]; + const [selectedImage, setSelectedImage] = useState(images[0]); + const [isWishlist, setIsWishlist] = useState(false); + const [quantity, setQuantity] = useState(1); + const [size, setSize] = useState(1); + + + const handleImageClick = (image: string) => { + setSelectedImage(image); + }; + const toggleWishlist = () => { + setIsWishlist(!isWishlist); + }; + const subtractQuantity = () => { + if (quantity > 1) { + setQuantity(quantity - 1); + } + }; + const addQuantity = () => { + setQuantity(quantity + 1); + }; + + const subtractSize = () => { + if (size > 1) { + setSize(size - 1); + } + }; + const addsize = () => { + setSize(size + 1); + }; + return ( +
+
+
+
+ Selected product +
+
+ {images.map((image, index) => ( + + ))} + +
+ +
+
+Wishlist +
+
+
+ {images.map((image, index) => ( + {`Thumbnail handleImageClick(image)} + className="cursor-pointer w-full md:w-[100%] rounded-md h-36 object-cover" + /> + ))} +
+ +
+
+
+

Stock : IHAHIRO

+

Rollex watch

+
24 IN STOCK
+
118900 frw
+
+

Description

+

Enjin dai enjin celo horizen secret flow siacoin. Polkadot golem TRON vechain compound TRON ICON arweave stellar. Filecoin ox bancor hive terra.

+
+
+ +
+

Quantity

+
+ +
+
{quantity}
+
+ +
+
+
+

size

+
+ +
+
{size} mm
+
+ +
+
+
+
+ Total + 24 0000 rwf + +
+ +
+
+
+
+ ); +}; + +export default Sproduct; diff --git a/src/Components/singleproduct/reviews.tsx b/src/Components/singleproduct/reviews.tsx new file mode 100644 index 00000000..db2366e8 --- /dev/null +++ b/src/Components/singleproduct/reviews.tsx @@ -0,0 +1,191 @@ +import React, { useState } from 'react'; +import StarRating from './star'; + +const reviews = [ + { + id: 1, + name: 'Lesia Ikirezi', + date: '2nd June, 2024', + rating: 3, + text: 'Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classica', + }, + { + id: 2, + name: 'Lesia Ikirezi', + date: '2nd June, 2024', + rating: 4, + text: 'Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classica', + }, + { + id: 3, + name: 'Lesia Ikirezi', + date: '2nd June, 2024', + rating: 3, + text: 'Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classica', + }, + { + id: 4, + name: 'Lesia Ikirezi', + date: '2nd June, 2024', + rating: 2.3, + text: 'Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classica', + }, + { + id: 5, + name: 'Lesia Ikirezi', + date: '2nd June, 2024', + rating: 4, + text: 'Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classica', + }, +]; + +const Review: React.FC = () => { + const [showContent, setShowContent] = useState(false); + const [reviewFeedback, setReviewFeedback] = useState({ + title: '', + feedback: '', + rating: 0, + }); + const [rating, setRating] = useState(3); + const rows = 4; + + const toggleContent = () => { + setShowContent(!showContent); + }; + + const handleInputChange = ( + e: React.ChangeEvent + ) => { + const { name, value } = e.target; + setReviewFeedback({ + ...reviewFeedback, + [name]: value, + }); + }; + + const handleRatingChange = (selectedRating: number) => { + setRating(selectedRating); + setReviewFeedback({ + ...reviewFeedback, + rating: selectedRating, + }); + }; + + // const handleFormSubmit = async (e: { preventDefault: () => void }) => { + // e.preventDefault(); + + // try { + // const apiUrl = `/api/v1/reviews/1`; + // const token = localStorage.getItem('token'); + // const config = { + // headers: { + // Authorization: `Bearer ${token}`, + // }, + // }; + + // const data = { + // title: reviewFeedback.title, + // feedback: reviewFeedback.feedback, + // ratings: reviewFeedback.rating, + // }; + + // const response = await URL.post(apiUrl, data, config); + // toast.success('Review submitted successfully'); + // console.log('Review submitted successfully:', response); + + // setReviewFeedback({ + // title: '', + // feedback: '', + // rating: 0, + // }); + // setShowContent(false); + // } catch (error) { + // console.error('Error submitting review:', error); + // toast.error('Failed to submit review'); + // } + // }; + + return ( +
+
+

Review

+
+
+
3 Reviews
+
+
+
+ +
+
+ Leave my review +
+
+ 4 rates +
+
+ {showContent && ( +
+
+

How will you rate this product?

+
+ +
+
+
+ + + +
+
+ )} + {reviews.map((review) => ( +
+
+ + {review.id} + +
+
+ {review.name} +
+ +
+ {review.date} +

{review.text}

+
+
+ ))} +
+
+
+ ); +}; + +export default Review; \ No newline at end of file diff --git a/src/Components/singleproduct/similaryProduct.tsx b/src/Components/singleproduct/similaryProduct.tsx new file mode 100644 index 00000000..830ff1ae --- /dev/null +++ b/src/Components/singleproduct/similaryProduct.tsx @@ -0,0 +1,21 @@ +import { FunctionComponent } from "react"; +import React from "react"; + +interface SimillarProductProps { + +} + +const SimillarProduct: FunctionComponent = () => { + return ( + <> +
+
+related products +
+ +
+ + ); +} + +export default SimillarProduct; \ No newline at end of file diff --git a/src/Components/singleproduct/star.tsx b/src/Components/singleproduct/star.tsx new file mode 100644 index 00000000..e3a3c4de --- /dev/null +++ b/src/Components/singleproduct/star.tsx @@ -0,0 +1,36 @@ +import React from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faStar } from '@fortawesome/free-solid-svg-icons'; + +interface StarRatingProps { + rating: number; + onRatingChange?: (rating: number) => void; + clickable?: boolean; +} + +const StarRating: React.FC = ({ rating, onRatingChange, clickable = false }) => { + const validRating = Math.min(Math.max(rating, 0), 5); + + const handleClick = (index: number) => { + if (clickable && onRatingChange) { + onRatingChange(index + 1); + } + }; + + const stars = Array.from({ length: 5 }, (_, index) => ( + handleClick(index)} + /> + )); + + return ( +
+ {stars} +
+ ); +}; + +export default StarRating; diff --git a/src/Routes/index.tsx b/src/Routes/index.tsx index 15aecb7f..802ef044 100644 --- a/src/Routes/index.tsx +++ b/src/Routes/index.tsx @@ -10,6 +10,7 @@ import VerifyEmail from '../Lib/VerifyEmail'; import AuthGoogle from '../Lib/authgoogle'; import AuthOutlet from '@auth-kit/react-router/AuthOutlet' import Users from '../pages/users'; +import Singlepage from '../pages/singlePage'; const AppRoutes: React.FC = () => { @@ -21,6 +22,7 @@ const AppRoutes: React.FC = () => { } /> } /> } /> + } /> }> }> } /> @@ -29,6 +31,7 @@ const AppRoutes: React.FC = () => { } /> + } /> diff --git a/src/asset/images/products/0ce8299f7b1c845d575f949b244ea238.jpg b/src/asset/images/products/0ce8299f7b1c845d575f949b244ea238.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9da450e0269b600d8be46f0dcd2d6a2fcb4056a8 GIT binary patch literal 51596 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

hpIf#j#+CPg?DfYI%dto(NbtQ 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 literal 0 HcmV?d00001 diff --git a/src/asset/images/products/529d198d51183b1643323dd26b8db71d.jpg b/src/asset/images/products/529d198d51183b1643323dd26b8db71d.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b6f44af959eaa25158b75dc4157e5b2d93bb0bba GIT binary patch literal 68459 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

hpIf#j#+CPg?DfYI%dto(NbtQ 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 literal 0 HcmV?d00001 diff --git a/src/asset/images/products/906065671b27036677551e1a225eb026.jpg b/src/asset/images/products/906065671b27036677551e1a225eb026.jpg new file mode 100644 index 0000000000000000000000000000000000000000..13bd23d16cf7d0ea46923443fa190b719582b4c9 GIT binary patch literal 59558 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 z

kSgTr8-9Iind!nH-O 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Νqr1NC=>V zf$+fbN~ih#1bb`IO{f&18J=g~-sZv@P=X|j9I_-SUK z%c$dI=tkRyQTvdEGP?Fzw?nU`?Cv(OW8~zNdQ*OY6c#_x9pA6H^uedK+obLq`7qxgY}fl`)uF8b3b^;0pj18 zpC1q6om1fcA-hj-pSB|nTJ96)A*A_&ZTE^~)a#J7isYI2d}=Th%T1Sk!c5A4 zlnT$U^Q8U#Hkv&aHkFmQhZ;4BTsnl(W`Ojrd+>xs_K(^eA57*I7|Rk{@E%!;^0(y^ zcZ-Hq-cCLy62C!F{HyB3<}bXzFng8MzcD*On1}C_Ry&ww>#w6YzxY9hYnQ_OPa;nc zh+-BU;&%r~NocS;!-8d~Ae2~nI+2$4`tHU+f@z9W4KaZ%P{(_fmS9mdwgY|a#6hB7 zWz@UWO4r4|-=ttJw@16o%pGeHEoA8!<(6k>lm!C&qCAUui2~~4G+Nt^v1PQtCU7;( z*OyXQDVau1LUpL|7qYL!*H;X;Mw1Ee4Glem;f>r@TnG7$WJa)wxpQ8LFc+1J(=GT< z$3I)##-QziHilp(@`8C!HjtEx-9=W%UL*_rDt0?gBN!7YS5c0hdr13L@ch#m@nbOe}yu2yvXDUO$+B;NOUv9b0UvfROD)MggML0vlK&Rwpqf zJigPJ*D~5nAxNSa_nZLeLMkBHsT3NzSa~^@(k_{7R`%(Zi0(U5gPy5cEI*<-?LS%H z;ppBB6JFTHfzg60W`P1DV;%FY0K5K^u!7~xd>kCEgcZoygUoE$>0xS=nFm;zvQ}%- zdkmrY4+6H6D)oTpaGVn%*6*}9xztMblwp`Y2L>pH5od+bGEt&(7^!x};{|F}Dq(F4 zEm^5T{Yg$e$ziDdsY%3?FrJZbn6(#M2WkjkCtow5KOr$3kW04TS!C)-H=3qqbuUCG z3o1PF2;D~`IGa+ids8L9VJ@D*Q(<>}m@pJ(-eO~>lyC|+Xx*o9#gI7z(F@O5o<`n`87!dzw_62`qrXKQR$95k6XH{w&6 z+QH45*WD7SI3LR$PH!-30HE_6hVr>)YP;q#`YFuxfu)bfcxh96rO?1MXDW0xGr_#4 z@hl*Q)8^YM-p7XsqVo{ysZ3PIne4Scx@J+m%nfs|OBr|l&|>Kuz9P9X?B-tx@Dckp z;yQ>XoEdh!ZT=veOF(?{K905u4s&TKLlF6UdS&|HsUQ6 zGB$Xu1Nn}z6?d6=tHIlem+VYFL5`ba5j3Q+ngVikc_D?(KD}Pj!n<=UM|=@dzA(&C z`G(YVF&*1nu9{DYcp&vRih))NPXZE@Zo(|a z0-k0o&IfZPa&97ZF{3}5leESoc{;jGb%rMP`7%QeZXW!QC_6r*8R5M%eu<1U$?j zMDWbO`^}wyX@LzIlqU=fFrg^RlavJv&6=}$mFh&cV?u{UaYcwz7tV4 zK(q66X?c`=Qi0$Ke3;)9?J5`WWpHfE2>s>Tq2QAi&UY>M#|2;bXX-PKQ2u=a9-OdH zcaQH3r5NUDm-AmANM#5ILzsijsdPi;1E+_hPB}`hn&M$ z?DmmwRznTcScaD78P<%zrp!T)Y{PBynVQ}w3{@u!xr2$|bf^>(3!5>hn0B#wGdCF?mbiT<+&Vq8I7y!b~_N-JZP__kFWgRz4L!4a19?F-S37=zaN4p+Pj zT5y!Ej%H5@tU5|zW6_z+=TY5s3T2UfW+p+cB3_*SWqDLuQ35VtY&ol=0)J{uH;!P+ zLrYoA#|@du#-hU!p2fc?zVcHo*SxB)l%|eSs;2mzE}~jEZg8?-d4)sFIPS}azq<65 zNc_NHwh=V|u-nE{+X2ONnJz9ax}Br*=X`!xPNxA?{1W?>^xfwkftirRz(hKyxJ9C+ z^2f{OSg4vl@ePsWOFw4qZJQCQ?%T3o?yzBsRXnHRh}=0NFm<9?cn}Hm`$r`->&y%| z)D|5}_JEda8PS`R+IrV2FRu{OAZ@VL`GRrYba3239phV+#ljBNb7xJ*8sSw2=`9Ob zONNT(cMSlFa6}BT!|y8fdaV2$aWacFPl7x$;QcKC2zLF?cy+u#7`lJ1XdUwlc1|Bl zi~KHlg1VZVLb|+a7-9|T;{N~}$o z8HyYW4`5B7Bvl~MZdFvU8-RFxlUov1lDs+}z|AZ8eZpbCU~^q+D-O+gm6t(}F!E&9B%Ko6|DyQ|Du7KWUi;IBN)gn6A2K*n(lavsT>DGQV()eeJVhAW2eMlDx_d=b_aL_eh}{fSEiVbo*28I=G8b{{RuNHp8Rbw+Fv@OV5S<%Zky^Bf#@9fv6eqCLpML9z4VgdK?o6 z&S&o#1;bqAgXw+)m`()jH$@K=lA-kmo(B^QvS^#kciM)x;$1fxtA{CE6W9e_bN2KO1!l$t) z4$wUfogE&ONWS6u?RbLljJ4LPT~_yTapuHVuPC$)xhFx|pmrm1&Fd&4t;gJ!;leIt4iqPdk+ID=h}-GCJ~9C35n zY;k#?j^;);#1S88`TNDO_n7_=`0?m)!mZPYDV^rg)@9qj<`<@@M}C&0b-$=I@AsLF zIz{0Yl(I9|&=agnKM6ors4Ed!+cFcjNz8KjM>zPzN#J%lja^ zaSh4`;mYj6>pCbCQK)3SXSbgI-DDG0`3ReC})V2^k3m1CxSmgN{pw( zrSINtZOnfOtaUyIbFb!nlZAUqG0UuOzG>cI71sS89v3GdCU$s~Q?_zpybDf~QFx%y zS6@TekHzcS4zT>sVV8`sbcQ5~*!PzNI}y}yVOcIv6|(b!GnmoW}s;a<}JmubP|{#-$&=X0AN9F{e#K1c~xvxOMWL zG0Z&+JrF{Jpo!Dq`NXcKQy&tB1F0CpnLmlVq51(&r{eXU$BKQu2-8cHcATmNk+GMxUIK{iaHo# zLp&4w#6wO+VV~TUh(g`Ym*Q|R*tZlzJey#%!{X~I&=#`8P{%-yh64Nda)R8)mH3zf z^(v@oZeYe9%9VlSfn%=VSqzbYNQ-eb0TjbNQw~&6ek`AOef#*7N3!A6yD{Y%To8h{ z9GG2Azx$h*_}`C8r!4AM@K5u0moq)^d(6HFKh6Z^GzS1(;Sg-V)#G1J=0u;AP?b=eKa zP;*}BT_G%nokuG<{J}l&L$p~Aq#nha~u(ZD^ z&+tV{bw^Myi@cL+W=9C|4F`As0Bwn%h4`CHQ_>j?$o0fD^?EGRnP&qYIpR`V*p~kQ zFsVZhn5Q#g8S*uPS;IR5yub@5RW$Z^jnLDM&@pt^nD7W$J25tEx+;zdpE8skH{xWe zvNjH@?*<2B5xc#Qmr@*JC@VKehT`{w@u)jW^wU`DsjAs%6kK=E8^?(yllf`o`!0aTu9^|}x2=DGrs6yo!j^NTtRP6^?{?gJFv&Z>~&7ThzChEyhb(A65go$C< zm^*cm7bh1He&oSM%)*d!KWQ=tWLQ1OHEtntanlzttj8IbSV53ieM{@#tn^5!`` zVzji+e68dh$5r<{OU2=jJp-7p0@3!DKy#=Mo+SaXxa~dtp@WQR7d;nI-fLT!DBk7J z4s}0cQDAm%EFSXfvD92182eQSJ%!vDd+ZDxW$_c%T&vNve7@pZafZ!GM^}8vW?*<#Mg;{ayRc8 zaCRu@PQZET89{-TAT+Aqgv3>c5a@-SVRPm?FPhJYtk#;0ClQuB5;}Lk+F(|z5qGRF z-XniAMMaH%A{@Qrr5|{zpB^EtY1HK6^E#_rnV8BGNPA1NKyo%5La5>{=V_vpD}q}$ zY*0jGK);C!t}uNSeLL`uIg)mnBPx94nZH6g2}+BkOo`{Zxgs>6=VipEF|JLW<=XBZ z^2WNfvR=Q@%yR04(WJ>eqN!yRv^y0g&?`bmBVS-6HBj;Xv>);(fDqdw4P zr%g;4X>KC#twP1}A8Ca4$q=`uFTj!eI`IlI)2TxZJBZ&V{7oHAMZ2Qd+)hVtIJCRa zFm%+`9?@0$%qA7?mvp!9G8Z;|D=rPxODOAexsTF&*Cbhw6QOLL5&RHK-56w<+%FMy zts zrK=y`LX90ITo1Y81lz>nG`Te}*iwM&1yj1W10Lthz*7hF9Ufs`+1Sf2~IN#q3Up-5v;_KbJZCA5GNskCW4q5*(4y zKN-Zk2{%)4Kx?@r~Hy)U=HEw@}m=58=+v}Rg&$vTpcc-xmqZz!g^ zKWS?6H6Oka6S;`ZKj@EBk2a1Lm<<)BVq)<%S`<`EN-RxNUx;P3H1gLT($+)lb%^wf zm!tWEBc3C@bmm+f45g!7O@sR&svaVg4L=gBtujLtd5-?pG{*^P&}L9F=c=Wuvo%L( z-DP<&I1BGKiV^r%==y8dUwnjh6_S`bEU&%c^9Lg;;E}}vZ^p~ZvS(Ham3dv6a95hl z_oh2_8FfOnO@ulpg?Lhf%khxDKU}Wg%x;GUHg-tUL!2-(5OH{7S#Jn7oM_CP9sI>! z#vc5Fdyl_NSQ*`oNz#HZ{A870<^E&5;0o9f)>2`l{sCN*A;s~BF zbdvu7$N@oFCL@_qDPJjQPcXbsje;D>r8n@r9|Lkx;j`bRGP_Kr*nD zXhZUTClSIG^^qbOqBRO!TO6^i|tW=0GP&A|nPvY}1QmGX|e2$-lGS-(v_jT}l` z#}Qdx>R23_@eGp3S9m~bUz2k?>^+;6r-;BiFp=DAlf=3-D@g6f157Tm(CgZD^A3I{ zyUr3K4v}H@OalJM>2BmsR1?f`&aV#)!@zA4%VrspwrVTea!jL7=3!w+cDb9=UxcxT zM{&$NN6-1c-KF60lwXiI67}l7Tl$Of%?}Twp)4W6X9WdHqr}Tr==D7TcxJTpdZHGs z$1ux5usZZ+Buv;*jv@!H4q}H{Ab|y6Y2}2aaz;E7pqSbFxWh?HefSQsm7_1rMf_pu zIvyeb>#5fqB=|fKnnGPeGoixg%y*{?j}Tg9l%r0&Op!Yze{1FuAiL7H_dvL@{ z59v6PMBs;vs71``9BAcwcZq;L`cwW0Ss*g!Q4ouc1(sEgWjt}aF@V_zwnl2cOfX! zC_}~=phR&whMmeEa}t0GuAW$d1@Qb8FK6GxOCSQZ<`slr_QpG{J6$Dm28Tjmm~+rN z&O*WQ9Q!yr9DP;2>ixYP2&_YAnN@zz#6l|KKV)OLZWoDYCZHNagQws7~Vr2 zRW$xS9il1SGAr_;KPTwbg_dIX?3!l``eX zz_Fu-EGuwnIN2&#*ADTPUYe#OsQhBo*>HD_K_^6AOU&hq++ZVEIi~}p=G-fnLL%@W zneRa^`};~#tS=nLbDyf-_CAj?$<_z&XyPTfRWi(=o9X^%m_-c1y=m z`G_}9$1qK@OgM+$Yr?|?-0DmhE>AIgr7$_0KCY7Rt+X*OTa~ja*tG40Ki9P4N8O0} zY()$m3BLqFizmnP&(-BUOf@w6ZoSg)sghE4{D@kGu)m3nSB5R-u`eEA zS2CDUOM1APPIC5!FJ?T&wJQOrUpA?XV6x47aVdNlhieN0CTkHu@`!bx{>-m=!Nw5K z=`9_nZ_7FyQR4c>J2?jvf~v2psKUza^Yv;z$^;z&n@TGM_C-?{-Cq!4Y7v&_9!$2^ z@iGYL)B+;1Cq9c%6(y3)EZHt?yR##+5}eUP?;gV)NXgcYi7F3-k3bB?4_L%9E81io zfEL`WT6yVUETfXK{>GVxCFAMuER@@IAt4DP)^Qi87NQAeHG)_F02>jrq?Iknq)Io< zZa7tD?k?|+@wlHa$F$)@FlOVHdqaCb_RSLEdHT$UlHX~hsK*zYfkEXZ6>YI$ilNL- zIe)BoH!P;>!vO$ta!NNYY#})_)ZBDWxI%<~QyA^TAK=6-kFsO~*vqu0P0Zd3`W+)X zxzO3aX}Mj7g8}~LFF|rlxrHYc=r7s)#O*1C; zP9Dc_N=wv!>D#pSRywkglhG=71~85&cs{q!>F+zH203YI?4vtqAny_ASW(*u*)Bxi zj<5wU3h9c$MRIy0HXks$Gw{Xa9S`163j8)c+JgPBiQ*&*o777|D#g*dEOp&#K>1zd=x!kvSd9N!U)NzxsWtR1N=;_?sIkI;!(eA zN8SyEvFQ%DS^&cnEV>&XX#VM#35NV4r6bBmBps7GR&2Stm!iali$zR zcPM@1k%UxemGo(#rK{z04PYDt)UU zd@xWA1z9r@#9zOZKsa5p4a9m~%i!G)yvtAbL!=W+tNoall=uGt!6*k=Qz^Su6l zciokBlRYQ*%w(;TJ2PkRgV<*aSw@%xUzk>(BL&1p{sl-KnB;pd%t0_iDelT3u)E8A z$$Ya$_NF2u#4uu^?ec|hB$Tg?#Pmpg0kdt4U4Q%wFz0mb2iponq@FwCZw@DqU#9@Q z|IwX3R!h5~a~?yeZiBBgL|p3&iCp)aHeWJRRal~s=QK2F#im9Z`t``(Rj9Y^d6r*| z3%sw-B;26b&v4)*y8(4-Mv}7mkCnzRE*$f7bMpoTvlEd$9nijHNo?9UVh0wr%WuHNFL@;?fB>PPa_=y5GBkJI5Y{SI~SLdNIzN#*)pjq3`SNgK>N zv5%O@fUZ=_t9;g^yKrQ5^aIhOQv|MM_Qv2mmXDUJVQzIo3X8fZ4*jveD zI3k9Kqf>j5WvZ3A__up2OcOZNxd{mGG#GHI21sV?T@$RMvbw<&km`bKk_Hx&y!el**6jqU_s+3D!;jO!y0xzSqt{s*s`?SnfrqDsUuxIh&_qp;T=q*1G=zD@gl z4$FqdhFQyD0lRjWY3Q)tnirJPJcZTDx{oX!<~rIY)uhT*87}{MW}%f@Q#`(%FZxNliBk&XpamQ2>o=KFT`$euhMW(=Pb-j zdK4rOqJp<^&6OfcIDIJc=K`(>y(i#X1&~;2>k|}9Ur7gUFdt*+HJ~I2;K(!q`!QJC zdBIB{JKY&@3UN4FkCjZkl}VQ>+WY+QE%{!Z3J~*c_khQR`w8O(P7F~BE>%yesb?o} zNxH=xw|;|#^c*CRk2eZHK6X}*i5-F}G8wBgsn07AKUy>@2x8!3qcr-X>_yRc{9*k_ z2n7Ml?IAV(T=Yf=Zcy!3j!1fP5*cn||28zk8LZy;ld)q|(*Fobn;o@HyJO5)w36wT zx&NG+rBpyBu%y`#LjvW%L|bsequ4--@5Updhd^E7;A`+4d*W1<55VM`ji z>bW0HPLINdFcGbn2zQe}SGpr8bmb^j8B5 zZjT(2KkdSWm|o5=#p%tyW262!3!pVYXQ;kHf?Ov^h2CD zYz}u~9*=PvyOdZAbp$q6T!B|%)usN!#<=7nIHEG{hJ03#y1^sE(9Z6C7maP4+ujA4 z{9ACSg}Qa2e8>|+=J(2PmV_(!nQ6mz@y+^F-qn>}H-^J8PHGKpIr7clUzs_{8@9bO zTh*>^c7@ZA#BT7d%;#)ed81012Ol^lLO#mQyV1-%5p?%9vznxAtY%7!pxo4!Hvu)b zLQOLvx;i)YQiziF&Q|71f24s|lW+vZ=WI3ITiK%(y)iMMrYm1CS*-EOE0e8Rbq(~? zaMBkm28&x_Q&yB5zhSezj$CO(+7ZX}j4v|@UUxU^$Va2jr*PPN`N=omS25b*q>>0q zpD@kJbZXsP99u&z#=UI~Ey*kee1JXvrB4R3Li>1i*K9_A0ZI?XSjs<>#9E$U-rfcC zCt|m=9@PIN0w}qP5+X~f!>rBlitbgUhf#ZGAJ}U$`b?IdXiIflw?H;=63X85%u!+9 zbJ78SYl>oC{}6mXRRjea?kn1}`V6qx^%GCe=`~1C4gJNM&aM8Q?EEnfb6yCK24KX~H2d#S+7$)v)5-v3%%4Q(@3)K+_#a^f;^o8k6;v;U9PMGyi{ z{yM*6K#HN+MYg&w3ivn-Q z{2{_&AXGsH#s9*ZIq+TER#Ec&U)Ub=2e$(Go3E=3En=rAqP=kktQ7x(^j`QgajEA( z?ZNing%LfT>fHLhfBdrpN?|JZq(ziaYzgEmNsbmMb-ZIOLNWhvg$glA-nB&vDvZ5) zQBKvd*CMs@gwg(=kQ>xza;%n6bbiSaovglj?{R940+@e5=yV@oeijWP(@oe7rBk0W zO`tec8C3rRx>cmQW~fwxf+eP0wd}77MIbnx>inl0@XuzUpvL{-4_;r+!3IM5PU6;I z{^h(2?Ghe?8Z*@m`e$YHpMWfZZuk0sL06qBYScw%+O$ce$?fcha96z5+HJ>hy{2|Eg zKUV#O7VqhXnRyLV?dXl9OKczh+2Oxm$6+U4JHNE~T9+J^wFAq!&i)Hcpd(|$UXQZN zWaE6tW4I2^`7iW?E3K9Mjst=h>-UP94@chpKM?>`&F1|h1CF*J{%QU>vgDRckVYEtlOgrO*ua&8hg5uH*@`Cp^- zuLkjygCJbY7{X+6hJXI{|22%oZ44uv9r#f2<3rMahTfr?|eO>lWnw=Gk1IBnr%Qft+D=DYz*#NuE zL$W?)-?WXm@8yn1wn0F6?;Q?u%u(htOo3k zzx_SR&NA&59cLG-h0i?y47y?>pCB+w`ml-~&_PM!qzZbdid?@*HA6va-~N?7)mgQi z`zVkJO09p&f8Avdg0=J5yuj_42UMP^ar1(vn zhgJ>5qO~b-IYYM7Xfak>c4NPP3R(~=nY~gOWX$8Ea5~a zgj#|?g7Y{k$-pP1kh7yUwuq(!1+l3sz+GC4YN#C3A*M`3RmVjH^k$lp zO#X>U*OKX7F2uBP07tzf#Ei_G$e%)>U`VaF=)fZ#{v%Gs@(I)98`UbaJG(o}J=;3C zRdp6J(vThd(?CQ_$CM{j87q-|`y}laKjt3yd?11Vo2)k`32w(=XOm!GtqjS!(s>dw z#DvTr{~pN>f*-wh(Fbjyf1#Ty-%+)8Bf-roFYC9fIO6fjj@$v|n%86mJt5TY}hz7swqzx5Zy< z{at(fsUOqrcVsW&N6$p=SMonWotA>~5I1Jp+m;kxW>~&2M_HN-A&@qb=!>t%l;EVB`+jsDeb4T2faEf}+uZ{1KcMF9_L^H(-X;`7Z!r&TRaj z)EF!lCckG14rBr-sg~4`_)f*B?@#RTLsd~sR=nY33jjTh(DZY5Uf#e_kG)9~CskEe zFxHF}LpLhjaU8p#YLX#=5=-7}a-aGU@yJYAqdQ8oo_0spxF~do6d}*w*XJt)2=jAY=C2bHkRsmcsEO{dGV2Det zRsNZzJddhD^WTq~k{oMk9`-=zk~RBCYhgfzhz@#6D{9T6jHX&)Hrg#kUIy1*XHXV} zY?>I@W0y7rm3zpDf7~!XHVcr3DsD;lrYZmQfK*f!qr=v0CV{TIO{RMd&CFy72y*qE zOpqY=z;}FF%{#%iQmfPPE@~l#TpzX_Xhem&K~I**UfOa$ORgNmj@;yloB>7QFnh)# zbEEw1*fRNWex;9?op2c<&ky*CYL+xAhaSMu96qks4lqnZI9AD;-$PxxMCc26AWZ`W z=K?l`c9`^rVL`~p!6;fuV=~h*Po&19oACLb84+I`zZ|<>?YQG=(TdzM@u%xGCQI-Z zZ;XCg^Ph!a2PkU^P^Am1?p$gd_g8d5o4xIwnQdEybH+0rJ((`DhaYU^wGT$2LVbbxf>@Dzgng#5lt& zD`;;*jOYLTEM-RqU`#z&hs?A;1qto5^Gu>-IR~yctlU@hWx&%}8u)`t^~osRQE zRrI<=VaU1uz~au&yQuEl0a}ZYcs!P!GQy72g`ehilUyY=gW2izd9T5rVqEvAs%}X; zb1dI70@M#^lRpeuK;F|$i`98Ztkz%`&r2=jsm_@a3OZ>(+K6Wx{!9)z++It*u^9Hy zJ8vd%2*u)Mb;^Ympd`J03lnX*TjuttG>wWDX`S)TCrl?s#uB`pt)d=Hpyq@S-Po85 z09iPkfx52f+x^@`5W^GCn!@{1_J8T>fAiJ%5>kKhgk zcn|KcaLfYEk70(S5RgEWI>46^Gz_X2H;X&y6empwx-F^Pji@^x56*O1>zDOtJ8 zx(@t%ZR57ToQbGi%{;IfLtr8<#}(Od{~W`*SdRn~%hYTau)VQB8t z+tS6=n>yCjgvm8wm5WT41a5(G?1|NV5EZYGX(84u36v#gzb6Yfu)rC*x>CFdr{N)L zHixiN3Hqf!*r`(v9c8cv#O1ih^pNHVtp)r*Y({7wzrf(BR(07qrW5?qmzk_lv5tm{ zRabyoQ@sv?{#`yO@(m8^v-KaJ*S<~$ll_huZT@AQa4`T{BO z*eM*GWG=A7rX0CL0zz9wh0t%!w5O1jw_WfMw-beFda?yHs>TNxsFAcGUW1*73&_-2 zq`xl&wYm+0B6VbpB|hhniO7sdVxvZ`+IOFEs18h>ds`a#cKtm1xn>RS`(5ZXDt$Oe z$p%`tt7cLcKl}-NOTzTc5XUmlN;9HB9r^@!D=2*w1%GL1eF~o3s^D%bgApNji0Hky zl6-Pm&Xcg*w!cX8%(EEcVqlIYq*sjMf$*4$9NmuKkJq|ksKFkC9vm<+pVin4#cc&% z>t8o4o2pV6zHrW&e!P3zzBFM7VXxlX)C4Wjs3Rs?@tHZeV3q|m1g*l$Wn4ao4R+ZgGgR|2@OWEb!-el-&{f)@X!_AJQllN7eUow}9-&iCJ`e98_Q`p} z97{eD4ncfhAL@rD9&Ybc;;9w{SrbgJ2~iSVY+V-*4)u;Etnmbvep07uwIXZ^o_2YG z)NH}9J!b|DFH1l=zUGByWV0aQhJ#C?3Rw}we}BK^axW)DKff#A0-C@VOx@yvW|Y00 z+eOS!G6|Y2<*_GAgKnbhOGT>(`BlqdGL_%z;x$FLHz7*HWF zX1#NN0c1v_uuu*gzb#Bizq|wfDxB{I0zufkzxql?)lHdoiHbQqZM<8-Zn7C0q^}UYCJ* z5du>WNhiEFQ30l@>dd6jBffo{FS)efvJx)+_fDHFRaiw!r&T!CF3pAMsza5FGC&LR$uyj`IYaL~zK zl63Q?&b;Xt$}WZ6f(6Ujn}48NG$3gP;>QnUPhe-UL`nJ!U}i#{y_qSOEkBHlmktjt zTvBV0CL+?x*#&c^fTX4QGzA=5pPleBR<8i_xj;1yi0aa^?YcI(GFND#TptdVIaH*s-DeX~dPG zXzI?t`n)hTw$W7p>8Dk<3? z3!zR{p=wz*Ue{ov)dJlibrw_!c&e4+ICIbZ85PjnD<#hg`h*Ar4Ud`Bc8hX3KH?>N z{-2(;nJnnLxU3zgcK(o38}hAt41J@6JLJLStVW0q$>Oz}woX>ZU6j;xKu%*c2ELY; zWMU9y`(?~r!i(3LgRX0Kc;xl&b1fyf`x6oe*HPV>l29iO;O2nfHkxnoTJuox}+T+pP9Tx(=VY$QP40!uVFIthAGdq~?B@ zRijUSQ;?+;82V8{T;gc(n++z7I&K6e0Yh!>7{}n9tKJ6&3{yKF!47?iAeJ?~SScs6XBANsePgUoTg5~I7tcdz4;g5jRUhLNWaRInB|XiB9#FUm%hjs zK{#w|5^AVCbu*!&A+ni3J8zb1e_AeP=M+gkOQV5`?VL|UXqvCIEA~H1WV%Q7D=y(+ z1>-G6gHs%__k&ElVO36PlbhbEoh`FH0jj2XJvwFcJT;N_0@&e zd)Pnz(xNitvFj-EhzclyQuxK84T2WrO+YK*Br(>;3`G?*Q)4i>L#H98`RTY}uRdgI zJx#YfLX1UO+>D{IRr_CnIoP#1cqC@TdeMlu%4c{+GBMtbX7C=SAV0cfw_${Ic zP{z6uK+O#c_CZR1-@j=lEgh;?*t%v7trU;G-3KW(Wnpr9;vea`tY+X)+pcd!$cG~( zPG(f?TSlc3qSP=|_9W^7WM2*)Gxvo z<`Bluc3T~``hzW9t8wipc2r#>nuw&bR+qj!L}GQFS$RGPa}n1zcw%XzLQb{xmTP>S z=Gr)pyg!11Bv;->rJyLhnST2Yu6lR!qZj(XG=1YZ4l$P!-e{T`l8@-|27SgPDr$7W zmNgn{u{31EzGN4g@Ix89P(U7D&k=84cQc&$)Y^Cn7aF--B4|$BOU0wHB`6vCz3;PR zC)LD~U2Bw~wA?NTt$HM-Ao``;H1J4iWq8`pf&qRd`Rwo0`c z1Gl15X-?r$m1jc2$Ixk+oG329KjMja?)qZ;=e7=|P#Sigqbli#p0U(d5FRdpP`^3h zHLw;=g*RV9_B4#eOxagd-`gl2QXey?ZZY9S0lJ9aMPV*~21)#fc?OL9saS0$For8NV!yS+cWnj@&dJa&o z5u=SX3>b2@$U0|2SxnZ^SAUFKpn;Xi)Hem{6&yg`sA`Jr$MVNN<-Xd)A+u$A&AYb& z6)TX+ZdwQY?v zL*_n>5qz>jml|I3B8t%KriU3~yF>2lN8LNH5Xf`JNoHnJqH`2}#(fs;KrE3@mDb67 z3lngw$WHN2B{gMAj+B(4(C8n0jJGw{?GRMZoE(6ZP2A+OGu>J~=uYJ&JrTYp^&Ry8 ztnqy1yvER=0C|dSMXSC+pV6WUbjwLQT34u3&Y2<0Z;5$whop*EijK`+vXA0Q?8BQ= zV+k(NYGqJh7R5GIhKVeSDWxXR|3-BgxI_{=Ccy2n3r#fEQKXom zh#DYNPycD6enPu?QVZ|N_kx&6-)_tvgn=7SB7T@{e9N%^1(OWw91Gy^EdM@6k_DeQ z!OZ+==b>2IcM-I5Nqgon6Sr-9cdwyS`df;j^)JLdQqCk1=HDIaT%?|(ZYlcSVlK3( zrsx{La!L6a8B}6s*(3*>E#9UBshmXUQPu_djgA)?)klc3&uY?#2`_YrP> zFpm)@y_sn%LZyLWWLVLSVDNQIP2#mi?IB2~&TfQKpu%8(uY2^3Yrde5+DCK}HZGf6wR9z(+OdS#|vS z@p~V-t#Q4-0Bi}~K0<2wSwDI~esYzOjQ~;z6`3GTCQF#Hgo9k^>Dyt5_m(En4K?g_ zRiOA7bN}j1q8yxv_8#apD69a@T+*>Gtneli5RVyfG1&UE_gd7d-)LRV#Qq5utKs`&v_A|!j?T%#m zp2jD*5aj3~xJ12Ics!#n8dnZ)4Vn~I7w%tnuJI!1hEFGa4selm+Ejn;_}=GOxm`xa z%*D>=_5%ors*ozgc{zV17&SevJc1u3SOT=<8v%3MZO+RV(%(La(@^YZU@uw~NLD+I zky%7pP_-JOfgNt!R_hAnuqXm3@o{PrYPy*J0)R5crPP%(q<+~+exTgo{u8)hvdCiB zllyF7d#FH-)}%!gi?YQ9a>NR2McKBgjB#??!$XVw=y7sTl844 z_nbxEV9~t>v;RybMlXtL2b&aKkygIyOB_%>k**Hmagz}35TH#kQJY4E$ z0PjVVK^gT}hSWt%{y$k*?`Vw%iAU2<+fr6zUb-Inva6?%O#G7;yd3FWO6Bsxz`oDGrvYRH|_4) z!M@)0NMqJHol8z8fr0?`6|FJE!?L*XJ|b63Ud7PG|5#U^Ljvgm8D1?CL}(i&31Vp1fiuF=jcg{ zCCi(_9y0IBi;iW;ugLJUs zem{Khx`ruBCXGYLXIH_LurAMV9)HA16VA03Gwc5o3nkV27^+&+`o}v2G|A7f!M}dIHTllG4!j!pmBzx|t?(g(O;jK= zqMv;Hu+3UsDEi9}BWfm%Mx}T1tF|39CHDbbC_{mX%p)i>8(_TkC&ich*PNknxlX8Q zQ@J^`RDsVF#0Eo59V>w+p|E|&3xI#;s~v!W?<%s7H% z8zcUUy*n4a+V--`4Bzap6BiY(-=V0gNjqiV#uA7?V^xVQdU?qln#%CmMsGRn`K+m@#{(hAN#+R%x%2Sy9>+`4X zh`d5n3L9!4kd(h@{iyXE=PAMQMF8z0b|l~TH!HOP@KpTFjSg!(9p5+*CfGY5jGV}| zg^($Hp^4R=q6O!d6CmDnhKNsbi8uaJ``2fQz+BNQBj79TNrtZh22H-LKOWgvWuy#J zlgM*cH$oqgD-o)^+!x52q>-P(N?CGOhG#fdNrC^Sw*iB6r1e>v^I=iK!M-TtbhQ3W zJt!>p*ZnSMw>84#n}n<$_uh#PiTQSvTx%5*1grK?h{%}tF3sX&q8D4v`-6lUhUd@@ zwQxEum(-J#B#Glm_?_G@9IHKR+!|!0@fQh5D}RcukT(da_2>*S$f~I8CYJKhUj~yz zs_+tHfhc37r=R7i;g`lrxOoYb=EsM(S@dyIUW#t8_u~BlFRvWtKIoo_sy_gc&a7@m zuMo8la{@T5AvEw-tUjl%=)`Rp!_WJ^9&tDEg5{QQNUcRlDo;~^Z z2`N&5*jpiHc4Vf1iqjoCs{glE!j$#jv-c=_w9M>!8LCFJ-<9|pMkj>lJrR9Op0HLG z*ahD!rbVO62+Lk^7d%l4#1Ig8XUJhAun=4_A#xckZF+JfJFB?O-Um>@vf-i9j4$*A zH+8vuDO4Gdg4=Za(Em#GMX9(k!o&+@<`NAX&w=XRMRia&()!tT5SZ4%@>HsL`7Yhu z{FDx5w~?M-!VCwGA#Ng9i{47KEW*{q zwTk2L!Tb?lm=>0W!HX(_o91E4H0OtZL3C|z6$s10rttGA=fel#HMyJ2ADXS-`&djC zrVQhHv@>O3FpRzx@T>KV2Nx-G7S{G49awwmKkEAu-bdkec~KwQA>dwKf>I(;ly$Jb zuHJ^$If(LGPN@LCUIkbk?FkA^q$NckhR^PMStj9i@@bUSrL@UMwa|l*g7$;_-9BI* zGm5C%=+8{4-evblpBQ#YZC!IbK)=it`& zg^}@!)0|4J%#8%>xRVWJCz7c~5yXt!D#6J)r~3F;T1i}*6|u&7LYG#r5S%b?mC^2} z^@1=>Z;2BM6;L_xm$8YcRyCtDfPuPP_G9-1vOPJdn+4Z4ZMtl;{}U?>R26-OlwayR z-UJ&$RYrE`dSD|%cb*Q^ZSV%s8Oj+1=jeg|>F_7uLOCCki-r9voVnW19jG0FQ?Zzk z!_3!wB+a5U;Ln@G;y-rsw8P7+ICHwBKm&r`$oP1=f#oN)kx1tAV!mNU$;Q*vlP#i} zz9e-l315 z3(xr|dZEb143BETT$9~EaDY^=<%3n3!r}a>%+d+EIxxy;Me#V4C=HIN;rA*Loflp| zzItAvU9K@tJ){glrr0-yOu6H&pwrRhovPDN$JJG))^u)+eWSRP@Ch<(m_KKY9A+GU zz#^NzLq48fJ1iZEdMff>+XB0qwXxniQ>)My0nFTK70@FIu@MZ+jKF@j^^>!$$+!~i zy09{UO65h553vW87w+I|giFfMY)9Enp~B96K)p2Dex^nCB%1}7`zli^`O^_pQSfU2 zNm$Ser+I8kcxM5ofp-xR(u(Icl(N?lkHuIoB9q{KC|@w82*|?(^-_PH)oaTTp<(kQlWS*9xDutFek(4dV3@YMjzp9s!W4(8 z-d`lk|15qHFw%RG-;n-Mf@gT+C)v3YRBE>2!q#)tGmol!OqgsF(#a=8Nh=);xP#*F z^0Q)ugFlHQAIVru|1uQ0BT{OHqKKJS{Hwo%(~}Vu)*%CbqmMJ`)bVUB4c$8g-pkmU zgbKp$0a(8@hQ{Mu)mJ$dy|+?0>sU$kH#^WMu(oTg;>)(qN&NjnI?>OxLTB2wdd{1T zM`c9djEfBRa2~bX`*9Ay&v?+vEFzXcK67yYeMcPaoW8o=$c$V83Dyakswa+w9?lsX z2?iF&r6{(e{~$RKV&Uuj%@}MsY%(@B+w>y-a+$JgowU&H5@!5)8foYcg1)BFyz9Q* z+R-ITklt%U$yO*I;H$guRk#N8lb#%GEwB66 zZm24QDWD>Bbu{mdZ6wUnG9sC4NzBa=Z}sIrh&$Ud_-5o(Ig}6iubXSt!u*P3h;Hgk z8)(D!(hP$pCI~SSiF!;wLaZ#e2A3hfW*r`=pgI2uVoOJOxl5z4HZKLYd*I#?n!8xU zFJo0ADw-{9A6zO?`R{%OY$2HxvSPi@q3&RstPoK9|JZ(!&@^%)2%^u@YO2V&ghSfr zf}T+sGf}DDRM{}l-J!iL#agIaR$N%%p=&B}WGt?+LW-Rvk=ptFO1pGC(?N8h)0tx= zg>2~7k)&@Ue0ac(3dE>H*)~S&4~(p_&T{lz-hO}D#LL27{>F+XFPjq2;Ig*dUDB1C z|1J+QmXb+YG|xJ5`=eWqIs1ypij>}eL@i$3D-1&vc{`ZKw2NLxLt|5(@%b%dQunA< z^*$7~37Ba*?ZfpDrVcG%xP3>b6jUV0X{H7}bkGQ_kRRoDBXV@%iEJbrj4Z0E@!)9t zxLgQ=^`7*f+zyI@M#UHoBK#35L^bNJJl`n{aL7`6i%KMo1lgM$r z>mlQlMeVOQ(}3Gzhqxz2lLFD39!T+`qH5q#7_ZO3)TwZzm_^vn>lX=r%$y$PefQCt zCJ(5>nU@-``h3Srth(E<6ubWxVFkt?QB9YG1-51)n11!2Q;| zHML6EV+yoOk+j9*V*`a+9Y*L3+y7>dD#3q*ifF2qF=U5LD|ktiW|t^fuNLAXmH~-7 z^;A(La~Q#MCEQ1H&ghU9Ss(Ky2XA5UxaWIkoS5tRpK@-;yX7U_1Qu=0j_C}+cRJ|g46o&tdoG&_CbOncE*OKq*GD!AdOYZ0tsb>#{F~d+ z01rf6hA2X;7`LjU$IA^2@Q&XsXF6sT3`Zp&m3@diQZ~~CKqp|R<7T`+Dsh`SVy!Op z8#I_gm8Kl0a<2$P{o?VZQc=O1a{=(i&(E)mYp%4I6nB}+mHv4%ZerZWi6!l&+P8r3 z`0{YcWFp`#5alu$bn{kP!^S%gQ`$Dtyu%C;?^N0c7KJ~Hu}Wa)C}W`Z)Hm#vUIJ5U zWIM0CGDDF95>!1R*J-SS+MDkxB!h~h*tG5r>oB~tz@XCl9RlE z$BbA!@)sIEB0r05gvu8?lb4KbhNW9pUF;^EXNCxBVPISaH1z=PGaCfZLV3=rZlbx2&GON|B1GWRG&E40}PKKS-%cPtMBt0 zwAN^JCYf(T!rdF~D7f6cGtKVEm(?^=)gL=#|52hdg26l0O=cS}(&UK-Kq&JogOW)x z@2ZV#K%P?nYni!=%p&v;F`6!2s9l6J3C4yxl#WUL(4DcA!@mIDuTUbtcyzNA@;~Qv zb8L-XOZJn(7VhPWLK%Bk;H^poxHH|tOfTn65vYM*R)D{iNTv8KGY?F2kyeSs`?rTb zu~HHXYmRf0h58Z(aZfx1R*FetK2gFkHm}4F$-xV&!xo(%XI9FE>YgtN^+OX1vIPW~ z;MtR!E?* zx8j^iWIph5-@gPxzIr_Rjc&Oy(WEa|NTzD2w?@HB1ROQmxcN&X@?%)^t25QrQP)}s zEfW1aVqAm_+VB`8mR{A=S)%;~7%?3VSq0`FPIUK1#&08JTHFmMK{gn^-`4MiDl{q& z@%&!Q|6CxZlDpwGCc&F_Fz(K*6F#^p?=k>o)F!Y1$BiLwIpqw=&>my+7Yv1#5^$s4h!NIsiOe?UIb1Msi zyWsT!mor41&Nlx!AmZ`fu9c*c;}_|cLa90j@M(weP^z*x5>VVy6a-uF3&T+8s#Kca z^`#l0wR!h;yD-2g%G9gCXrbPStXF73FiOvOJT~d5_`GJX8H_w#&s-v&azmBho5iSM z!f5$U?0@Cv623Km3NSHfjokipjpIHwfq*VxA_58ySbjD8EaA+d`NL4(6H3cnk_&dE%@; zd%~6KQ)7DKX(83RIpcBH_iE}jk#}G-vaGI|6=4`VM!9<1VKPyvBa=q?(qwAc{R4Bh z3dPCoA>2(=y&el!?>@9s^U*0=sT75v%|z{2J9#mjIKmg@5;O7a>Eg|F%w-f)2boMM zOo^4}e(P`e{`uR)NE>NRi@WpASYPsx9gp}y{T)gIN}DZoKR9Y7-**lmy0_Or>kY!a z3K^%xtH>7hxpL=%lDZU!YX&q8gdHr^YUr=`K(VmqIj!bLMAqiuYvg6Vo8Ud?WH6>> zR{My_gBNrbMadLvZF&XQS4KQ)hRnH4_nNI6g>WY0Qqd(CV+8vF2nnK+)HQKwPbr_| zMJKhp%D{l zyCALpB{B~=X8f7!A!M}LH^o;IlpV=!-iMq#S#6)2%Tdfjlibjb7OxuK`p;t6&CXWc zZNwlK9CVciQZ1D!1!r4wAZh_q#BuXpvkEWd$TL z*1v5UDBtkYBaTxAaT)C8M>!Q?gwUR%*l|BCa8ZU4NS&Eb@&s84p~SPMl>E3xu6u;; zhN?JLsrpK8UIo`adLK#ySf7EJ&gXH>EJIqFG6+c z5K%hk_%)GfLgfmQRkz%*Q2nv(iEJ=PhF+z+n6zAE&LVc!tbi5gr{QY|dr$JWs^u0$ z5{H#X92~l$D!Q0tJKo zHLRyE-~!%`VzwM#(XtTQx)@~$SBtz}0A;fiG#8wcWzibE&zV<&aNlchMOIzFd)+F* z*kOXXL-CXrOGdVX3MK_y>gt)a9QvfOfU#viE2e&#S#nvE&A;;$G^_L^8G%r1hXg+v zezL12v@ql1Q!H}Aur|M_5RE#TY@qiZc}oPyA+|O2g$Xi9CnW)@&Xcn5KpSPtb;x}pF;>R1Io1fP8nd~R7wt8Aqmu~Dht?5pps*=(t@T8P`?hnV zhh!Z=#mwwK^WB^ErWHtwAyw7jR&*}GjhWm}c~#gAO;o-)(;P;9+k4W++#1#j9~ ztq}xJ85LAsa;&-uq>n~c5hb4d2%(Ab93S7D3Wsj#*n;ecwFT;ES2ZUZ=_{6Fap0^>WLm}0>UOy z#!dfmb{wKneIE&s^A!+!k z-Ijr($jJ!GkV+!wdr}iBZH~er2@j3I3_YfZ_wno(!_-dhv-v3|ws(T97~M;_B-(ZS z31IH+>W-nR#k>}%G0BMj=}qTZ{@CtF-&pXK&XzMUfnCAgSmr63Tj(>{8O+KE8sNe! zDk|-E$Yq8bB%tlWB*%T7E1#;_=miR9)F-pzIC<+e<3Bl@E`~;~xws{1@JG*xGKdjQ z0#4yx@8F45Gxu^Zpc#?uz-2Hh)W3$Z71}gzf?H>1!J>i)OU9o+pTC(^tO(y3XNrg5 z*7TrHpeyqOPhlCje<;a{*H9y@p5 zn-!_3RC1tyHfn%fq?%^;hyKWL+Sc*}8mx1tKDOW02HWSwLirxXr1ip{e$(B5NN|xn zGQ5S;WpdVk{pv)J1J< zzOg82ic_WljEEgEm?wSG4C-UhvQ^z~P~DG}O%y>-J|Jrxyck#~lI~W?N7ORe z6zSZJg+RqGIEaZxl^y&@w-q$7Pe`Q!w)_|xj5w~DRL)Cbai0>ERk7kAcPOcL zPi!cRfU7UiT8Le%2>HDH!Jcl(jioaBvo`+##tspoXb%C8(O+&1Jg@Fh%93W>@P)7^ z)B6yHm*ysl(nVb4b7nrI7B^6uv1t3ofbkR{;Jgi9;#vi1ji<=Oy|LV@7BJ|5S5~>i zRErs&IhJb5r)N+f0&G84E$eZqBMkM)`JAFBQZh++yb!k(6?~5{c7bRzQ`E5CK*Qg= zuH{l5P3H1Ee^Ku>X_Y(qj5gKmVE`@A^%wzY@5$fdDGQDV7mQAB6?FB5Qa6l$nuS@F zT0o3~-wZqjwyUX)F3FcLhy<~>e9Gja6yRkHS_9nNLYbw*s)k`CZsl120COA(qNpSA zh8TRRh<0{%LabFT+>-`iHvFJa5MI|(h&^(s4so+E(v}ofg~Vl-n(m-PaYgmt(pm4J z*FR=01Q@8ZW9|A%D$rBh$J9Ual;UFiL@)#=d48qA1m@ESI~0nKpvjZ%Ek`LGKQqV@ z1UK&-+!U3!JL$K{IC&o@ncf0lh=rhNKh4Gm+#7rU0H>tGTLD4m%NSHQUAATfOZ0Nmyw2>YREXq&(8JboLRb>sbIma?t5Z|qmv8_^W;0&h)e)68HEr2UvI zUm4mvAx#DJj01nNRLGV%b|&C2D?UwoLYq;V>40NIA12`i$Q8+2lwpxxbZonC!wZvG z9;G?#!F-IZ-;A1ibD^BYk!!+m`o!*8@a6kV8y>YS~O+TYwH}r6AzT?D;#ZB2O1dV)&%7B<>C2?1zuPuCBzIbsrQO*jf9&#Vju_= z)IoheWuy}0DhOVeEyp3Z70}%-}tBym9fvHTUW00 zfB1;Z6B4Mgoy$eQaB}|h0?7km8}wx$3)U#;HIEEUc{1nL9FkU9(Qd7x__z`HVQTGd ze6U#7{rC;9f)IjKx>qV`;qy5~?Sx7%U!wy%4Q&a2R^MX^MOcb+=p1&&)TOswK1b+c zQv?cKZ3kJVfpypqIbwxWNqSbgaVRGGSYZlHGRVrN+&O$>5m=dtxov738<|g_{&_{6MEh zBhovUR;?6qY^p)M`j?53VfquPob^w%Q?yk#=*ES6QvHTKrm*y=STV`XkSU85k#p!` zj5(?EqvBc-s7fLJB-Pa zrD(ZMpXQ}tEmP`3Q3#dTMry__uAhl<)Y9oGMzlKjl$(d^e2(HmYExMQht{LeD|=OI ziHs)Mc!NQ7w?_n_7;}zg(z9pX^X)Q(AYI>cmY^(md&C-`m<3IIQJ1K)I7vgp;m3QI zTB%R5)E7Cb?w(0eXG^DsQZ^PH@*qQ9jdN~J^Il0n5{`k;UWL5EhG2C#op?oKJSJY+ z?QZEuv^7EYDadSE<-~uX({`3wY-Jb##FPP4uLRDxlu50hNh*SdgQbj$+MglJ+$-Dg z@$C)6hU>184tZYZ3`yDTJ6k23vRmCiV$`8{VmcLN9%80@*Q~8=svi232T<)t*tBYL z!NKz^n>Zd>O2Zw$)g8x37^7ZNxaCkc2O!XKn_b(VjQB8l0z;o>4W1uKV{ zVX_{J!x{$64#{lmsA{OsK9Pd1YaMWx*nA)}3&LUG`HMp>W3zA8zG4?+u)M&$t6xO@ zkF0g?)nvb>rR?`1r|815S+Xj*oDHxRC=SG=_?D!M_@%WR(@WAqLE}>Uku}_+YVNx> zekMM`mQUx2SNR|VE9q6?Nn;QSY+&RJ3j}3)<11cmbsnAzBczR$1qz2lUICdyhQq%;5+P!=!&>dvVsGKP%=05&X;e1&BR5v=(u3jbPcPbR3L@I z_vl30i&u*;wfw9AQ~(*Zgi#tc-`K)GrqsM!2f{ySsw#6dw$!U4<7IAM+KhNf$dusk zsNleIGtY@lucOao7Och@@SSJt4mFzv7v{XV^@BI$mZGCT9i780!iX=Ly&h#+amsv7 zn$gDP^b09kuKn&du*|uGVW9^t+JW(r9OPe*Xo*M!9D#o<9`VD>26%gp0tl;^%od@0 zq|}T34dy6Rfls3>a{}$Ikx1&g=;I3H{w4tfl;OA`mZCh5F;!y0PENh0j|IBLS_Md_ zPi7d58+VuFJs+bvvD?r17*St~#d3J((ij}oc0r`Pi?M=5!-Kv^OaRP))Mh>2c(AKTZ<|FHxw6!9tq(iQ~4LM?G2R#aXdo!Gktb%K`<(F{QSYhQdSy1 zgM{K2pB$7?5tP2*LEjYU zloW7|DL7Ms_D32`PZbEosb`cUvpcz1Yioz&(HfOM4$>Qu-%8KS)p$|kSL6bscI}iXD|-3UsClbZUiqEPz$Kb#qZh??hlj9 zCj?Q*OokVc+x^JGw4=GZCw(HKR!8Qc<>gyJ!THQ=PM<TJyTLmZ1c=$HQhg+X|XbG*Q9g4UG_ zXD)_&K(?j~>prr8!LY#uOz2|xeaB}eOu>CLaBivLtBygNF5cp= z8Xya&Oj2@p4FFQsiU2vzeW2k9VR@BjC>%D=y57MS!XTr|1zO(`Dy9Ils8*mph-681 z?)s0~2K-duioT(Oslh#){7YNbGlP*31rQIu7=c(VS3M;%q9dERuIir&0j=mfkYKs- zL9(TX{{UB6fzjRSpuVa(McL?b_A45cCBGwCsF2-(MzJAkrC2C9PPXY%3C8DyQcm^y= zIq~2S@(`m4a{e*zHZ@ct(rvVn4l-9RHe&Se(#9H<>F17$yW@pSGE?-1Ep zjSogB6@~*F?F#&vMj&ygv!6)NQ2rDL$)4^6iC`tVrmy=(JsNPQ96;IJPGWjA>P^|A*A4Y;cre8Qq z{4l<22OrvEW^nsBVg*ZA$n2Y?WO@)140=-;V5Ays_G>$Y(_#`lQcM!{y#tG5YbCKZ z7X>g)78O}hl#@ z?-=@r{wnw;0J!N^;eul^zrx)_}4v;eYlAL=G=4GW8xr7=Z24kD74>o0L?vbM@vTdnMKHP@6EpD)1`wu}4W z_=?<@DuI|wML}GhLMEGGa~UGQVxQEH<1M;V163d&lJI|};B7khq8 zN*O`+SX%gQE6P|JEwXtP@5fPA{VEc-I)M`2!iTFjF&j_s-ic5RNq~C(32JPu$EQR@ zY0AnFZ50ER(04fnQDHji4D?uVyvxLJ1`BJ~hekk`^GVil$^qjzxU<16?1@M7|UiUYncMtT8S{U;LjWOo3Ue9cQc z6Nsmmc*}Rw^k7rwY{&OM*^JkXqi>$W&7HZOaQ+3Zdv}DejSa7^OfM8WQqWH5?|8B{;FBo*Ivi!BA{O zRSR^1Yn+nK1}H*axU7AuDvvJ_7j;>@yw0s)&^;y%t;7r!w!B_n24!|UY-jj*J?0;` zrZL?pr3#^U8lh9bd&@?8KOfcoYo)qx1NkFcFyddbH7^f{OF-ec5F7kQ<_!|9hh`tK z61C+a2KO>0?i}vWBk}DKT=E6>yN^SeXMI&o=Jfi(5la%rWUVk52#QS%C%k9cN8d2} z!4$M$UxP*xMchL>6eyeNjtcudqMiEr7Bf(DBES^vvtEn>RZ@~$6l=t|9zEVdteFj!ay3L7wsL8g#y18&erv#@s;$IarXVb-*_r;YuOkD zhW=sS28~moh`_SSeQAUBlm~@`KAgT>!`$hB9)cg-0h?B?HJZ|5@sF!6DIE#%VyDPrrX%B#(g7V=$~%&85KuX~4w z<^~CDH2L!VF**!>&BNYQ8LU-_Ds~uSIgLPRkue_AojyYRL^PX*)%e7AF6pb{E3t5d zsAU8J{8YTFsG#{`3l&#s@fxwZ4p*THs3-VJoynqo%pt+>kHJLOpA-k_8>qPcQMEO- zMSf#H>Pc77faum`KDHk4RAS=4h10+nly>36^Zx*<4h!iOwY^prxF zrEiZ9sa}vdGO?lMueK>NZh7om%y@?5>O3midZ zQoO<%LRf!Tmdn=+Zpz=RC{c+>+thFs=MeW|Pzr2C?(mgRRad!ezSK;cn<5^EANic2 zn3Ss7TbU~r9b)l&uo2416yuWlQ`_~;{6JDuI~yXZ>}F;QMr`Sn7%Eg7us#^8ic8jU z9nZLgxTV|&lE$JA;vrlpPl!R&(v#7@dxDglc)l@wkmzI`BC~q0gf*|OP#Q# zkI6kgP#SZE?I7+kFY)1-dh{W-|O#o)b=s>m5oeI z#EFGW{F3guUaR|(!>EDlH~ESg! z8;jG03r=W<*e=1LID&1X*?mgX7(H^(Sx@ti*dF75e19-Cn#`YAQH6{Frl!MN`xgEn z6t$OJekZ6+bq!op{0o)ldKOhI`9!u{SYit4l<+*3 z#^Q$6L{uwA8;16x16+h;B)WVgDZ-&Hk4;jxhgi%3QW-CZx~X)$JFj=~5_MX>U4FrS z=Udb>M1mioDC(0)@<7&EOY}1AXXZH73GB8NRB?^Nu&1$>o^?+$@`P#pkU%WS;^S)3 zTY|vcY=y*4^Zx*sG^uTKDIzMSkXcz$t5I;SW({+Q$!@yM!YQyoeG%;wG%%#0c&$7& z{X`1_#->8fG`vkkStd;1*p(o#1J(t`Pz|(8s50P`gKCX~k9X}K*e&nmMEpw7SF;w< zd%@sab~%<-xRj5GN)~~|t`DYSCc^s5vG77j>4;zlpj>*qOUq~41}ilIiqQrMMX{@Y zVF@+`ce#d9z;gSjgb$ecpe$_)p=`@s!n_p;$wP)zxTNp+RDDk)b^ zqm+oXT7n{TovO)z1qXma0lH%*GZh!a$;si2>acG9v7*_V-Wg`nm|rr**(;`^dDa)= z7yue!-NY92s9K+-2uo2`u@Y1$UOhiyyB$RT03E`q!r=mT1-MLX|_Kj1uxBmbpRy5IA%tI}{Q_*#95JVxk!oh1-JWN)yP%(+33%!7B%*U*vgj^~X1r>11Bkjyhiv-^5F=6R(7%b>e zF-_1na7YOqLE+$c=0C8o6u!ZatwajK1(hVcQ!ZfScvF9QT5KFnXM+C#@y+U{$bi?E z@d!~{-!(P2j$jN^D3yY2Idex76fiMSD1y4~S_8qqG1G$G6Z}fG#mZeo)rj(qL#W9{ zBM{b`8i7OBV;E`7#`OLqb>)uSdEO# zIt;4djTuj4wgFcKj799!RTqh7gKR7?7XdwB`IQ9Aen0YbTvZiU%+702b}|Ups>}h0 z6@FMjR1W2A(QRf7a_Q`pPIN$f#l$AG(yk6d>qG=kPZJQyD;(w`F7G$Y$dvhuO)ZP@ zE`WTCh?E?$a0w`s{N;wai&prJ^&PJaKWUNRFYO=MYKlMQy7rB~BZ!^M93d6hzswP} zRpt|R{{S+mHD<|001A0(Twxs?!<*L#UFIpPFevDVF{m(RV}AKVvH_vuEZV;k(rU&Z z5S5B8GKu{{pd4kMRBoKZAx-^bs&PZ>S&3lPH2K7NEvs^pijy?z5VW1$;sFI2t@O(l zayk<5n#hZ4O?>7Wu0^?~KeF>5{LMiDe9HpR^9w0`Nsa(pEc(k7)`8|_wnq#?>Y%rC zi$tq+Em(z>QCMRQkjA)(5D#}AH%@S7jT?m~f2nU54?e#$YRO4$+n+HIl<$7DN{d#R z_na(Cp(rab85El2xnjAC15ns3KFEO8TdUN>0OV70)hg6}58gliEA_|!0HsuP`^$sQ zB^oL8#Iqy8HpBrHRg#AVpID;45ZOifjwp*5j(RmP<Z2flhclTTB0vS3^EFxZ=4Nu#7EG$9FsyV3h$o8`iM&oggt4elDBaW=2m)!e)y`uL zy%FE-3ZKL85WWPJ6afaIf4E94#GNwLIC6=~hz9}=*;YmoQmXn-ZQm-v8P zOa6SvF4qPZscFku?A5?v2##L;VFJ?IU|07Tkyz>1X#UZ>E`5q0F_u2jBwC$rAVcf% z5luvu=@5DLmbO4lT)qv<2Z(IZfSNXEWlDwQiqHnB;sFCwT@$$rD^ZPA?rpP^Dbu&U!`IVb6tMrr_21{a7Cb10_Tfoe)fw^kjN;P8l;vU3s zEji4hs|W2HOq+sM#pWg5gLMgE+daouWI{Vyv#3d&XNXZjvLXvqE~3zDIjq4&2i1bg z^Xn0GAv76aJt}DA1hPT^-x`*8@ZN2eu%4lymVez&@-j3XO%KFOFveZ>qpVtwGji0F-JdBup!Z z%ne1{UciSM-i6$?i(i`m!!l<&UX}snEFKLn+B5NJXn#w(5 ztb%ENV<1%DEWg?f!ophoB)kJhHE@84`_A3VK;lv~Y@W3+l8`1!pr8@IH8BcR;MwZ{ z`y^Dva9%K3b^ibf#HwfantI2tWHF(+V9J2vd1%)>L5V`tfkL?5$yguujw5syLhvp>;?1i*ywK1%F z%LM2Jylaw$`Zs5E0Y(WcnAdAn4y7?`7ekAVwcLw zsH+SY$t=k(Hjw%TLJMMtq~=@IW>C%1F1*KOM%65D1v=mDB(q*KuXqJch^cz1u4Te! z49c6yN6hv~(@|*b?j}*`3<_!x&vMsxO^YM%Dj8rNnjv08XduKz%_n03xv8!pR?P1j zoW+@^F~zG3w-YL}(hEkDy!%TP&!n?#m9jB3I;>L?h|s!#^|AoL7^{j0)cvUr3a_-q z(7;lQuA-HUjb;|L+yazvLii|xt!53kanz!-iHd@zyHS~711B+6)}!P=-K^-uS_8#O za2FMBZWC>Fs8+X%vS85fR!Sw=eZy*4%YO(L$_qM2YXJ3E5s2=g%&raB)StC|Q2NZh zS(2MDz*wzyxI#9psufso#M{<==0>1gm|#sfm{fQ&m;mf7XaUbQTu zJs@^y^v4Njo}htD>IqnCqiybB&S!_xTBj+Yn0H|lLr*A7Un>VN7z(;SwJQGrUCLWy zl(*Un#$*kJLf@d5F+E0l5E@`<<~0c!*pkI^j3K8yqJ&XLs1az^2T-6I=2&1ZCAnZc z)J5^XGQ$^97h`-)5f{KPW}pzJ@em*87_X@X5N3hv4F#qhTt7dxBBz)4A)@mx+}D3- z_^HE>NnlnB`I=|%I6H%kz;guj#I7iXM^l2{NSt1PyH60vi(=n~8$8*um!as%5C)3f zQ~(S2<|(AcYZnkOs|&X|m#aN-F4*Q$B)nBo8XZdmtNcW|WM0#MYkt(i?O*PH<`-=U zv2mDpH0VlIRmFj+y=DdoSzH*()*lhb51D@g*mDI4ZQd-g4*2HssR2)|TE_br3;V@1 z+vgsgE$Uz()>>*NVe_740wM7bEia=i8R08ryc>$JQu>LzQ+I|t@D$n9VJs%j;`HbA G-~ZWQL&aMF literal 0 HcmV?d00001 diff --git a/src/asset/images/products/f8c69bc0404ff0b6158cab028ac8e632.jpg b/src/asset/images/products/f8c69bc0404ff0b6158cab028ac8e632.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3b5b724b10f873f2161e471f4e631ed319b04b3 GIT binary patch literal 59635 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 literal 0 HcmV?d00001 diff --git a/src/pages/singlePage.tsx b/src/pages/singlePage.tsx new file mode 100644 index 00000000..686b8293 --- /dev/null +++ b/src/pages/singlePage.tsx @@ -0,0 +1,16 @@ +import React from "react"; +import Sproduct from "../Components/singleproduct/Sproduct"; +import Reviews from "../Components/singleproduct/reviews"; +import SimilProduct from "../Components/singleproduct/similaryProduct"; + const Singlepage = () =>{ + + return ( +

+ ); +} + +export default Singlepage ; \ No newline at end of file From 1db9c041eb2a03c2afd72441723b947977ec3e6e Mon Sep 17 00:00:00 2001 From: NIRUGIRA MUHIZI Norbert Date: Tue, 25 Jun 2024 21:33:51 +0200 Subject: [PATCH 004/174] work on products page design --- .eslintrc.js | 79 ++++---- dist/6bd5805730733860772c.svg | 3 + dist/6c2dc433a0dd25891135.png | Bin 0 -> 20933 bytes dist/bundle.js | 3 + dist/bundle.js.LICENSE.txt | 73 +++++++ dist/bundle.js.map | 1 + dist/f85706fec0f76e9ad413.svg | 3 + dist/index.html | 1 + package-lock.json | 1 + src/Components/ProductsPage/pagination.tsx | 110 +++++++++++ src/Components/ProductsPage/productCard.tsx | 86 +++++++++ src/Components/ProductsPage/searchProduct.tsx | 38 ++++ src/Components/navBar.tsx | 119 ++++++++++++ src/Redux/features/ApiSlice.tsx | 2 +- .../features/productsPage/categorySlice.tsx | 17 ++ .../features/productsPage/paginationSlice.tsx | 26 +++ .../features/productsPage/productSlice.tsx | 15 ++ src/Redux/store.tsx | 26 +-- src/Routes/index.tsx | 4 +- src/asset/images/next.svg | 3 + src/asset/images/prev.svg | 3 + src/asset/images/profile.png | Bin 0 -> 20933 bytes src/index.css | 23 ++- src/pages/Signin.tsx | 2 +- src/pages/productsPage.tsx | 179 ++++++++++++++++++ 25 files changed, 762 insertions(+), 55 deletions(-) create mode 100644 dist/6bd5805730733860772c.svg create mode 100644 dist/6c2dc433a0dd25891135.png create mode 100644 dist/bundle.js create mode 100644 dist/bundle.js.LICENSE.txt create mode 100644 dist/bundle.js.map create mode 100644 dist/f85706fec0f76e9ad413.svg create mode 100644 dist/index.html create mode 100644 src/Components/ProductsPage/pagination.tsx create mode 100644 src/Components/ProductsPage/productCard.tsx create mode 100644 src/Components/ProductsPage/searchProduct.tsx create mode 100644 src/Components/navBar.tsx create mode 100644 src/Redux/features/productsPage/categorySlice.tsx create mode 100644 src/Redux/features/productsPage/paginationSlice.tsx create mode 100644 src/Redux/features/productsPage/productSlice.tsx create mode 100644 src/asset/images/next.svg create mode 100644 src/asset/images/prev.svg create mode 100644 src/asset/images/profile.png create mode 100644 src/pages/productsPage.tsx diff --git a/.eslintrc.js b/.eslintrc.js index 3de73633..d3badbbd 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,43 +1,42 @@ module.exports = { - parser: '@typescript-eslint/parser', - extends: [ - 'airbnb', - 'airbnb/hooks', - 'plugin:@typescript-eslint/recommended', - 'plugin:react/recommended', - 'plugin:jsx-a11y/recommended', - 'plugin:import/errors', - 'plugin:import/warnings', - 'plugin:import/typescript', - ], - plugins: ['@typescript-eslint', 'react', 'jsx-a11y', 'import'], - env: { - browser: true, - es2021: true, - }, - settings: { - react: { - version: 'detect', - }, - 'import/resolver': { - typescript: {}, - }, + parser: '@typescript-eslint/parser', + extends: [ + 'airbnb', + 'airbnb/hooks', + 'plugin:@typescript-eslint/recommended', + 'plugin:react/recommended', + 'plugin:jsx-a11y/recommended', + 'plugin:import/errors', + 'plugin:import/warnings', + 'plugin:import/typescript', + ], + plugins: ['@typescript-eslint', 'react', 'jsx-a11y', 'import'], + env: { + browser: true, + es2021: true, + }, + settings: { + react: { + version: 'detect', }, - rules: { - 'react/jsx-filename-extension': [ - 1, - { extensions: ['.tsx', '.ts'] }, - ], - 'import/extensions': [ - 'error', - 'ignorePackages', - { - ts: 'never', - tsx: 'never', - }, - ], - 'no-use-before-define': 'off', - '@typescript-eslint/no-use-before-define': ['error'], + 'import/resolver': { + typescript: {}, }, - }; - \ No newline at end of file + }, + rules: { + 'react/jsx-filename-extension': [ + 1, + { extensions: ['.tsx', '.ts'] }, + ], + 'import/extensions': [ + 'error', + 'ignorePackages', + { + ts: 'never', + tsx: 'never', + }, + ], + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': ['error'], + }, +}; diff --git a/dist/6bd5805730733860772c.svg b/dist/6bd5805730733860772c.svg new file mode 100644 index 00000000..6387b897 --- /dev/null +++ b/dist/6bd5805730733860772c.svg @@ -0,0 +1,3 @@ + + + diff --git a/dist/6c2dc433a0dd25891135.png b/dist/6c2dc433a0dd25891135.png new file mode 100644 index 0000000000000000000000000000000000000000..b32c58e7c232562549f788b5394ad77a835a0df7 GIT binary patch literal 20933 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 literal 0 HcmV?d00001 diff --git a/dist/bundle.js b/dist/bundle.js new file mode 100644 index 00000000..97c97db2 --- /dev/null +++ b/dist/bundle.js @@ -0,0 +1,3 @@ +/*! For license information please see bundle.js.LICENSE.txt */ +(()=>{var e,t,n={7135:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}t.A=void 0;var o,i=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=r(e)&&"function"!=typeof e)return{default:e};var n=d(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var u=i?Object.getOwnPropertyDescriptor(e,a):null;u&&(u.get||u.set)?Object.defineProperty(o,a,u):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o}(n(6540)),a=n(7767),u=(o=n(9525))&&o.__esModule?o:{default:o},l=n(9012),c=n(5511),s=n(297),f=n(4848);function d(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(d=function(e){return e?n:t})(e)}t.A=function(e){var t=e.fallbackPath,n=i.useContext(u.default);if(null===n)throw new l.AuthError("Auth Provider is missing. Make sure, you are using this component inside the auth provider.");return(0,c.isAuthenticated)(n.value)?(0,f.jsx)(a.Outlet,{}):(n.set((0,s.doSignOut)()),(0,f.jsx)(a.Navigate,{to:t,replace:!0}))}},5588:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;td,B6:()=>M,G3:()=>ae,Gh:()=>I,HS:()=>F,Oi:()=>l,Pq:()=>U,Rr:()=>p,Sk:()=>K,V2:()=>Z,aE:()=>se,o1:()=>N,pX:()=>G,pb:()=>R,rc:()=>o,ro:()=>b,sC:()=>a,tH:()=>q,tW:()=>j,ue:()=>y,v6:()=>Q,yD:()=>V,zR:()=>u}),function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"}(o||(o={}));const i="popstate";function a(e){void 0===e&&(e={});let t,{initialEntries:n=["/"],initialIndex:r,v5Compat:i=!1}=e;t=n.map(((e,t)=>m(e,"string"==typeof e?null:e.state,0===t?"default":void 0)));let a=s(null==r?t.length-1:r),u=o.Pop,l=null;function s(e){return Math.min(Math.max(e,0),t.length-1)}function h(){return t[a]}function m(e,n,r){void 0===n&&(n=null);let o=f(t?h().pathname:"/",e,n,r);return c("/"===o.pathname.charAt(0),"relative pathnames are not supported in memory history: "+JSON.stringify(e)),o}function v(e){return"string"==typeof e?e:d(e)}return{get index(){return a},get action(){return u},get location(){return h()},createHref:v,createURL:e=>new URL(v(e),"http://localhost"),encodeLocation(e){let t="string"==typeof e?p(e):e;return{pathname:t.pathname||"",search:t.search||"",hash:t.hash||""}},push(e,n){u=o.Push;let r=m(e,n);a+=1,t.splice(a,t.length,r),i&&l&&l({action:u,location:r,delta:1})},replace(e,n){u=o.Replace;let r=m(e,n);t[a]=r,i&&l&&l({action:u,location:r,delta:0})},go(e){u=o.Pop;let n=s(a+e),r=t[n];a=n,l&&l({action:u,location:r,delta:e})},listen:e=>(l=e,()=>{l=null})}}function u(e){return void 0===e&&(e={}),function(e,t,n,a){void 0===a&&(a={});let{window:u=document.defaultView,v5Compat:c=!1}=a,p=u.history,h=o.Pop,m=null,v=y();function y(){return(p.state||{idx:null}).idx}function b(){h=o.Pop;let e=y(),t=null==e?null:e-v;v=e,m&&m({action:h,location:A.location,delta:t})}function g(e){let t="null"!==u.location.origin?u.location.origin:u.location.href,n="string"==typeof e?e:d(e);return n=n.replace(/ $/,"%20"),l(t,"No window.location.(origin|href) available to create URL for href: "+n),new URL(n,t)}null==v&&(v=0,p.replaceState(r({},p.state,{idx:v}),""));let A={get action(){return h},get location(){return e(u,p)},listen(e){if(m)throw new Error("A history only accepts one active listener");return u.addEventListener(i,b),m=e,()=>{u.removeEventListener(i,b),m=null}},createHref:e=>t(u,e),createURL:g,encodeLocation(e){let t=g(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(e,t){h=o.Push;let r=f(A.location,e,t);n&&n(r,e),v=y()+1;let i=s(r,v),a=A.createHref(r);try{p.pushState(i,"",a)}catch(e){if(e instanceof DOMException&&"DataCloneError"===e.name)throw e;u.location.assign(a)}c&&m&&m({action:h,location:A.location,delta:1})},replace:function(e,t){h=o.Replace;let r=f(A.location,e,t);n&&n(r,e),v=y();let i=s(r,v),a=A.createHref(r);p.replaceState(i,"",a),c&&m&&m({action:h,location:A.location,delta:0})},go:e=>p.go(e)};return A}((function(e,t){let{pathname:n,search:r,hash:o}=e.location;return f("",{pathname:n,search:r,hash:o},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){return"string"==typeof t?t:d(t)}),null,e)}function l(e,t){if(!1===e||null==e)throw new Error(t)}function c(e,t){if(!e){"undefined"!=typeof console&&console.warn(t);try{throw new Error(t)}catch(e){}}}function s(e,t){return{usr:e.state,key:e.key,idx:t}}function f(e,t,n,o){return void 0===n&&(n=null),r({pathname:"string"==typeof e?e:e.pathname,search:"",hash:""},"string"==typeof t?p(t):t,{state:n,key:t&&t.key||o||Math.random().toString(36).substr(2,8)})}function d(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&"?"!==n&&(t+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(t+="#"===r.charAt(0)?r:"#"+r),t}function p(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}var h;!function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(h||(h={}));const m=new Set(["lazy","caseSensitive","path","id","index","children"]);function v(e,t,n,o){return void 0===n&&(n=[]),void 0===o&&(o={}),e.map(((e,i)=>{let a=[...n,i],u="string"==typeof e.id?e.id:a.join("-");if(l(!0!==e.index||!e.children,"Cannot specify children on an index route"),l(!o[u],'Found a route id collision on id "'+u+"\". Route id's must be globally unique within Data Router usages"),function(e){return!0===e.index}(e)){let n=r({},e,t(e),{id:u});return o[u]=n,n}{let n=r({},e,t(e),{id:u,children:void 0});return o[u]=n,e.children&&(n.children=v(e.children,t,a,o)),n}}))}function y(e,t,n){void 0===n&&(n="/");let r=R(("string"==typeof t?p(t):t).pathname||"/",n);if(null==r)return null;let o=g(e);!function(e){e.sort(((e,t)=>e.score!==t.score?t.score-e.score:function(e,t){return e.length===t.length&&e.slice(0,-1).every(((e,n)=>e===t[n]))?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map((e=>e.childrenIndex)),t.routesMeta.map((e=>e.childrenIndex)))))}(o);let i=null;for(let e=0;null==i&&e{let a={relativePath:void 0===i?e.path||"":i,caseSensitive:!0===e.caseSensitive,childrenIndex:o,route:e};a.relativePath.startsWith("/")&&(l(a.relativePath.startsWith(r),'Absolute route path "'+a.relativePath+'" nested under path "'+r+'" is not valid. An absolute child route path must start with the combined path of all its parent routes.'),a.relativePath=a.relativePath.slice(r.length));let u=F([r,a.relativePath]),c=n.concat(a);e.children&&e.children.length>0&&(l(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path "'+u+'".'),g(e.children,t,c,u)),(null!=e.path||e.index)&&t.push({path:u,score:O(u,e.index),routesMeta:c})};return e.forEach(((e,t)=>{var n;if(""!==e.path&&null!=(n=e.path)&&n.includes("?"))for(let n of A(e.path))o(e,t,n);else o(e,t)})),t}function A(e){let t=e.split("/");if(0===t.length)return[];let[n,...r]=t,o=n.endsWith("?"),i=n.replace(/\?$/,"");if(0===r.length)return o?[i,""]:[i];let a=A(r.join("/")),u=[];return u.push(...a.map((e=>""===e?i:[i,e].join("/")))),o&&u.push(...a),u.map((t=>e.startsWith("/")&&""===t?"/":t))}const C=/^:[\w-]+$/,w=3,E=2,S=1,_=10,x=-2,k=e=>"*"===e;function O(e,t){let n=e.split("/"),r=n.length;return n.some(k)&&(r+=x),t&&(r+=E),n.filter((e=>!k(e))).reduce(((e,t)=>e+(C.test(t)?w:""===t?S:_)),r)}function P(e,t){let{routesMeta:n}=e,r={},o="/",i=[];for(let e=0;enull==e?"":"string"==typeof e?e:String(e);return r+n.split(/\/+/).map(((e,n,r)=>{if(n===r.length-1&&"*"===e)return o(t["*"]);const i=e.match(/^:([\w-]+)(\??)$/);if(i){const[,e,n]=i;let r=t[e];return l("?"===n||null!=r,'Missing ":'+e+'" param'),o(r)}return e.replace(/\?$/g,"")})).filter((e=>!!e)).join("/")}function M(e,t){"string"==typeof e&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=function(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!0),c("*"===e||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were "'+e.replace(/\*$/,"/*")+'" because the `*` character must always follow a `/` in the pattern. To get rid of this warning, please change the route path to "'+e.replace(/\*$/,"/*")+'".');let r=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,((e,t,n)=>(r.push({paramName:t,isOptional:null!=n}),n?"/?([^\\/]+)?":"/([^\\/]+)")));return e.endsWith("*")?(r.push({paramName:"*"}),o+="*"===e||"/*"===e?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?o+="\\/*$":""!==e&&"/"!==e&&(o+="(?:(?=\\/|$))"),[new RegExp(o,t?void 0:"i"),r]}(e.path,e.caseSensitive,e.end),o=t.match(n);if(!o)return null;let i=o[0],a=i.replace(/(.)\/+$/,"$1"),u=o.slice(1);return{params:r.reduce(((e,t,n)=>{let{paramName:r,isOptional:o}=t;if("*"===r){let e=u[n]||"";a=i.slice(0,i.length-e.length).replace(/(.)\/+$/,"$1")}const l=u[n];return e[r]=o&&!l?void 0:(l||"").replace(/%2F/g,"/"),e}),{}),pathname:i,pathnameBase:a,pattern:e}}function T(e){try{return e.split("/").map((e=>decodeURIComponent(e).replace(/\//g,"%2F"))).join("/")}catch(t){return c(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding ('+t+")."),e}}function R(e,t){if("/"===t)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&"/"!==r?null:e.slice(n)||"/"}function N(e,t){void 0===t&&(t="/");let{pathname:n,search:r="",hash:o=""}="string"==typeof e?p(e):e,i=n?n.startsWith("/")?n:function(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach((e=>{".."===e?n.length>1&&n.pop():"."!==e&&n.push(e)})),n.length>1?n.join("/"):"/"}(n,t):t;return{pathname:i,search:D(r),hash:z(o)}}function B(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified `to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the `to."+n+'` field. Alternatively you may provide the full path as a string in and the router will parse it for you.'}function L(e){return e.filter(((e,t)=>0===t||e.route.path&&e.route.path.length>0))}function V(e,t){let n=L(e);return t?n.map(((t,n)=>n===e.length-1?t.pathname:t.pathnameBase)):n.map((e=>e.pathnameBase))}function I(e,t,n,o){let i;void 0===o&&(o=!1),"string"==typeof e?i=p(e):(i=r({},e),l(!i.pathname||!i.pathname.includes("?"),B("?","pathname","search",i)),l(!i.pathname||!i.pathname.includes("#"),B("#","pathname","hash",i)),l(!i.search||!i.search.includes("#"),B("#","search","hash",i)));let a,u=""===e||""===i.pathname,c=u?"/":i.pathname;if(null==c)a=n;else{let e=t.length-1;if(!o&&c.startsWith("..")){let t=c.split("/");for(;".."===t[0];)t.shift(),e-=1;i.pathname=t.join("/")}a=e>=0?t[e]:"/"}let s=N(i,a),f=c&&"/"!==c&&c.endsWith("/"),d=(u||"."===c)&&n.endsWith("/");return s.pathname.endsWith("/")||!f&&!d||(s.pathname+="/"),s}const F=e=>e.join("/").replace(/\/\/+/g,"/"),H=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),D=e=>e&&"?"!==e?e.startsWith("?")?e:"?"+e:"",z=e=>e&&"#"!==e?e.startsWith("#")?e:"#"+e:"",U=function(e,t){void 0===t&&(t={});let n="number"==typeof t?{status:t}:t,o=new Headers(n.headers);return o.has("Content-Type")||o.set("Content-Type","application/json; charset=utf-8"),new Response(JSON.stringify(e),r({},n,{headers:o}))};class q extends Error{}class W{constructor(e,t){let n;this.pendingKeysSet=new Set,this.subscribers=new Set,this.deferredKeys=[],l(e&&"object"==typeof e&&!Array.isArray(e),"defer() only accepts plain objects"),this.abortPromise=new Promise(((e,t)=>n=t)),this.controller=new AbortController;let r=()=>n(new q("Deferred data aborted"));this.unlistenAbortSignal=()=>this.controller.signal.removeEventListener("abort",r),this.controller.signal.addEventListener("abort",r),this.data=Object.entries(e).reduce(((e,t)=>{let[n,r]=t;return Object.assign(e,{[n]:this.trackPromise(n,r)})}),{}),this.done&&this.unlistenAbortSignal(),this.init=t}trackPromise(e,t){if(!(t instanceof Promise))return t;this.deferredKeys.push(e),this.pendingKeysSet.add(e);let n=Promise.race([t,this.abortPromise]).then((t=>this.onSettle(n,e,void 0,t)),(t=>this.onSettle(n,e,t)));return n.catch((()=>{})),Object.defineProperty(n,"_tracked",{get:()=>!0}),n}onSettle(e,t,n,r){if(this.controller.signal.aborted&&n instanceof q)return this.unlistenAbortSignal(),Object.defineProperty(e,"_error",{get:()=>n}),Promise.reject(n);if(this.pendingKeysSet.delete(t),this.done&&this.unlistenAbortSignal(),void 0===n&&void 0===r){let n=new Error('Deferred data for key "'+t+'" resolved/rejected with `undefined`, you must resolve/reject with a value or `null`.');return Object.defineProperty(e,"_error",{get:()=>n}),this.emit(!1,t),Promise.reject(n)}return void 0===r?(Object.defineProperty(e,"_error",{get:()=>n}),this.emit(!1,t),Promise.reject(n)):(Object.defineProperty(e,"_data",{get:()=>r}),this.emit(!1,t),r)}emit(e,t){this.subscribers.forEach((n=>n(e,t)))}subscribe(e){return this.subscribers.add(e),()=>this.subscribers.delete(e)}cancel(){this.controller.abort(),this.pendingKeysSet.forEach(((e,t)=>this.pendingKeysSet.delete(t))),this.emit(!0)}async resolveData(e){let t=!1;if(!this.done){let n=()=>this.cancel();e.addEventListener("abort",n),t=await new Promise((t=>{this.subscribe((r=>{e.removeEventListener("abort",n),(r||this.done)&&t(r)}))}))}return t}get done(){return 0===this.pendingKeysSet.size}get unwrappedData(){return l(null!==this.data&&this.done,"Can only unwrap data on initialized and settled deferreds"),Object.entries(this.data).reduce(((e,t)=>{let[n,r]=t;return Object.assign(e,{[n]:$(r)})}),{})}get pendingKeys(){return Array.from(this.pendingKeysSet)}}function $(e){if(!function(e){return e instanceof Promise&&!0===e._tracked}(e))return e;if(e._error)throw e._error;return e._data}const Q=function(e,t){return void 0===t&&(t={}),new W(e,"number"==typeof t?{status:t}:t)},Z=function(e,t){void 0===t&&(t=302);let n=t;"number"==typeof n?n={status:n}:void 0===n.status&&(n.status=302);let o=new Headers(n.headers);return o.set("Location",e),new Response(null,r({},n,{headers:o}))},K=(e,t)=>{let n=Z(e,t);return n.headers.set("X-Remix-Reload-Document","true"),n};class Y{constructor(e,t,n,r){void 0===r&&(r=!1),this.status=e,this.statusText=t||"",this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}}function G(e){return null!=e&&"number"==typeof e.status&&"string"==typeof e.statusText&&"boolean"==typeof e.internal&&"data"in e}const J=["post","put","patch","delete"],X=new Set(J),ee=["get",...J],te=new Set(ee),ne=new Set([301,302,303,307,308]),re=new Set([307,308]),oe={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},ie={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},ae={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},ue=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,le=e=>({hasErrorBoundary:Boolean(e.hasErrorBoundary)}),ce="remix-router-transitions";function se(e){const t=e.window?e.window:"undefined"!=typeof window?window:void 0,n=void 0!==t&&void 0!==t.document&&void 0!==t.document.createElement,i=!n;let a;if(l(e.routes.length>0,"You must provide a non-empty routes array to createRouter"),e.mapRouteProperties)a=e.mapRouteProperties;else if(e.detectErrorBoundary){let t=e.detectErrorBoundary;a=e=>({hasErrorBoundary:t(e)})}else a=le;let u,s,d={},p=v(e.routes,a,void 0,d),m=e.basename||"/",g=e.unstable_dataStrategy||ye,A=r({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1,unstable_skipActionErrorRevalidation:!1},e.future),C=null,w=new Set,E=null,S=null,_=null,x=null!=e.hydrationData,k=y(p,e.history.location,m),O=null;if(null==k){let t=Oe(404,{pathname:e.history.location.pathname}),{matches:n,route:r}=ke(p);k=n,O={[r.id]:t}}let P,j=k.some((e=>e.route.lazy)),M=k.some((e=>e.route.loader));if(j)s=!1;else if(M)if(A.v7_partialHydration){let t=e.hydrationData?e.hydrationData.loaderData:null,n=e.hydrationData?e.hydrationData.errors:null,r=e=>!e.route.loader||("function"!=typeof e.route.loader||!0!==e.route.loader.hydrate)&&(t&&void 0!==t[e.route.id]||n&&void 0!==n[e.route.id]);if(n){let e=k.findIndex((e=>void 0!==n[e.route.id]));s=k.slice(0,e+1).every(r)}else s=k.every(r)}else s=null!=e.hydrationData;else s=!0;let T,N={historyAction:e.history.action,location:e.history.location,matches:k,initialized:s,navigation:oe,restoreScrollPosition:null==e.hydrationData&&null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||O,fetchers:new Map,blockers:new Map},B=o.Pop,L=!1,V=!1,I=new Map,F=null,H=!1,D=!1,z=[],U=[],q=new Map,W=0,$=-1,Q=new Map,Z=new Set,K=new Map,J=new Map,X=new Set,ee=new Map,te=new Map,se=!1;function he(e,t){void 0===t&&(t={}),N=r({},N,e);let n=[],o=[];A.v7_fetcherPersist&&N.fetchers.forEach(((e,t)=>{"idle"===e.state&&(X.has(t)?o.push(t):n.push(t))})),[...w].forEach((e=>e(N,{deletedFetchers:o,unstable_viewTransitionOpts:t.viewTransitionOpts,unstable_flushSync:!0===t.flushSync}))),A.v7_fetcherPersist&&(n.forEach((e=>N.fetchers.delete(e))),o.forEach((e=>Ze(e))))}function me(t,n,i){var a,l;let c,{flushSync:s}=void 0===i?{}:i,f=null!=N.actionData&&null!=N.navigation.formMethod&&Be(N.navigation.formMethod)&&"loading"===N.navigation.state&&!0!==(null==(a=t.state)?void 0:a._isRedirect);c=n.actionData?Object.keys(n.actionData).length>0?n.actionData:null:f?N.actionData:null;let d=n.loaderData?Se(N.loaderData,n.loaderData,n.matches||[],n.errors):N.loaderData,h=N.blockers;h.size>0&&(h=new Map(h),h.forEach(((e,t)=>h.set(t,ae))));let m,v=!0===L||null!=N.navigation.formMethod&&Be(N.navigation.formMethod)&&!0!==(null==(l=t.state)?void 0:l._isRedirect);if(u&&(p=u,u=void 0),H||B===o.Pop||(B===o.Push?e.history.push(t,t.state):B===o.Replace&&e.history.replace(t,t.state)),B===o.Pop){let e=I.get(N.location.pathname);e&&e.has(t.pathname)?m={currentLocation:N.location,nextLocation:t}:I.has(t.pathname)&&(m={currentLocation:t,nextLocation:N.location})}else if(V){let e=I.get(N.location.pathname);e?e.add(t.pathname):(e=new Set([t.pathname]),I.set(N.location.pathname,e)),m={currentLocation:N.location,nextLocation:t}}he(r({},n,{actionData:c,loaderData:d,historyAction:B,location:t,initialized:!0,navigation:oe,revalidation:"idle",restoreScrollPosition:ot(t,n.matches||N.matches),preventScrollReset:v,blockers:h}),{viewTransitionOpts:m,flushSync:!0===s}),B=o.Pop,L=!1,V=!1,H=!1,D=!1,z=[],U=[]}async function Ce(t,n,i){T&&T.abort(),T=null,B=t,H=!0===(i&&i.startUninterruptedRevalidation),function(e,t){if(E&&_){let n=rt(e,t);E[n]=_()}}(N.location,N.matches),L=!0===(i&&i.preventScrollReset),V=!0===(i&&i.enableViewTransition);let a=u||p,l=i&&i.overrideNavigation,c=y(a,n,m),s=!0===(i&&i.flushSync);if(!c){let e=Oe(404,{pathname:n.pathname}),{matches:t,route:r}=ke(a);return nt(),void me(n,{matches:t,loaderData:{},errors:{[r.id]:e}},{flushSync:s})}if(N.initialized&&!D&&(f=N.location,d=n,f.pathname===d.pathname&&f.search===d.search&&(""===f.hash?""!==d.hash:f.hash===d.hash||""!==d.hash))&&!(i&&i.submission&&Be(i.submission.formMethod)))return void me(n,{matches:c},{flushSync:s});var f,d;T=new AbortController;let v,b=Ae(e.history,n,T.signal,i&&i.submission);if(i&&i.pendingError)v=[xe(c).route.id,{type:h.error,error:i.pendingError}];else if(i&&i.submission&&Be(i.submission.formMethod)){let t=await async function(e,t,n,r,i){void 0===i&&(i={}),qe();let a,u=function(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}(t,n);he({navigation:u},{flushSync:!0===i.flushSync});let l=Fe(r,t);if(l.route.action||l.route.lazy){if(a=(await je("action",e,[l],r))[0],e.signal.aborted)return{shortCircuited:!0}}else a={type:h.error,error:Oe(405,{method:e.method,pathname:t.pathname,routeId:l.route.id})};if(Re(a)){let t;return t=i&&null!=i.replace?i.replace:ge(a.response.headers.get("Location"),new URL(e.url),m)===N.location.pathname+N.location.search,await we(e,a,{submission:n,replace:t}),{shortCircuited:!0}}if(Me(a))throw Oe(400,{type:"defer-action"});if(Te(a)){let e=xe(r,l.route.id);return!0!==(i&&i.replace)&&(B=o.Push),{pendingActionResult:[e.route.id,a]}}return{pendingActionResult:[l.route.id,a]}}(b,n,i.submission,c,{replace:i.replace,flushSync:s});if(t.shortCircuited)return;v=t.pendingActionResult,l=De(n,i.submission),s=!1,b=Ae(e.history,b.url,b.signal)}let{shortCircuited:g,loaderData:C,errors:w}=await async function(t,n,o,i,a,l,c,s,f,d){let h=i||De(n,a),v=a||l||He(h),y=u||p,[b,g]=pe(e.history,N,o,v,n,A.v7_partialHydration&&!0===s,A.unstable_skipActionErrorRevalidation,D,z,U,X,K,Z,y,m,d);if(nt((e=>!(o&&o.some((t=>t.route.id===e)))||b&&b.some((t=>t.route.id===e)))),$=++W,0===b.length&&0===g.length){let e=Ge();return me(n,r({matches:o,loaderData:{},errors:d&&Te(d[1])?{[d[0]]:d[1].error}:null},_e(d),e?{fetchers:new Map(N.fetchers)}:{}),{flushSync:f}),{shortCircuited:!0}}if(!(H||A.v7_partialHydration&&s)){let e;g.forEach((e=>{let t=N.fetchers.get(e.key),n=ze(void 0,t?t.data:void 0);N.fetchers.set(e.key,n)})),d&&!Te(d[1])?e={[d[0]]:d[1].data}:N.actionData&&(e=0===Object.keys(N.actionData).length?null:N.actionData),he(r({navigation:h},void 0!==e?{actionData:e}:{},g.length>0?{fetchers:new Map(N.fetchers)}:{}),{flushSync:f})}g.forEach((e=>{q.has(e.key)&&Ke(e.key),e.controller&&q.set(e.key,e.controller)}));let C=()=>g.forEach((e=>Ke(e.key)));T&&T.signal.addEventListener("abort",C);let{loaderResults:w,fetcherResults:E}=await Ie(N.matches,o,b,g,t);if(t.signal.aborted)return{shortCircuited:!0};T&&T.signal.removeEventListener("abort",C),g.forEach((e=>q.delete(e.key)));let S=Pe([...w,...E]);if(S){if(S.idx>=b.length){let e=g[S.idx-b.length].key;Z.add(e)}return await we(t,S.result,{replace:c}),{shortCircuited:!0}}let{loaderData:_,errors:x}=Ee(N,o,b,w,d,g,E,ee);ee.forEach(((e,t)=>{e.subscribe((n=>{(n||e.done)&&ee.delete(t)}))})),A.v7_partialHydration&&s&&N.errors&&Object.entries(N.errors).filter((e=>{let[t]=e;return!b.some((e=>e.route.id===t))})).forEach((e=>{let[t,n]=e;x=Object.assign(x||{},{[t]:n})}));let k=Ge(),O=Je($),P=k||O||g.length>0;return r({loaderData:_,errors:x},P?{fetchers:new Map(N.fetchers)}:{})}(b,n,c,l,i&&i.submission,i&&i.fetcherSubmission,i&&i.replace,i&&!0===i.initialHydration,s,v);g||(T=null,me(n,r({matches:c},_e(v),{loaderData:C,errors:w})))}async function we(i,a,u){let{submission:c,fetcherSubmission:s,replace:d}=void 0===u?{}:u;a.response.headers.has("X-Remix-Revalidate")&&(D=!0);let p=a.response.headers.get("Location");l(p,"Expected a Location header on the redirect Response"),p=ge(p,new URL(i.url),m);let h=f(N.location,p,{_isRedirect:!0});if(n){let n=!1;if(a.response.headers.has("X-Remix-Reload-Document"))n=!0;else if(ue.test(p)){const r=e.history.createURL(p);n=r.origin!==t.location.origin||null==R(r.pathname,m)}if(n)return void(d?t.location.replace(p):t.location.assign(p))}T=null;let v=!0===d?o.Replace:o.Push,{formMethod:y,formAction:b,formEncType:g}=N.navigation;!c&&!s&&y&&b&&g&&(c=He(N.navigation));let A=c||s;if(re.has(a.response.status)&&A&&Be(A.formMethod))await Ce(v,h,{submission:r({},A,{formAction:p}),preventScrollReset:L});else{let e=De(h,c);await Ce(v,h,{overrideNavigation:e,fetcherSubmission:s,preventScrollReset:L})}}async function je(e,t,n,o){try{let i=await async function(e,t,n,o,i,a,u,c){let s=o.reduce(((e,t)=>e.add(t.route.id)),new Set),f=new Set,d=await e({matches:i.map((e=>{let o=s.has(e.route.id);return r({},e,{shouldLoad:o,resolve:r=>(f.add(e.route.id),o?async function(e,t,n,r,o,i,a){let u,c,s=r=>{let o,u=new Promise(((e,t)=>o=t));c=()=>o(),t.signal.addEventListener("abort",c);let l,s=o=>"function"!=typeof r?Promise.reject(new Error('You cannot call the handler for a route which defines a boolean "'+e+'" [routeId: '+n.route.id+"]")):r({request:t,params:n.params,context:a},...void 0!==o?[o]:[]);return l=i?i((e=>s(e))):(async()=>{try{return{type:"data",result:await s()}}catch(e){return{type:"error",result:e}}})(),Promise.race([l,u])};try{let i=n.route[e];if(n.route.lazy)if(i){let e,[t]=await Promise.all([s(i).catch((t=>{e=t})),ve(n.route,o,r)]);if(void 0!==e)throw e;u=t}else{if(await ve(n.route,o,r),i=n.route[e],!i){if("action"===e){let e=new URL(t.url),r=e.pathname+e.search;throw Oe(405,{method:t.method,pathname:r,routeId:n.route.id})}return{type:h.data,result:void 0}}u=await s(i)}else{if(!i){let e=new URL(t.url);throw Oe(404,{pathname:e.pathname+e.search})}u=await s(i)}l(void 0!==u.result,"You defined "+("action"===e?"an action":"a loader")+' for route "'+n.route.id+"\" but didn't return anything from your `"+e+"` function. Please return a value or `null`.")}catch(e){return{type:h.error,result:e}}finally{c&&t.signal.removeEventListener("abort",c)}return u}(t,n,e,a,u,r,c):Promise.resolve({type:h.data,result:void 0}))})})),request:n,params:i[0].params,context:c});return i.forEach((e=>l(f.has(e.route.id),'`match.resolve()` was not called for route id "'+e.route.id+'". You must call `match.resolve()` on every match passed to `dataStrategy` to ensure all routes are properly loaded.'))),d.filter(((e,t)=>s.has(i[t].route.id)))}(g,e,t,n,o,d,a);return await Promise.all(i.map(((e,r)=>{if(function(e){return Ne(e.result)&&ne.has(e.result.status)}(e)){let i=e.result;return{type:h.redirect,response:be(i,t,n[r].route.id,o,m,A.v7_relativeSplatPath)}}return async function(e){let{result:t,type:n,status:r}=e;if(Ne(t)){let e;try{let n=t.headers.get("Content-Type");e=n&&/\bapplication\/json\b/.test(n)?null==t.body?null:await t.json():await t.text()}catch(e){return{type:h.error,error:e}}return n===h.error?{type:h.error,error:new Y(t.status,t.statusText,e),statusCode:t.status,headers:t.headers}:{type:h.data,data:e,statusCode:t.status,headers:t.headers}}return n===h.error?{type:h.error,error:t,statusCode:G(t)?t.status:r}:function(e){let t=e;return t&&"object"==typeof t&&"object"==typeof t.data&&"function"==typeof t.subscribe&&"function"==typeof t.cancel&&"function"==typeof t.resolveData}(t)?{type:h.deferred,deferredData:t,statusCode:null==(o=t.init)?void 0:o.status,headers:(null==(i=t.init)?void 0:i.headers)&&new Headers(t.init.headers)}:{type:h.data,data:t,statusCode:r};var o,i}(e)})))}catch(e){return n.map((()=>({type:h.error,error:e})))}}async function Ie(t,n,r,o,i){let[a,...u]=await Promise.all([r.length?je("loader",i,r,n):[],...o.map((t=>t.matches&&t.match&&t.controller?je("loader",Ae(e.history,t.path,t.controller.signal),[t.match],t.matches).then((e=>e[0])):Promise.resolve({type:h.error,error:Oe(404,{pathname:t.path})})))]);return await Promise.all([Le(t,r,a,a.map((()=>i.signal)),!1,N.loaderData),Le(t,o.map((e=>e.match)),u,o.map((e=>e.controller?e.controller.signal:null)),!0)]),{loaderResults:a,fetcherResults:u}}function qe(){D=!0,z.push(...nt()),K.forEach(((e,t)=>{q.has(t)&&(U.push(t),Ke(t))}))}function We(e,t,n){void 0===n&&(n={}),N.fetchers.set(e,t),he({fetchers:new Map(N.fetchers)},{flushSync:!0===(n&&n.flushSync)})}function $e(e,t,n,r){void 0===r&&(r={});let o=xe(N.matches,t);Ze(e),he({errors:{[o.route.id]:n},fetchers:new Map(N.fetchers)},{flushSync:!0===(r&&r.flushSync)})}function Qe(e){return A.v7_fetcherPersist&&(J.set(e,(J.get(e)||0)+1),X.has(e)&&X.delete(e)),N.fetchers.get(e)||ie}function Ze(e){let t=N.fetchers.get(e);!q.has(e)||t&&"loading"===t.state&&Q.has(e)||Ke(e),K.delete(e),Q.delete(e),Z.delete(e),X.delete(e),N.fetchers.delete(e)}function Ke(e){let t=q.get(e);l(t,"Expected fetch controller: "+e),t.abort(),q.delete(e)}function Ye(e){for(let t of e){let e=Ue(Qe(t).data);N.fetchers.set(t,e)}}function Ge(){let e=[],t=!1;for(let n of Z){let r=N.fetchers.get(n);l(r,"Expected fetcher: "+n),"loading"===r.state&&(Z.delete(n),e.push(n),t=!0)}return Ye(e),t}function Je(e){let t=[];for(let[n,r]of Q)if(r0}function Xe(e){N.blockers.delete(e),te.delete(e)}function et(e,t){let n=N.blockers.get(e)||ae;l("unblocked"===n.state&&"blocked"===t.state||"blocked"===n.state&&"blocked"===t.state||"blocked"===n.state&&"proceeding"===t.state||"blocked"===n.state&&"unblocked"===t.state||"proceeding"===n.state&&"unblocked"===t.state,"Invalid blocker state transition: "+n.state+" -> "+t.state);let r=new Map(N.blockers);r.set(e,t),he({blockers:r})}function tt(e){let{currentLocation:t,nextLocation:n,historyAction:r}=e;if(0===te.size)return;te.size>1&&c(!1,"A router only supports one blocker at a time");let o=Array.from(te.entries()),[i,a]=o[o.length-1],u=N.blockers.get(i);return u&&"proceeding"===u.state?void 0:a({currentLocation:t,nextLocation:n,historyAction:r})?i:void 0}function nt(e){let t=[];return ee.forEach(((n,r)=>{e&&!e(r)||(n.cancel(),t.push(r),ee.delete(r))})),t}function rt(e,t){return S&&S(e,t.map((e=>b(e,N.loaderData))))||e.key}function ot(e,t){if(E){let n=rt(e,t),r=E[n];if("number"==typeof r)return r}return null}return P={get basename(){return m},get future(){return A},get state(){return N},get routes(){return p},get window(){return t},initialize:function(){if(C=e.history.listen((t=>{let{action:n,location:r,delta:o}=t;if(se)return void(se=!1);c(0===te.size||null!=o,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let i=tt({currentLocation:N.location,nextLocation:r,historyAction:n});return i&&null!=o?(se=!0,e.history.go(-1*o),void et(i,{state:"blocked",location:r,proceed(){et(i,{state:"proceeding",proceed:void 0,reset:void 0,location:r}),e.history.go(o)},reset(){let e=new Map(N.blockers);e.set(i,ae),he({blockers:e})}})):Ce(n,r)})),n){!function(e,t){try{let n=e.sessionStorage.getItem(ce);if(n){let e=JSON.parse(n);for(let[n,r]of Object.entries(e||{}))r&&Array.isArray(r)&&t.set(n,new Set(r||[]))}}catch(e){}}(t,I);let e=()=>function(e,t){if(t.size>0){let n={};for(let[e,r]of t)n[e]=[...r];try{e.sessionStorage.setItem(ce,JSON.stringify(n))}catch(e){c(!1,"Failed to save applied view transitions in sessionStorage ("+e+").")}}}(t,I);t.addEventListener("pagehide",e),F=()=>t.removeEventListener("pagehide",e)}return N.initialized||Ce(o.Pop,N.location,{initialHydration:!0}),P},subscribe:function(e){return w.add(e),()=>w.delete(e)},enableScrollRestoration:function(e,t,n){if(E=e,_=t,S=n||null,!x&&N.navigation===oe){x=!0;let e=ot(N.location,N.matches);null!=e&&he({restoreScrollPosition:e})}return()=>{E=null,_=null,S=null}},navigate:async function t(n,i){if("number"==typeof n)return void e.history.go(n);let a=fe(N.location,N.matches,m,A.v7_prependBasename,n,A.v7_relativeSplatPath,null==i?void 0:i.fromRouteId,null==i?void 0:i.relative),{path:u,submission:l,error:c}=de(A.v7_normalizeFormMethod,!1,a,i),s=N.location,d=f(N.location,u,i&&i.state);d=r({},d,e.history.encodeLocation(d));let p=i&&null!=i.replace?i.replace:void 0,h=o.Push;!0===p?h=o.Replace:!1===p||null!=l&&Be(l.formMethod)&&l.formAction===N.location.pathname+N.location.search&&(h=o.Replace);let v=i&&"preventScrollReset"in i?!0===i.preventScrollReset:void 0,y=!0===(i&&i.unstable_flushSync),b=tt({currentLocation:s,nextLocation:d,historyAction:h});if(!b)return await Ce(h,d,{submission:l,pendingError:c,preventScrollReset:v,replace:i&&i.replace,enableViewTransition:i&&i.unstable_viewTransition,flushSync:y});et(b,{state:"blocked",location:d,proceed(){et(b,{state:"proceeding",proceed:void 0,reset:void 0,location:d}),t(n,i)},reset(){let e=new Map(N.blockers);e.set(b,ae),he({blockers:e})}})},fetch:function(t,n,r,o){if(i)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");q.has(t)&&Ke(t);let a=!0===(o&&o.unstable_flushSync),c=u||p,s=fe(N.location,N.matches,m,A.v7_prependBasename,r,A.v7_relativeSplatPath,n,null==o?void 0:o.relative),f=y(c,s,m);if(!f)return void $e(t,n,Oe(404,{pathname:s}),{flushSync:a});let{path:d,submission:h,error:v}=de(A.v7_normalizeFormMethod,!0,s,o);if(v)return void $e(t,n,v,{flushSync:a});let b=Fe(f,d);L=!0===(o&&o.preventScrollReset),h&&Be(h.formMethod)?async function(t,n,r,o,i,a,c){if(qe(),K.delete(t),!o.route.action&&!o.route.lazy){let e=Oe(405,{method:c.formMethod,pathname:r,routeId:n});return void $e(t,n,e,{flushSync:a})}let s=N.fetchers.get(t);We(t,function(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}(c,s),{flushSync:a});let f=new AbortController,d=Ae(e.history,r,f.signal,c);q.set(t,f);let h=W,v=(await je("action",d,[o],i))[0];if(d.signal.aborted)return void(q.get(t)===f&&q.delete(t));if(A.v7_fetcherPersist&&X.has(t)){if(Re(v)||Te(v))return void We(t,Ue(void 0))}else{if(Re(v))return q.delete(t),$>h?void We(t,Ue(void 0)):(Z.add(t),We(t,ze(c)),we(d,v,{fetcherSubmission:c}));if(Te(v))return void $e(t,n,v.error)}if(Me(v))throw Oe(400,{type:"defer-action"});let b=N.navigation.location||N.location,g=Ae(e.history,b,f.signal),C=u||p,w="idle"!==N.navigation.state?y(C,N.navigation.location,m):N.matches;l(w,"Didn't find any matches after fetcher action");let E=++W;Q.set(t,E);let S=ze(c,v.data);N.fetchers.set(t,S);let[_,x]=pe(e.history,N,w,c,b,!1,A.unstable_skipActionErrorRevalidation,D,z,U,X,K,Z,C,m,[o.route.id,v]);x.filter((e=>e.key!==t)).forEach((e=>{let t=e.key,n=N.fetchers.get(t),r=ze(void 0,n?n.data:void 0);N.fetchers.set(t,r),q.has(t)&&Ke(t),e.controller&&q.set(t,e.controller)})),he({fetchers:new Map(N.fetchers)});let k=()=>x.forEach((e=>Ke(e.key)));f.signal.addEventListener("abort",k);let{loaderResults:O,fetcherResults:P}=await Ie(N.matches,w,_,x,g);if(f.signal.aborted)return;f.signal.removeEventListener("abort",k),Q.delete(t),q.delete(t),x.forEach((e=>q.delete(e.key)));let j=Pe([...O,...P]);if(j){if(j.idx>=_.length){let e=x[j.idx-_.length].key;Z.add(e)}return we(g,j.result)}let{loaderData:M,errors:R}=Ee(N,N.matches,_,O,void 0,x,P,ee);if(N.fetchers.has(t)){let e=Ue(v.data);N.fetchers.set(t,e)}Je(E),"loading"===N.navigation.state&&E>$?(l(B,"Expected pending action"),T&&T.abort(),me(N.navigation.location,{matches:w,loaderData:M,errors:R,fetchers:new Map(N.fetchers)})):(he({errors:R,loaderData:Se(N.loaderData,M,w,R),fetchers:new Map(N.fetchers)}),D=!1)}(t,n,d,b,f,a,h):(K.set(t,{routeId:n,path:d}),async function(t,n,r,o,i,a,u){let c=N.fetchers.get(t);We(t,ze(u,c?c.data:void 0),{flushSync:a});let s=new AbortController,f=Ae(e.history,r,s.signal);q.set(t,s);let d=W,p=(await je("loader",f,[o],i))[0];if(Me(p)&&(p=await Ve(p,f.signal,!0)||p),q.get(t)===s&&q.delete(t),!f.signal.aborted){if(!X.has(t))return Re(p)?$>d?void We(t,Ue(void 0)):(Z.add(t),void await we(f,p)):void(Te(p)?$e(t,n,p.error):(l(!Me(p),"Unhandled fetcher deferred data"),We(t,Ue(p.data))));We(t,Ue(void 0))}}(t,n,d,b,f,a,h))},revalidate:function(){qe(),he({revalidation:"loading"}),"submitting"!==N.navigation.state&&("idle"!==N.navigation.state?Ce(B||N.historyAction,N.navigation.location,{overrideNavigation:N.navigation}):Ce(N.historyAction,N.location,{startUninterruptedRevalidation:!0}))},createHref:t=>e.history.createHref(t),encodeLocation:t=>e.history.encodeLocation(t),getFetcher:Qe,deleteFetcher:function(e){if(A.v7_fetcherPersist){let t=(J.get(e)||0)-1;t<=0?(J.delete(e),X.add(e)):J.set(e,t)}else Ze(e);he({fetchers:new Map(N.fetchers)})},dispose:function(){C&&C(),F&&F(),w.clear(),T&&T.abort(),N.fetchers.forEach(((e,t)=>Ze(t))),N.blockers.forEach(((e,t)=>Xe(t)))},getBlocker:function(e,t){let n=N.blockers.get(e)||ae;return te.get(e)!==t&&te.set(e,t),n},deleteBlocker:Xe,_internalFetchControllers:q,_internalActiveDeferreds:ee,_internalSetRoutes:function(e){d={},u=v(e,a,void 0,d)}},P}function fe(e,t,n,r,o,i,a,u){let l,c;if(a){l=[];for(let e of t)if(l.push(e),e.route.id===a){c=e;break}}else l=t,c=t[t.length-1];let s=I(o||".",V(l,i),R(e.pathname,n)||e.pathname,"path"===u);return null==o&&(s.search=e.search,s.hash=e.hash),null!=o&&""!==o&&"."!==o||!c||!c.route.index||Ie(s.search)||(s.search=s.search?s.search.replace(/^\?/,"?index&"):"?index"),r&&"/"!==n&&(s.pathname="/"===s.pathname?n:F([n,s.pathname])),d(s)}function de(e,t,n,r){if(!r||!function(e){return null!=e&&("formData"in e&&null!=e.formData||"body"in e&&void 0!==e.body)}(r))return{path:n};if(r.formMethod&&(o=r.formMethod,!te.has(o.toLowerCase())))return{path:n,error:Oe(405,{method:r.formMethod})};var o;let i,a,u=()=>({path:n,error:Oe(400,{type:"invalid-body"})}),c=r.formMethod||"get",s=e?c.toUpperCase():c.toLowerCase(),f=je(n);if(void 0!==r.body){if("text/plain"===r.formEncType){if(!Be(s))return u();let e="string"==typeof r.body?r.body:r.body instanceof FormData||r.body instanceof URLSearchParams?Array.from(r.body.entries()).reduce(((e,t)=>{let[n,r]=t;return""+e+n+"="+r+"\n"}),""):String(r.body);return{path:n,submission:{formMethod:s,formAction:f,formEncType:r.formEncType,formData:void 0,json:void 0,text:e}}}if("application/json"===r.formEncType){if(!Be(s))return u();try{let e="string"==typeof r.body?JSON.parse(r.body):r.body;return{path:n,submission:{formMethod:s,formAction:f,formEncType:r.formEncType,formData:void 0,json:e,text:void 0}}}catch(e){return u()}}}if(l("function"==typeof FormData,"FormData is not available in this environment"),r.formData)i=Ce(r.formData),a=r.formData;else if(r.body instanceof FormData)i=Ce(r.body),a=r.body;else if(r.body instanceof URLSearchParams)i=r.body,a=we(i);else if(null==r.body)i=new URLSearchParams,a=new FormData;else try{i=new URLSearchParams(r.body),a=we(i)}catch(e){return u()}let h={formMethod:s,formAction:f,formEncType:r&&r.formEncType||"application/x-www-form-urlencoded",formData:a,json:void 0,text:void 0};if(Be(h.formMethod))return{path:n,submission:h};let m=p(n);return t&&m.search&&Ie(m.search)&&i.append("index",""),m.search="?"+i,{path:d(m),submission:h}}function pe(e,t,n,o,i,a,u,l,c,s,f,d,p,h,m,v){let b=v?Te(v[1])?v[1].error:v[1].data:void 0,g=e.createURL(t.location),A=e.createURL(i),C=v&&Te(v[1])?v[0]:void 0,w=C?function(e,t){let n=e;if(t){let r=e.findIndex((e=>e.route.id===t));r>=0&&(n=e.slice(0,r))}return n}(n,C):n,E=v?v[1].statusCode:void 0,S=u&&E&&E>=400,_=w.filter(((e,n)=>{let{route:i}=e;if(i.lazy)return!0;if(null==i.loader)return!1;if(a)return!("function"==typeof i.loader&&!i.loader.hydrate&&(void 0!==t.loaderData[i.id]||t.errors&&void 0!==t.errors[i.id]));if(function(e,t,n){let r=!t||n.route.id!==t.route.id,o=void 0===e[n.route.id];return r||o}(t.loaderData,t.matches[n],e)||c.some((t=>t===e.route.id)))return!0;let u=t.matches[n],s=e;return me(e,r({currentUrl:g,currentParams:u.params,nextUrl:A,nextParams:s.params},o,{actionResult:b,unstable_actionStatus:E,defaultShouldRevalidate:!S&&(l||g.pathname+g.search===A.pathname+A.search||g.search!==A.search||he(u,s))}))})),x=[];return d.forEach(((e,i)=>{if(a||!n.some((t=>t.route.id===e.routeId))||f.has(i))return;let u=y(h,e.path,m);if(!u)return void x.push({key:i,routeId:e.routeId,path:e.path,matches:null,match:null,controller:null});let c=t.fetchers.get(i),d=Fe(u,e.path),v=!1;v=!p.has(i)&&(!!s.includes(i)||(c&&"idle"!==c.state&&void 0===c.data?l:me(d,r({currentUrl:g,currentParams:t.matches[t.matches.length-1].params,nextUrl:A,nextParams:n[n.length-1].params},o,{actionResult:b,unstable_actionStatus:E,defaultShouldRevalidate:!S&&l})))),v&&x.push({key:i,routeId:e.routeId,path:e.path,matches:u,match:d,controller:new AbortController})})),[_,x]}function he(e,t){let n=e.route.path;return e.pathname!==t.pathname||null!=n&&n.endsWith("*")&&e.params["*"]!==t.params["*"]}function me(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if("boolean"==typeof n)return n}return t.defaultShouldRevalidate}async function ve(e,t,n){if(!e.lazy)return;let o=await e.lazy();if(!e.lazy)return;let i=n[e.id];l(i,"No route found in manifest");let a={};for(let e in o){let t=void 0!==i[e]&&"hasErrorBoundary"!==e;c(!t,'Route "'+i.id+'" has a static property "'+e+'" defined but its lazy function is also returning a value for this property. The lazy route property "'+e+'" will be ignored.'),t||m.has(e)||(a[e]=o[e])}Object.assign(i,a),Object.assign(i,r({},t(i),{lazy:void 0}))}function ye(e){return Promise.all(e.matches.map((e=>e.resolve())))}function be(e,t,n,r,o,i){let a=e.headers.get("Location");if(l(a,"Redirects returned/thrown from loaders/actions must have a Location header"),!ue.test(a)){let u=r.slice(0,r.findIndex((e=>e.route.id===n))+1);a=fe(new URL(t.url),u,o,!0,a,i),e.headers.set("Location",a)}return e}function ge(e,t,n){if(ue.test(e)){let r=e,o=r.startsWith("//")?new URL(t.protocol+r):new URL(r),i=null!=R(o.pathname,n);if(o.origin===t.origin&&i)return o.pathname+o.search+o.hash}return e}function Ae(e,t,n,r){let o=e.createURL(je(t)).toString(),i={signal:n};if(r&&Be(r.formMethod)){let{formMethod:e,formEncType:t}=r;i.method=e.toUpperCase(),"application/json"===t?(i.headers=new Headers({"Content-Type":t}),i.body=JSON.stringify(r.json)):"text/plain"===t?i.body=r.text:"application/x-www-form-urlencoded"===t&&r.formData?i.body=Ce(r.formData):i.body=r.formData}return new Request(o,i)}function Ce(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,"string"==typeof r?r:r.name);return t}function we(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function Ee(e,t,n,o,i,a,u,c){let{loaderData:s,errors:f}=function(e,t,n,r,o,i){let a,u={},c=null,s=!1,f={},d=r&&Te(r[1])?r[1].error:void 0;return n.forEach(((n,r)=>{let p=t[r].route.id;if(l(!Re(n),"Cannot handle redirect results in processLoaderData"),Te(n)){let t=n.error;if(void 0!==d&&(t=d,d=void 0),c=c||{},i)c[p]=t;else{let n=xe(e,p);null==c[n.route.id]&&(c[n.route.id]=t)}u[p]=void 0,s||(s=!0,a=G(n.error)?n.error.status:500),n.headers&&(f[p]=n.headers)}else Me(n)?(o.set(p,n.deferredData),u[p]=n.deferredData.data,null==n.statusCode||200===n.statusCode||s||(a=n.statusCode),n.headers&&(f[p]=n.headers)):(u[p]=n.data,n.statusCode&&200!==n.statusCode&&!s&&(a=n.statusCode),n.headers&&(f[p]=n.headers))})),void 0!==d&&r&&(c={[r[0]]:d},u[r[0]]=void 0),{loaderData:u,errors:c,statusCode:a||200,loaderHeaders:f}}(t,n,o,i,c,!1);for(let t=0;te.route.id===t))+1):[...e]).reverse().find((e=>!0===e.route.hasErrorBoundary))||e[0]}function ke(e){let t=1===e.length?e[0]:e.find((e=>e.index||!e.path||"/"===e.path))||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function Oe(e,t){let{pathname:n,routeId:r,method:o,type:i}=void 0===t?{}:t,a="Unknown Server Error",u="Unknown @remix-run/router error";return 400===e?(a="Bad Request",o&&n&&r?u="You made a "+o+' request to "'+n+'" but did not provide a `loader` for route "'+r+'", so there is no way to handle the request.':"defer-action"===i?u="defer() is not supported in actions":"invalid-body"===i&&(u="Unable to encode submission body")):403===e?(a="Forbidden",u='Route "'+r+'" does not match URL "'+n+'"'):404===e?(a="Not Found",u='No route matches URL "'+n+'"'):405===e&&(a="Method Not Allowed",o&&n&&r?u="You made a "+o.toUpperCase()+' request to "'+n+'" but did not provide an `action` for route "'+r+'", so there is no way to handle the request.':o&&(u='Invalid request method "'+o.toUpperCase()+'"')),new Y(e||500,a,new Error(u),!0)}function Pe(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(Re(n))return{result:n,idx:t}}}function je(e){return d(r({},"string"==typeof e?p(e):e,{hash:""}))}function Me(e){return e.type===h.deferred}function Te(e){return e.type===h.error}function Re(e){return(e&&e.type)===h.redirect}function Ne(e){return null!=e&&"number"==typeof e.status&&"string"==typeof e.statusText&&"object"==typeof e.headers&&void 0!==e.body}function Be(e){return X.has(e.toLowerCase())}async function Le(e,t,n,r,o,i){for(let a=0;ae.route.id===c.route.id)),f=null!=s&&!he(s,c)&&void 0!==(i&&i[c.route.id]);if(Me(u)&&(o||f)){let e=r[a];l(e,"Expected an AbortSignal for revalidating fetcher deferred result"),await Ve(u,e,o).then((e=>{e&&(n[a]=e||n[a])}))}}}async function Ve(e,t,n){if(void 0===n&&(n=!1),!await e.deferredData.resolveData(t)){if(n)try{return{type:h.data,data:e.deferredData.unwrappedData}}catch(e){return{type:h.error,error:e}}return{type:h.data,data:e.deferredData.data}}}function Ie(e){return new URLSearchParams(e).getAll("index").some((e=>""===e))}function Fe(e,t){let n="string"==typeof t?p(t).search:t.search;if(e[e.length-1].route.index&&Ie(n||""))return e[e.length-1];let r=L(e);return r[r.length-1]}function He(e){let{formMethod:t,formAction:n,formEncType:r,text:o,formData:i,json:a}=e;if(t&&n&&r)return null!=o?{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:o}:null!=i?{formMethod:t,formAction:n,formEncType:r,formData:i,json:void 0,text:void 0}:void 0!==a?{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:a,text:void 0}:void 0}function De(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function ze(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function Ue(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}Symbol("deferred")},8972:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var r=n(1354),o=n.n(r),i=n(6314),a=n.n(i)()(o());a.push([e.id,"/*\n! tailwindcss v3.4.4 | MIT License | https://tailwindcss.com\n*//*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #CACACA; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n7. Disable tap highlights on iOS\n*/\n\nhtml,\n:host {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n -webkit-tap-highlight-color: transparent; /* 7 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured `mono` font-family by default.\n2. Use the user's configured `mono` font-feature-settings by default.\n3. Use the user's configured `mono` font-variation-settings by default.\n4. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-feature-settings: normal; /* 2 */\n font-variation-settings: normal; /* 3 */\n font-size: 1em; /* 4 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n letter-spacing: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\ninput:where([type='button']),\ninput:where([type='reset']),\ninput:where([type='submit']) {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nReset default styling for dialogs.\n*/\ndialog {\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n[hidden] {\n display: none;\n}\n\n*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.left-\\[10px\\] {\n left: 10px;\n}\n.top-0 {\n top: 0px;\n}\n.top-\\[-10px\\] {\n top: -10px;\n}\n.col-span-2 {\n grid-column: span 2 / span 2;\n}\n.mb-4 {\n margin-bottom: 1rem;\n}\n.mt-4 {\n margin-top: 1rem;\n}\n.flex {\n display: flex;\n}\n.grid {\n display: grid;\n}\n.h-1\\/4 {\n height: 25%;\n}\n.h-\\[30px\\] {\n height: 30px;\n}\n.h-\\[30vh\\] {\n height: 30vh;\n}\n.h-\\[50px\\] {\n height: 50px;\n}\n.h-full {\n height: 100%;\n}\n.h-screen {\n height: 100vh;\n}\n.min-h-\\[25px\\] {\n min-height: 25px;\n}\n.w-1\\/4 {\n width: 25%;\n}\n.w-12 {\n width: 3rem;\n}\n.w-\\[50px\\] {\n width: 50px;\n}\n.w-full {\n width: 100%;\n}\n.min-w-\\[25px\\] {\n min-width: 25px;\n}\n.min-w-\\[30px\\] {\n min-width: 30px;\n}\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n.flex-row {\n flex-direction: row;\n}\n.flex-col {\n flex-direction: column;\n}\n.items-center {\n align-items: center;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-\\[10px\\] {\n gap: 10px;\n}\n.gap-\\[14px\\] {\n gap: 14px;\n}\n.gap-\\[20px\\] {\n gap: 20px;\n}\n.gap-\\[2px\\] {\n gap: 2px;\n}\n.gap-\\[30px\\] {\n gap: 30px;\n}\n.gap-\\[40px\\] {\n gap: 40px;\n}\n.gap-\\[4px\\] {\n gap: 4px;\n}\n.gap-\\[6px\\] {\n gap: 6px;\n}\n.gap-\\[8px\\] {\n gap: 8px;\n}\n.rounded-\\[12px\\] {\n border-radius: 12px;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-md {\n border-radius: 0.375rem;\n}\n.rounded-t-\\[12px\\] {\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n}\n.border {\n border-width: 1px;\n}\n.border-border\\/50 {\n border-color: rgb(102 102 102 / 0.5);\n}\n.border-gray-300 {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity));\n}\n.border-red-500\\/60 {\n border-color: rgb(239 68 68 / 0.6);\n}\n.bg-\\[\\#013362\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(1 51 98 / var(--tw-bg-opacity));\n}\n.bg-\\[\\#EDFBFF\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(237 251 255 / var(--tw-bg-opacity));\n}\n.bg-black\\/50 {\n background-color: rgb(0 0 0 / 0.5);\n}\n.bg-gray-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(238 237 237 / var(--tw-bg-opacity));\n}\n.bg-gray-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(202 202 202 / var(--tw-bg-opacity));\n}\n.bg-primary {\n --tw-bg-opacity: 1;\n background-color: rgb(1 51 98 / var(--tw-bg-opacity));\n}\n.bg-secondary {\n --tw-bg-opacity: 1;\n background-color: rgb(201 151 76 / var(--tw-bg-opacity));\n}\n.bg-transparent {\n background-color: transparent;\n}\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.object-cover {\n -o-object-fit: cover;\n object-fit: cover;\n}\n.p-1 {\n padding: 0.25rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.p-3 {\n padding: 0.75rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.px-10 {\n padding-left: 2.5rem;\n padding-right: 2.5rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.pb-2 {\n padding-bottom: 0.5rem;\n}\n.pl-2 {\n padding-left: 0.5rem;\n}\n.pt-10 {\n padding-top: 2.5rem;\n}\n.text-center {\n text-align: center;\n}\n.font-outfit {\n font-family: Outfit, sans-serif;\n}\n.font-poppins {\n font-family: Poppins, sans-serif;\n}\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.text-\\[12px\\] {\n font-size: 12px;\n}\n.text-\\[14px\\] {\n font-size: 14px;\n}\n.text-\\[16px\\] {\n font-size: 16px;\n}\n.text-\\[18px\\] {\n font-size: 18px;\n}\n.text-\\[20px\\] {\n font-size: 20px;\n}\n.text-\\[28px\\] {\n font-size: 28px;\n}\n.text-\\[32px\\] {\n font-size: 32px;\n}\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.font-\\[300\\] {\n font-weight: 300;\n}\n.font-\\[400\\] {\n font-weight: 400;\n}\n.font-\\[500\\] {\n font-weight: 500;\n}\n.font-\\[600\\] {\n font-weight: 600;\n}\n.font-\\[700\\] {\n font-weight: 700;\n}\n.font-\\[800\\] {\n font-weight: 800;\n}\n.font-medium {\n font-weight: 500;\n}\n.text-\\[\\#333333\\] {\n --tw-text-opacity: 1;\n color: rgb(51 51 51 / var(--tw-text-opacity));\n}\n.text-\\[\\#37C9EE\\] {\n --tw-text-opacity: 1;\n color: rgb(55 201 238 / var(--tw-text-opacity));\n}\n.text-\\[\\#666666\\] {\n --tw-text-opacity: 1;\n color: rgb(102 102 102 / var(--tw-text-opacity));\n}\n.text-\\[\\#828282\\] {\n --tw-text-opacity: 1;\n color: rgb(130 130 130 / var(--tw-text-opacity));\n}\n.text-\\[\\#A3A2A2\\] {\n --tw-text-opacity: 1;\n color: rgb(163 162 162 / var(--tw-text-opacity));\n}\n.text-\\[white\\] {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.text-black {\n --tw-text-opacity: 1;\n color: rgb(0 0 0 / var(--tw-text-opacity));\n}\n.text-gray-400 {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity));\n}\n.text-gray-500 {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity));\n}\n.text-gray-600 {\n --tw-text-opacity: 1;\n color: rgb(75 85 99 / var(--tw-text-opacity));\n}\n.text-red-500 {\n --tw-text-opacity: 1;\n color: rgb(239 68 68 / var(--tw-text-opacity));\n}\n.text-secondary {\n --tw-text-opacity: 1;\n color: rgb(201 151 76 / var(--tw-text-opacity));\n}\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-300 {\n transition-duration: 300ms;\n}\n\n@keyframes fadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n.fade-in {\n animation: fadeIn 1s ease-in;\n}\n\n.lift-on-hover {\n transition: all 0.2s ease-in-out;\n}\n\n.lift-on-hover:hover {\n transform: translateY(-5px);\n box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);\n}\n\n.placeholder\\:font-\\[400\\]::-moz-placeholder {\n font-weight: 400;\n}\n\n.placeholder\\:font-\\[400\\]::placeholder {\n font-weight: 400;\n}\n\n.hover\\:text-primary:hover {\n --tw-text-opacity: 1;\n color: rgb(1 51 98 / var(--tw-text-opacity));\n}\n\n@media (min-width: 540px) {\n\n .md\\:w-\\[50\\%\\] {\n width: 50%;\n }\n\n .md\\:w-\\[60\\%\\] {\n width: 60%;\n }\n}\n\n@media (min-width: 768px) {\n\n .lg\\:w-1\\/3 {\n width: 33.333333%;\n }\n\n .lg\\:w-\\[30\\%\\] {\n width: 30%;\n }\n\n .lg\\:w-\\[40\\%\\] {\n width: 40%;\n }\n}\n","",{version:3,sources:["webpack://./src/index.css"],names:[],mappings:"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",sourcesContent:["@tailwind base;\r\n@tailwind components;\r\n@tailwind utilities;\r\n\r\n@keyframes fadeIn {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n}\r\n.fade-in {\r\n animation: fadeIn 1s ease-in;\r\n}\r\n\r\n.lift-on-hover {\r\n transition: all 0.2s ease-in-out;\r\n}\r\n\r\n.lift-on-hover:hover {\r\n transform: translateY(-5px);\r\n box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);\r\n}\r\n"],sourceRoot:""}]);const u=a},6314:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,r,o,i){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(r)for(var u=0;u0?" ".concat(s[5]):""," {").concat(s[1],"}")),s[5]=i),n&&(s[2]?(s[1]="@media ".concat(s[2]," {").concat(s[1],"}"),s[2]=n):s[2]=n),o&&(s[4]?(s[1]="@supports (".concat(s[4],") {").concat(s[1],"}"),s[4]=o):s[4]="".concat(o)),t.push(s))}},t}},1354:e=>{"use strict";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),i="/*# ".concat(o," */");return[t].concat([i]).join("\n")}return[t].join("\n")}},2733:function(e){e.exports=function(){"use strict";function e(e){for(var t=1;t{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.useReactAuthKit=function(){var e=(0,r.useContext)(i);if(null===e)throw new o.AuthError("Auth Provider is missing. Make sure, you are using this component inside the auth provider.");return e};var r=n(6540),o=n(9685),i=(0,r.createContext)(null);t.default=i},4573:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=r(e)&&"function"!=typeof e)return{default:e};var n=c(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var u=i?Object.getOwnPropertyDescriptor(e,a):null;u&&(u.get||u.set)?Object.defineProperty(o,a,u):o[a]=e[a]}o.default=e,n&&n.set(e,o)}(n(6540));var o,i=(o=n(9525))&&o.__esModule?o:{default:o},a=n(6770),u=n(297),l=n(4848);function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(c=function(e){return e?n:t})(e)}t.default=function(e){var t=e.store,n=e.children,r=t.tokenObject,o=t.refresh;return o&&(0,a.useInterval)((function(){var e,t;o.refreshApiCallback({authToken:null===(e=r.value.auth)||void 0===e?void 0:e.token,authUserState:r.value.userState,refreshToken:null===(t=r.value.refresh)||void 0===t?void 0:t.token}).then((function(e){e.isSuccess?r.set((0,u.doRefresh)(e)):r.set((0,u.doSignOut)())})).catch((function(){}))}),r.value.isSignIn?o.interval:null),(0,l.jsx)(i.default.Provider,{value:r,children:n})}},9764:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r,o=(r=n(2733))&&r.__esModule?r:{default:r},i=n(9364),a=n(9685);t.default=class{constructor(e,t,n,r,o,a){this.authStorageName=e,this.authStorageType=t,this.stateStorageName=`${e}_state`,this.refreshTokenName=n,this.cookieDomain=o,this.cookieSecure=a,this.debug=r,this.authStorageTypeName=`${this.authStorageName}_type`,this.isUsingRefreshToken=!!this.refreshTokenName,this.authValue=this.initialToken_(),this.authSubject=new i.BehaviorSubject(this.authValue),this.log(`[Auth Kit] - Initial Value ${this.authValue}`),this.authSubject.subscribe({next:this.syncTokens})}subscribe=(e,t,n)=>{this.authSubject.subscribe({next:e,error:t,complete:n})};set=e=>{this.log("Set Function is called with"),this.debug&&console.dir(e),this.log("Set Function Old Data"),this.debug&&console.dir(this.value);let t=this.value;if(void 0!==e.userState&&(t.userState=e.userState),e.auth)try{const n=this.getExpireDateTime(e.auth.token);n>new Date?t={...t,auth:{token:e.auth.token,type:e.auth.type,expiresAt:n},isSignIn:!0}:(t={...t,auth:null,isSignIn:!1,userState:null},new a.AuthError("Given Auth Token is already expired."))}catch(e){t={...t,auth:null,isSignIn:!1,userState:null},new a.AuthError("Error pursing the Auth Token. Make sure you provided a valid JWT.")}else null===e.auth&&(t={...t,auth:null,isSignIn:!1,userState:null});if(this.isUsingRefreshToken)if(null===t.auth)t={...t,refresh:null};else if(e.refresh)try{const n=this.getExpireDateTime(e.refresh);n>new Date?t={...t,refresh:{token:e.refresh,expiresAt:n}}:(t={...t,auth:null,isSignIn:!1,userState:null,refresh:null},new a.AuthError("Given Refresh Token is already expired."))}catch(e){t={...t,auth:null,isSignIn:!1,userState:null,refresh:null},new a.AuthError("Error pursing the Auth Token. Make sure you provided a valid JWT.")}else null===e.refresh&&(t={...t,refresh:null});this.log("[Auth Kit] - Set Function New Data"),this.log(t),this.authValue=t,this.authSubject.next(t)};get value(){return this.authSubject.value}initialToken_=()=>"cookie"===this.authStorageType?this.initialCookieToken_():this.initialLSToken_();initialCookieToken_=()=>{const e=o.default.get(this.authStorageName),t=o.default.get(this.authStorageTypeName),n=o.default.get(this.stateStorageName),r=this.isUsingRefreshToken&&null!=this.refreshTokenName?o.default.get(this.refreshTokenName):null;return this.checkTokenExist_(e,t,n,r)};initialLSToken_=()=>{const e=localStorage.getItem(this.authStorageName),t=localStorage.getItem(this.authStorageTypeName),n=localStorage.getItem(this.stateStorageName),r=this.isUsingRefreshToken&&null!=this.refreshTokenName?localStorage.getItem(this.refreshTokenName):null;return this.checkTokenExist_(e,t,n,r)};checkTokenExist_=(e,t,n,r)=>{this.log("checkTokenExist_ is called"),this.log(`Params: authToken: ${e}, authTokenType: ${t},\n stateCookie: ${n}, refreshToken: ${r}`);try{let o,i,a;if(this.isUsingRefreshToken&&r){this.log(`checkTokenExist - isUsingRefreshToken\n = ${this.isUsingRefreshToken} refrehToken - ${r}`);const e=this.getExpireDateTime(r);e{const t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),n=decodeURIComponent(atob(t).split("").map((function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join(""));return JSON.parse(n)};getExpireDateTime=e=>{const t=this.parseJwt(e);if(Object.prototype.hasOwnProperty.call(t,"exp")){const e=new Date(0);return e.setUTCSeconds(t.exp),e}throw new a.AuthError("JWT has no exp param")};syncTokens=e=>{e.auth?this.setAuthToken(e.auth.token,e.auth.type,e.userState):this.removeAuth(),e.refresh&&this.isUsingRefreshToken?this.setRefreshToken(e.refresh.token):this.removeRefresh()};setAuthToken=(e,t,n)=>{if("cookie"===this.authStorageType){const r=this.getExpireDateTime(e);o.default.set(this.authStorageName,e,{expires:r,domain:this.cookieDomain,secure:this.cookieSecure}),o.default.set(this.authStorageTypeName,t,{expires:r,domain:this.cookieDomain,secure:this.cookieSecure}),n&&o.default.set(this.stateStorageName,JSON.stringify(n),{expires:r,domain:this.cookieDomain,secure:this.cookieSecure})}else window.localStorage.setItem(this.authStorageName,e),window.localStorage.setItem(this.authStorageTypeName,t),n&&window.localStorage.setItem(this.stateStorageName,JSON.stringify(n))};setRefreshToken=e=>{if("cookie"===this.authStorageType){if(this.isUsingRefreshToken&&this.refreshTokenName&&e){const t=this.getExpireDateTime(e);o.default.set(this.refreshTokenName,e,{expires:t,domain:this.cookieDomain,secure:this.cookieSecure})}}else this.isUsingRefreshToken&&this.refreshTokenName&&e&&localStorage.setItem(this.refreshTokenName,e)};removeAllToken=()=>{"cookie"===this.authStorageType?this.removeAllCookieToken_():this.removeAllLSToken_()};removeAllCookieToken_=()=>{o.default.remove(this.authStorageName,{domain:this.cookieDomain,secure:this.cookieSecure}),o.default.remove(this.authStorageTypeName,{domain:this.cookieDomain,secure:this.cookieSecure}),o.default.remove(this.stateStorageName,{domain:this.cookieDomain,secure:this.cookieSecure}),this.isUsingRefreshToken&&this.refreshTokenName&&o.default.remove(this.refreshTokenName,{domain:this.cookieDomain,secure:this.cookieSecure})};removeAllLSToken_=()=>{localStorage.removeItem(this.authStorageName),localStorage.removeItem(this.authStorageTypeName),localStorage.removeItem(this.stateStorageName),this.isUsingRefreshToken&&this.refreshTokenName&&localStorage.removeItem(this.refreshTokenName)};removeAuth=()=>{"cookie"===this.authStorageType?this.removeAuthCookie():this.removeAuthToken()};removeAuthCookie=()=>{o.default.remove(this.authStorageName,{domain:this.cookieDomain,secure:this.cookieSecure}),o.default.remove(this.authStorageTypeName,{domain:this.cookieDomain,secure:this.cookieSecure}),o.default.remove(this.stateStorageName,{domain:this.cookieDomain,secure:this.cookieSecure})};removeAuthToken=()=>{localStorage.removeItem(this.authStorageName),localStorage.removeItem(this.authStorageTypeName),localStorage.removeItem(this.stateStorageName)};removeRefresh=()=>{"cookie"===this.authStorageType?this.removeRefreshCookie():this.removeRefreshLocalStorage()};removeRefreshCookie=()=>{this.isUsingRefreshToken&&this.refreshTokenName&&o.default.remove(this.refreshTokenName,{domain:this.cookieDomain,secure:this.cookieSecure})};removeRefreshLocalStorage=()=>{this.isUsingRefreshToken&&this.refreshTokenName&&localStorage.removeItem(this.refreshTokenName)};log=(e,...t)=>{this.debug&&console.log(`[Auth Kit] - ${e}`,t)}}},421:(e,t,n)=>{"use strict";t.A=function(e){if("cookie"===e.authType&&(void 0===e.cookieDomain||void 0===e.cookieSecure))throw new i.AuthError("authType 'cookie' requires 'cookieDomain' and 'cookieSecure' to be present in the param");const t=e.refresh?`${e.authName}_refresh`:null;return{tokenObject:new o.default(e.authName,e.authType,t,void 0!==e.debug&&e.debug,e.cookieDomain,e.cookieSecure),refresh:e.refresh}};var r,o=(r=n(9764))&&r.__esModule?r:{default:r},i=n(9685)},9685:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AuthError=void 0;class n extends Error{constructor(e){super(e)}}t.AuthError=n},317:(e,t,n)=>{"use strict";t.A=void 0;var r=n(9525),o=n(5511);t.A=function(){var e=(0,r.useReactAuthKit)().value;return(0,o.isAuthenticated)(e)?e.userState:null}},7602:(e,t,n)=>{"use strict";t.A=void 0;var r=n(9525),o=n(297),i=n(9685);t.A=function(){var e=(0,r.useReactAuthKit)();return function(t){if(e.value.isUsingRefreshToken){if(t.refresh)return e.set((0,o.doSignIn)(t)),!0;throw new i.AuthError("This appication is using refresh token feature. So please include `refresh` param in the parameters")}if(t.refresh)throw new i.AuthError("This appication is not using refresh token feature. So please remove the `refresh` param in the parameters. In Case you want to use refresh token feature, make sure you added that while creating the store.");return e.set((0,o.doSignIn)(t)),!0}}},6709:(e,t,n)=>{"use strict";t.A=void 0;var r=n(9525),o=n(297);t.A=function(){var e=(0,r.useReactAuthKit)();return function(){e.set((0,o.doSignOut)())}}},9012:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0});var o={};Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a.default}});var i=n(9685);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(o,e)||e in t&&t[e]===i[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}}))}));var a=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=r(e)&&"function"!=typeof e)return{default:e};var n=u(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var l=i?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(o,a,l):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o}(n(4573));function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(u=function(e){return e?n:t})(e)}Object.keys(a).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(o,e)||e in t&&t[e]===a[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return a[e]}}))}))},6770:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useInterval=function(e,t){const n=(0,r.useRef)(e),o=(0,r.useRef)(null);return(0,r.useEffect)((()=>{n.current=e}),[e]),(0,r.useEffect)((()=>("number"==typeof t&&(o.current=window.setInterval((()=>n.current()),60*t*1e3)),()=>{o.current&&window.clearTimeout(o.current)})),[t]),o};var r=n(6540)},297:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.doRefresh=function(e){let t={auth:{token:e.newAuthToken,type:e.newAuthTokenType||"Bearer"}};return e.newAuthUserState&&(t={...t,userState:e.newAuthUserState}),e.newRefreshToken&&(t={...t,refresh:e.newRefreshToken}),t},t.doSignIn=function(e){const t=e.auth.type||"Bearer";return{auth:{token:e.auth.token,type:t},refresh:e.refresh,userState:e.userState||{}}},t.doSignOut=function(){return{auth:null}}},5511:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isAuthenticated=function(e){return!!e.auth&&new Date(e.auth.expiresAt)>new Date}},2551:(e,t,n)=>{"use strict";var r=n(6540),o=n(9982);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n to.pathname = toSegments.join(\"/\");\n }\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n let path = resolvePath(to, from);\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n path.pathname += \"/\";\n }\n return path;\n}\n/**\n * @private\n */\nfunction getToPathname(to) {\n // Empty strings should be treated the same as / paths\n return to === \"\" || to.pathname === \"\" ? \"/\" : typeof to === \"string\" ? parsePath(to).pathname : to.pathname;\n}\n/**\n * @private\n */\nconst joinPaths = paths => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n/**\n * @private\n */\nconst normalizePathname = pathname => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n/**\n * @private\n */\nconst normalizeSearch = search => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\n/**\n * @private\n */\nconst normalizeHash = hash => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nconst json = function json(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n return new Response(JSON.stringify(data), _extends({}, responseInit, {\n headers\n }));\n};\nclass AbortedDeferredError extends Error {}\nclass DeferredData {\n constructor(data, responseInit) {\n this.pendingKeysSet = new Set();\n this.subscribers = new Set();\n this.deferredKeys = [];\n invariant(data && typeof data === \"object\" && !Array.isArray(data), \"defer() only accepts plain objects\");\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject;\n this.abortPromise = new Promise((_, r) => reject = r);\n this.controller = new AbortController();\n let onAbort = () => reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () => this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n this.data = Object.entries(data).reduce((acc, _ref2) => {\n let [key, value] = _ref2;\n return Object.assign(acc, {\n [key]: this.trackPromise(key, value)\n });\n }, {});\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n this.init = responseInit;\n }\n trackPromise(key, value) {\n if (!(value instanceof Promise)) {\n return value;\n }\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise = Promise.race([value, this.abortPromise]).then(data => this.onSettle(promise, key, undefined, data), error => this.onSettle(promise, key, error));\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n return promise;\n }\n onSettle(promise, key, error, data) {\n if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n return Promise.reject(error);\n }\n this.pendingKeysSet.delete(key);\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\"Deferred data for key \\\"\" + key + \"\\\" resolved/rejected with `undefined`, \" + \"you must resolve/reject with a value or `null`.\");\n Object.defineProperty(promise, \"_error\", {\n get: () => undefinedError\n });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n this.emit(false, key);\n return Promise.reject(error);\n }\n Object.defineProperty(promise, \"_data\", {\n get: () => data\n });\n this.emit(false, key);\n return data;\n }\n emit(aborted, settledKey) {\n this.subscribers.forEach(subscriber => subscriber(aborted, settledKey));\n }\n subscribe(fn) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n async resolveData(signal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise(resolve => {\n this.subscribe(aborted => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n get unwrappedData() {\n invariant(this.data !== null && this.done, \"Can only unwrap data on initialized and settled deferreds\");\n return Object.entries(this.data).reduce((acc, _ref3) => {\n let [key, value] = _ref3;\n return Object.assign(acc, {\n [key]: unwrapTrackedPromise(value)\n });\n }, {});\n }\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\nfunction isTrackedPromise(value) {\n return value instanceof Promise && value._tracked === true;\n}\nfunction unwrapTrackedPromise(value) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\nconst defer = function defer(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n return new DeferredData(data, responseInit);\n};\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirect = function redirect(url, init) {\n if (init === void 0) {\n init = 302;\n }\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = {\n status: responseInit\n };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n return new Response(null, _extends({}, responseInit, {\n headers\n }));\n};\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirectDocument = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nclass ErrorResponseImpl {\n constructor(status, statusText, data, internal) {\n if (internal === void 0) {\n internal = false;\n }\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nfunction isRouteErrorResponse(error) {\n return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\n\nconst validMutationMethodsArr = [\"post\", \"put\", \"patch\", \"delete\"];\nconst validMutationMethods = new Set(validMutationMethodsArr);\nconst validRequestMethodsArr = [\"get\", ...validMutationMethodsArr];\nconst validRequestMethods = new Set(validRequestMethodsArr);\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\nconst IDLE_NAVIGATION = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_FETCHER = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_BLOCKER = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined\n};\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nconst defaultMapRouteProperties = route => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Create a router and listen to history POP navigations\n */\nfunction createRouter(init) {\n const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : undefined;\n const isBrowser = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n invariant(init.routes.length > 0, \"You must provide a non-empty routes array to createRouter\");\n let mapRouteProperties;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Routes keyed by ID\n let manifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(init.routes, mapRouteProperties, undefined, manifest);\n let inFlightDataRoutes;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.unstable_dataStrategy || defaultDataStrategy;\n // Config driven behavior flags\n let future = _extends({\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n unstable_skipActionErrorRevalidation: false\n }, init.future);\n // Cleanup function for history\n let unlistenHistory = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors = null;\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname\n });\n let {\n matches,\n route\n } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = {\n [route.id]: error\n };\n }\n let initialized;\n let hasLazyRoutes = initialMatches.some(m => m.route.lazy);\n let hasLoaders = initialMatches.some(m => m.route.loader);\n if (hasLazyRoutes) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!hasLoaders) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = m => {\n // No loader, nothing to initialize\n if (!m.route.loader) {\n return true;\n }\n // Explicitly opting-in to running on hydration\n if (typeof m.route.loader === \"function\" && m.route.loader.hydrate === true) {\n return false;\n }\n // Otherwise, initialized if hydrated with data or an error\n return loaderData && loaderData[m.route.id] !== undefined || errors && errors[m.route.id] !== undefined;\n };\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(m => errors[m.route.id] !== undefined);\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n let router;\n let state = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n actionData: init.hydrationData && init.hydrationData.actionData || null,\n errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n fetchers: new Map(),\n blockers: new Map()\n };\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction = Action.Pop;\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n // AbortController for the active navigation\n let pendingNavigationController;\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions = new Map();\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener = null;\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes = [];\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads = [];\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(_ref => {\n let {\n action: historyAction,\n location,\n delta\n } = _ref;\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n warning(blockerFunctions.size === 0 || delta != null, \"You are trying to use a blocker on a POP navigation to a location \" + \"that was not created by @remix-run/router. This will fail silently in \" + \"production. This can happen if you are navigating outside the router \" + \"via `window.history.pushState`/`window.location.hash` instead of using \" + \"router navigation APIs. This can also happen if you are using \" + \"createHashRouter and the user manually changes the URL.\");\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction\n });\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return startNavigation(historyAction, location);\n });\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(Action.Pop, state.location, {\n initialHydration: true\n });\n }\n return router;\n }\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n // Subscribe to state updates for the router\n function subscribe(fn) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n // Update our state and notify the calling context of the change\n function updateState(newState, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state = _extends({}, state, newState);\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers = [];\n let deletedFetchersKeys = [];\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach(subscriber => subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true\n }));\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach(key => state.fetchers.delete(key));\n deletedFetchersKeys.forEach(key => deleteFetcher(key));\n }\n }\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(location, newState, _temp) {\n var _location$state, _location$state2;\n let {\n flushSync\n } = _temp === void 0 ? {} : _temp;\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && ((_location$state = location.state) == null ? void 0 : _location$state._isRedirect) !== true;\n let actionData;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData ? mergeLoaderData(state.loaderData, newState.loaderData, newState.matches || [], newState.errors) : state.loaderData;\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && ((_location$state2 = location.state) == null ? void 0 : _location$state2._isRedirect) !== true;\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n if (isUninterruptedRevalidation) ; else if (pendingAction === Action.Pop) ; else if (pendingAction === Action.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === Action.Replace) {\n init.history.replace(location, location.state);\n }\n let viewTransitionOpts;\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === Action.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n }\n updateState(_extends({}, newState, {\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(location, newState.matches || state.matches),\n preventScrollReset,\n blockers\n }), {\n viewTransitionOpts,\n flushSync: flushSync === true\n });\n // Reset stateful navigation vars\n pendingAction = Action.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(to, opts) {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, to, future.v7_relativeSplatPath, opts == null ? void 0 : opts.fromRouteId, opts == null ? void 0 : opts.relative);\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, false, normalizedPath, opts);\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = _extends({}, nextLocation, init.history.encodeLocation(nextLocation));\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n let historyAction = Action.Push;\n if (userReplace === true) {\n historyAction = Action.Replace;\n } else if (userReplace === false) ; else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = Action.Replace;\n }\n let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : undefined;\n let flushSync = (opts && opts.unstable_flushSync) === true;\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction\n });\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync\n });\n }\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({\n revalidation: \"loading\"\n });\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true\n });\n return;\n }\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(pendingAction || state.historyAction, state.navigation.location, {\n overrideNavigation: state.navigation\n });\n }\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(historyAction, location, opts) {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, {\n pathname: location.pathname\n });\n let {\n matches: notFoundMatches,\n route\n } = getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n }, {\n flushSync\n });\n return;\n }\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a
\n // which will default to a navigation to /page\n if (state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n completeNavigation(location, {\n matches\n }, {\n flushSync\n });\n return;\n }\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(init.history, location, pendingNavigationController.signal, opts && opts.submission);\n let pendingActionResult;\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [findNearestBoundary(matches).route.id, {\n type: ResultType.error,\n error: opts.pendingError\n }];\n } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n // Call action if we received an action submission\n let actionResult = await handleAction(request, location, opts.submission, matches, {\n replace: opts.replace,\n flushSync\n });\n if (actionResult.shortCircuited) {\n return;\n }\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // Create a GET request for the loaders\n request = createClientSideRequest(init.history, request.url, request.signal);\n }\n // Call loaders\n let {\n shortCircuited,\n loaderData,\n errors\n } = await handleLoaders(request, location, matches, loadingNavigation, opts && opts.submission, opts && opts.fetcherSubmission, opts && opts.replace, opts && opts.initialHydration === true, flushSync, pendingActionResult);\n if (shortCircuited) {\n return;\n }\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n completeNavigation(location, _extends({\n matches\n }, getActionDataForCommit(pendingActionResult), {\n loaderData,\n errors\n }));\n }\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(request, location, submission, matches, opts) {\n if (opts === void 0) {\n opts = {};\n }\n interruptActiveLoads();\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({\n navigation\n }, {\n flushSync: opts.flushSync === true\n });\n // Call our action and get the result\n let result;\n let actionMatch = getTargetMatch(matches, location);\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id\n })\n };\n } else {\n let results = await callDataStrategy(\"action\", request, [actionMatch], matches);\n result = results[0];\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n }\n if (isRedirectResult(result)) {\n let replace;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(result.response.headers.get(\"Location\"), new URL(request.url), basename);\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, {\n submission,\n replace\n });\n return {\n shortCircuited: true\n };\n }\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = Action.Push;\n }\n return {\n pendingActionResult: [boundaryMatch.route.id, result]\n };\n }\n return {\n pendingActionResult: [actionMatch.route.id, result]\n };\n }\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(request, location, matches, overrideNavigation, submission, fetcherSubmission, replace, initialHydration, flushSync, pendingActionResult) {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, activeSubmission, location, future.v7_partialHydration && initialHydration === true, future.unstable_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult);\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(routeId => !(matches && matches.some(m => m.route.id === routeId)) || matchesToLoad && matchesToLoad.some(m => m.route.id === routeId));\n pendingNavigationLoadId = ++incrementingLoadId;\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(location, _extends({\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n [pendingActionResult[0]]: pendingActionResult[1].error\n } : null\n }, getActionDataForCommit(pendingActionResult), updatedFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {}), {\n flushSync\n });\n return {\n shortCircuited: true\n };\n }\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n if (!isUninterruptedRevalidation && (!future.v7_partialHydration || !initialHydration)) {\n revalidatingFetchers.forEach(rf => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(undefined, fetcher ? fetcher.data : undefined);\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData;\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n actionData = {\n [pendingActionResult[0]]: pendingActionResult[1].data\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n actionData = null;\n } else {\n actionData = state.actionData;\n }\n }\n updateState(_extends({\n navigation: loadingNavigation\n }, actionData !== undefined ? {\n actionData\n } : {}, revalidatingFetchers.length > 0 ? {\n fetchers: new Map(state.fetchers)\n } : {}), {\n flushSync\n });\n }\n revalidatingFetchers.forEach(rf => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(f => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n let {\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, request);\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n revalidatingFetchers.forEach(rf => fetchControllers.delete(rf.key));\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey = revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(request, redirect.result, {\n replace\n });\n return {\n shortCircuited: true\n };\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, matches, matchesToLoad, loaderResults, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe(aborted => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors).filter(_ref2 => {\n let [id] = _ref2;\n return !matchesToLoad.some(m => m.route.id === id);\n }).forEach(_ref3 => {\n let [routeId, error] = _ref3;\n errors = Object.assign(errors || {}, {\n [routeId]: error\n });\n });\n }\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n return _extends({\n loaderData,\n errors\n }, shouldUpdateFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {});\n }\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(key, routeId, href, opts) {\n if (isServer) {\n throw new Error(\"router.fetch() was called during the server render, but it shouldn't be. \" + \"You are likely calling a useFetcher() method in the body of your component. \" + \"Try moving it to a useEffect or a callback.\");\n }\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, href, future.v7_relativeSplatPath, routeId, opts == null ? void 0 : opts.relative);\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n if (!matches) {\n setFetcherError(key, routeId, getInternalRouterError(404, {\n pathname: normalizedPath\n }), {\n flushSync\n });\n return;\n }\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, true, normalizedPath, opts);\n if (error) {\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n }\n let match = getTargetMatch(matches, path);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, flushSync, submission);\n return;\n }\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, {\n routeId,\n path\n });\n handleFetcherLoader(key, routeId, path, match, matches, flushSync, submission);\n }\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(key, routeId, path, match, requestMatches, flushSync, submission) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId\n });\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n }\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync\n });\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal, submission);\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\"action\", fetchRequest, [match], requestMatches);\n let actionResult = actionResults[0];\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, {\n fetcherSubmission: submission\n });\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(init.history, nextLocation, abortController.signal);\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches = state.navigation.state !== \"idle\" ? matchRoutes(routesToUse, state.navigation.location, basename) : state.matches;\n invariant(matches, \"Didn't find any matches after fetcher action\");\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, submission, nextLocation, false, future.unstable_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, [match.route.id, actionResult]);\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers.filter(rf => rf.key !== key).forEach(rf => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(undefined, existingFetcher ? existingFetcher.data : undefined);\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n updateState({\n fetchers: new Map(state.fetchers)\n });\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(rf => abortFetcher(rf.key));\n abortController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n let {\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, revalidationRequest);\n if (abortController.signal.aborted) {\n return;\n }\n abortController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach(r => fetchControllers.delete(r.key));\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey = revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(revalidationRequest, redirect.result);\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, state.matches, matchesToLoad, loaderResults, undefined, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n abortStaleFetchLoads(loadId);\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers)\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(state.loaderData, loaderData, matches, errors),\n fetchers: new Map(state.fetchers)\n });\n isRevalidationRequired = false;\n }\n }\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(key, routeId, path, match, matches, flushSync, submission) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getLoadingFetcher(submission, existingFetcher ? existingFetcher.data : undefined), {\n flushSync\n });\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal);\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\"loader\", fetchRequest, [match], matches);\n let result = results[0];\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result = (await resolveDeferredData(result, fetchRequest.signal, true)) || result;\n }\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n if (fetchRequest.signal.aborted) {\n return;\n }\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result);\n return;\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(request, redirect, _temp2) {\n let {\n submission,\n fetcherSubmission,\n replace\n } = _temp2 === void 0 ? {} : _temp2;\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(location, new URL(request.url), basename);\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true\n });\n if (isBrowser) {\n let isDocumentReload = false;\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n let redirectHistoryAction = replace === true ? Action.Replace : Action.Push;\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let {\n formMethod,\n formAction,\n formEncType\n } = state.navigation;\n if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (redirectPreserveMethodStatusCodes.has(redirect.response.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: _extends({}, activeSubmission, {\n formAction: location\n }),\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(redirectLocation, submission);\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset\n });\n }\n }\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(type, request, matchesToLoad, matches) {\n try {\n let results = await callDataStrategyImpl(dataStrategyImpl, type, request, matchesToLoad, matches, manifest, mapRouteProperties);\n return await Promise.all(results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result;\n return {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(response, request, matchesToLoad[i].route.id, matches, basename, future.v7_relativeSplatPath)\n };\n }\n return convertHandlerResultToDataResult(result);\n }));\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n return matchesToLoad.map(() => ({\n type: ResultType.error,\n error: e\n }));\n }\n }\n async function callLoadersAndMaybeResolveData(currentMatches, matches, matchesToLoad, fetchersToLoad, request) {\n let [loaderResults, ...fetcherResults] = await Promise.all([matchesToLoad.length ? callDataStrategy(\"loader\", request, matchesToLoad, matches) : [], ...fetchersToLoad.map(f => {\n if (f.matches && f.match && f.controller) {\n let fetcherRequest = createClientSideRequest(init.history, f.path, f.controller.signal);\n return callDataStrategy(\"loader\", fetcherRequest, [f.match], f.matches).then(r => r[0]);\n } else {\n return Promise.resolve({\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path\n })\n });\n }\n })]);\n await Promise.all([resolveDeferredResults(currentMatches, matchesToLoad, loaderResults, loaderResults.map(() => request.signal), false, state.loaderData), resolveDeferredResults(currentMatches, fetchersToLoad.map(f => f.match), fetcherResults, fetchersToLoad.map(f => f.controller ? f.controller.signal : null), true)]);\n return {\n loaderResults,\n fetcherResults\n };\n }\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n function updateFetcherState(key, fetcher, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state.fetchers.set(key, fetcher);\n updateState({\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function setFetcherError(key, routeId, error, opts) {\n if (opts === void 0) {\n opts = {};\n }\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error\n },\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function getFetcher(key) {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n function deleteFetcher(key) {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (fetchControllers.has(key) && !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n function deleteFetcherAndUpdateState(key) {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({\n fetchers: new Map(state.fetchers)\n });\n }\n function abortFetcher(key) {\n let controller = fetchControllers.get(key);\n invariant(controller, \"Expected fetch controller: \" + key);\n controller.abort();\n fetchControllers.delete(key);\n }\n function markFetchersDone(keys) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n function markFetchRedirectsDone() {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n function abortStaleFetchLoads(landedId) {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n function getBlocker(key, fn) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n return blocker;\n }\n function deleteBlocker(key) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key, newBlocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(blocker.state === \"unblocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"proceeding\" || blocker.state === \"blocked\" && newBlocker.state === \"unblocked\" || blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\", \"Invalid blocker state transition: \" + blocker.state + \" -> \" + newBlocker.state);\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({\n blockers\n });\n }\n function shouldBlockNavigation(_ref4) {\n let {\n currentLocation,\n nextLocation,\n historyAction\n } = _ref4;\n if (blockerFunctions.size === 0) {\n return;\n }\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({\n currentLocation,\n nextLocation,\n historyAction\n })) {\n return blockerKey;\n }\n }\n function cancelActiveDeferreds(predicate) {\n let cancelledRouteIds = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(positions, getPosition, getKey) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({\n restoreScrollPosition: y\n });\n }\n }\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n function getScrollKey(location, matches) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(location, matches.map(m => convertRouteMatchToUiMatch(m, state.loaderData)));\n return key || location.key;\n }\n return location.key;\n }\n function saveScrollPosition(location, matches) {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n function getSavedScrollPosition(location, matches) {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n function _internalSetRoutes(newRoutes) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(newRoutes, mapRouteProperties, undefined, manifest);\n }\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: to => init.history.createHref(to),\n encodeLocation: to => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes\n };\n return router;\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\nconst UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\nfunction createStaticHandler(routes, opts) {\n invariant(routes.length > 0, \"You must provide a non-empty routes array to createStaticHandler\");\n let manifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties;\n if (opts != null && opts.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts != null && opts.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future = _extends({\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false\n }, opts ? opts.future : null);\n let dataRoutes = convertRoutesToDataRoutes(routes, mapRouteProperties, undefined, manifest);\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(request, _temp3) {\n let {\n requestContext,\n skipLoaderErrorBubbling,\n unstable_dataStrategy\n } = _temp3 === void 0 ? {} : _temp3;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, {\n method\n });\n let {\n matches: methodNotAllowedMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, {\n pathname: location.pathname\n });\n let {\n matches: notFoundMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n let result = await queryImpl(request, location, matches, requestContext, unstable_dataStrategy || null, skipLoaderErrorBubbling === true, null);\n if (isResponse(result)) {\n return result;\n }\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return _extends({\n location,\n basename\n }, result);\n }\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(request, _temp4) {\n let {\n routeId,\n requestContext,\n unstable_dataStrategy\n } = _temp4 === void 0 ? {} : _temp4;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, {\n method\n });\n } else if (!matches) {\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let match = routeId ? matches.find(m => m.route.id === routeId) : getTargetMatch(matches, location);\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let result = await queryImpl(request, location, matches, requestContext, unstable_dataStrategy || null, false, match);\n if (isResponse(result)) {\n return result;\n }\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n if (result.loaderData) {\n var _result$activeDeferre;\n let data = Object.values(result.loaderData)[0];\n if ((_result$activeDeferre = result.activeDeferreds) != null && _result$activeDeferre[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n return undefined;\n }\n async function queryImpl(request, location, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, routeMatch) {\n invariant(request.signal, \"query()/queryRoute() requests must contain an AbortController signal\");\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(request, matches, routeMatch || getTargetMatch(matches, location), requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, routeMatch != null);\n return result;\n }\n let result = await loadRouteData(request, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, routeMatch);\n return isResponse(result) ? result : _extends({}, result, {\n actionData: null,\n actionHeaders: {}\n });\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `HandlerResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isHandlerResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n async function submit(request, matches, actionMatch, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, isRouteRequest) {\n let result;\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n } else {\n let results = await callDataStrategy(\"action\", request, [actionMatch], matches, isRouteRequest, requestContext, unstable_dataStrategy);\n result = results[0];\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")\n }\n });\n }\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, {\n type: \"defer-action\"\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n }\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: {\n [actionMatch.route.id]: result.data\n },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal\n });\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(loaderRequest, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, null, [boundaryMatch.route.id, result]);\n // action status codes take precedence over loader status codes\n return _extends({}, context, {\n statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,\n actionData: null,\n actionHeaders: _extends({}, result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {})\n });\n }\n let context = await loadRouteData(loaderRequest, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, null);\n return _extends({}, context, {\n actionData: {\n [actionMatch.route.id]: result.data\n }\n }, result.statusCode ? {\n statusCode: result.statusCode\n } : {}, {\n actionHeaders: result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {}\n });\n }\n async function loadRouteData(request, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, routeMatch, pendingActionResult) {\n let isRouteRequest = routeMatch != null;\n // Short circuit if we have no loaders to run (queryRoute())\n if (isRouteRequest && !(routeMatch != null && routeMatch.route.loader) && !(routeMatch != null && routeMatch.route.lazy)) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch == null ? void 0 : routeMatch.route.id\n });\n }\n let requestMatches = routeMatch ? [routeMatch] : pendingActionResult && isErrorResult(pendingActionResult[1]) ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0]) : matches;\n let matchesToLoad = requestMatches.filter(m => m.route.loader || m.route.lazy);\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce((acc, m) => Object.assign(acc, {\n [m.route.id]: null\n }), {}),\n errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n [pendingActionResult[0]]: pendingActionResult[1].error\n } : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null\n };\n }\n let results = await callDataStrategy(\"loader\", request, matchesToLoad, matches, isRouteRequest, requestContext, unstable_dataStrategy);\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(matches, matchesToLoad, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling);\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(matchesToLoad.map(match => match.route.id));\n matches.forEach(match => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n return _extends({}, context, {\n matches,\n activeDeferreds: activeDeferreds.size > 0 ? Object.fromEntries(activeDeferreds.entries()) : null\n });\n }\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(type, request, matchesToLoad, matches, isRouteRequest, requestContext, unstable_dataStrategy) {\n let results = await callDataStrategyImpl(unstable_dataStrategy || defaultDataStrategy, type, request, matchesToLoad, matches, manifest, mapRouteProperties, requestContext);\n return await Promise.all(results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(response, request, matchesToLoad[i].route.id, matches, basename, future.v7_relativeSplatPath);\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n return convertHandlerResultToDataResult(result);\n }));\n }\n return {\n dataRoutes,\n query,\n queryRoute\n };\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nfunction getStaticContextFromError(routes, context, error) {\n let newContext = _extends({}, context, {\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error\n }\n });\n return newContext;\n}\nfunction throwStaticHandlerAbortedError(request, isRouteRequest, future) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(method + \"() call aborted: \" + request.method + \" \" + request.url);\n}\nfunction isSubmissionNavigation(opts) {\n return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== undefined);\n}\nfunction normalizeTo(location, matches, basename, prependBasename, to, v7_relativeSplatPath, fromRouteId, relative) {\n let contextualMatches;\n let activeRouteMatch;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n // Resolve the relative path\n let path = resolveTo(to ? to : \".\", getResolveToMatches(contextualMatches, v7_relativeSplatPath), stripBasename(location.pathname, basename) || location.pathname, relative === \"path\");\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n // Add an ?index param for matched index routes if we don't already have one\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch && activeRouteMatch.route.index && !hasNakedIndexQuery(path.search)) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n return createPath(path);\n}\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(normalizeFormMethod, isFetcher, path, opts) {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return {\n path\n };\n }\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, {\n method: opts.formMethod\n })\n };\n }\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, {\n type: \"invalid-body\"\n })\n });\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod ? rawFormMethod.toUpperCase() : rawFormMethod.toLowerCase();\n let formAction = stripHashFromPath(path);\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n let text = typeof opts.body === \"string\" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ?\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce((acc, _ref5) => {\n let [name, value] = _ref5;\n return \"\" + acc + name + \"=\" + value + \"\\n\";\n }, \"\") : String(opts.body);\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text\n }\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n try {\n let json = typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined\n }\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n invariant(typeof FormData === \"function\", \"FormData is not available in this environment\");\n let searchParams;\n let formData;\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n let submission = {\n formMethod,\n formAction,\n formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined\n };\n if (isMutationMethod(submission.formMethod)) {\n return {\n path,\n submission\n };\n }\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = \"?\" + searchParams;\n return {\n path: createPath(parsedPath),\n submission\n };\n}\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(matches, boundaryId) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex(m => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\nfunction getMatchesToLoad(history, state, matches, submission, location, isInitialLoad, skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult) {\n let actionResult = pendingActionResult ? isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : pendingActionResult[1].data : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[0] : undefined;\n let boundaryMatches = boundaryId ? getLoaderMatchesUntilBoundary(matches, boundaryId) : matches;\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult ? pendingActionResult[1].statusCode : undefined;\n let shouldSkipRevalidation = skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let {\n route\n } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (route.loader == null) {\n return false;\n }\n if (isInitialLoad) {\n if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n return true;\n }\n return state.loaderData[route.id] === undefined && (\n // Don't re-run if the loader ran and threw an error\n !state.errors || state.errors[route.id] === undefined);\n }\n // Always call the loader on new route instances and pending defer cancellations\n if (isNewLoader(state.loaderData, state.matches[index], match) || cancelledDeferredRoutes.some(id => id === match.route.id)) {\n return true;\n }\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n return shouldRevalidateLoader(match, _extends({\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params\n }, submission, {\n actionResult,\n unstable_actionStatus: actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation ? false :\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired || currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search || isNewRouteInstance(currentRouteMatch, nextRouteMatch)\n }));\n });\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (isInitialLoad || !matches.some(m => m.route.id === f.routeId) || deletedFetchers.has(key)) {\n return;\n }\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null\n });\n return;\n }\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (fetcher && fetcher.state !== \"idle\" && fetcher.data === undefined) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, _extends({\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params\n }, submission, {\n actionResult,\n unstable_actionStatus: actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation ? false : isRevalidationRequired\n }));\n }\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController()\n });\n }\n });\n return [navigationMatches, revalidatingFetchers];\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\nfunction isNewRouteInstance(currentMatch, match) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n currentPath != null && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n );\n}\nfunction shouldRevalidateLoader(loaderMatch, arg) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n return arg.defaultShouldRevalidate;\n}\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(route, mapRouteProperties, manifest) {\n if (!route.lazy) {\n return;\n }\n let lazyRoute = await route.lazy();\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue = routeToUpdate[lazyRouteProperty];\n let isPropertyStaticallyDefined = staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n warning(!isPropertyStaticallyDefined, \"Route \\\"\" + routeToUpdate.id + \"\\\" has a static property \\\"\" + lazyRouteProperty + \"\\\" \" + \"defined but its lazy function is also returning a value for this property. \" + (\"The lazy route property \\\"\" + lazyRouteProperty + \"\\\" will be ignored.\"));\n if (!isPropertyStaticallyDefined && !immutableRouteKeys.has(lazyRouteProperty)) {\n routeUpdates[lazyRouteProperty] = lazyRoute[lazyRouteProperty];\n }\n }\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, _extends({}, mapRouteProperties(routeToUpdate), {\n lazy: undefined\n }));\n}\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nfunction defaultDataStrategy(opts) {\n return Promise.all(opts.matches.map(m => m.resolve()));\n}\nasync function callDataStrategyImpl(dataStrategyImpl, type, request, matchesToLoad, matches, manifest, mapRouteProperties, requestContext) {\n let routeIdsToLoad = matchesToLoad.reduce((acc, m) => acc.add(m.route.id), new Set());\n let loadedMatches = new Set();\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: matches.map(match => {\n let shouldLoad = routeIdsToLoad.has(match.route.id);\n // `resolve` encapsulates the route.lazy, executing the\n // loader/action, and mapping return values/thrown errors to a\n // HandlerResult. Users can pass a callback to take fine-grained control\n // over the execution of the loader/action\n let resolve = handlerOverride => {\n loadedMatches.add(match.route.id);\n return shouldLoad ? callLoaderOrAction(type, request, match, manifest, mapRouteProperties, handlerOverride, requestContext) : Promise.resolve({\n type: ResultType.data,\n result: undefined\n });\n };\n return _extends({}, match, {\n shouldLoad,\n resolve\n });\n }),\n request,\n params: matches[0].params,\n context: requestContext\n });\n // Throw if any loadRoute implementations not called since they are what\n // ensures a route is fully loaded\n matches.forEach(m => invariant(loadedMatches.has(m.route.id), \"`match.resolve()` was not called for route id \\\"\" + m.route.id + \"\\\". \" + \"You must call `match.resolve()` on every match passed to \" + \"`dataStrategy` to ensure all routes are properly loaded.\"));\n // Filter out any middleware-only matches for which we didn't need to run handlers\n return results.filter((_, i) => routeIdsToLoad.has(matches[i].route.id));\n}\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(type, request, match, manifest, mapRouteProperties, handlerOverride, staticContext) {\n let result;\n let onReject;\n let runHandler = handler => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => reject = r);\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n let actualHandler = ctx => {\n if (typeof handler !== \"function\") {\n return Promise.reject(new Error(\"You cannot call the handler for a route which defines a boolean \" + (\"\\\"\" + type + \"\\\" [routeId: \" + match.route.id + \"]\")));\n }\n return handler({\n request,\n params: match.params,\n context: staticContext\n }, ...(ctx !== undefined ? [ctx] : []));\n };\n let handlerPromise;\n if (handlerOverride) {\n handlerPromise = handlerOverride(ctx => actualHandler(ctx));\n } else {\n handlerPromise = (async () => {\n try {\n let val = await actualHandler();\n return {\n type: \"data\",\n result: val\n };\n } catch (e) {\n return {\n type: \"error\",\n result: e\n };\n }\n })();\n }\n return Promise.race([handlerPromise, abortPromise]);\n };\n try {\n let handler = match.route[type];\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch(e => {\n handlerError = e;\n }), loadLazyRouteModule(match.route, mapRouteProperties, manifest)]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value;\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return {\n type: ResultType.data,\n result: undefined\n };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname\n });\n } else {\n result = await runHandler(handler);\n }\n invariant(result.result !== undefined, \"You defined \" + (type === \"action\" ? \"an action\" : \"a loader\") + \" for route \" + (\"\\\"\" + match.route.id + \"\\\" but didn't return anything from your `\" + type + \"` \") + \"function. Please return a value or `null`.\");\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // HandlerResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return {\n type: ResultType.error,\n result: e\n };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n return result;\n}\nasync function convertHandlerResultToDataResult(handlerResult) {\n let {\n result,\n type,\n status\n } = handlerResult;\n if (isResponse(result)) {\n let data;\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return {\n type: ResultType.error,\n error: e\n };\n }\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers\n };\n }\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers\n };\n }\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : status\n };\n }\n if (isDeferredData(result)) {\n var _result$init, _result$init2;\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: (_result$init = result.init) == null ? void 0 : _result$init.status,\n headers: ((_result$init2 = result.init) == null ? void 0 : _result$init2.headers) && new Headers(result.init.headers)\n };\n }\n return {\n type: ResultType.data,\n data: result,\n statusCode: status\n };\n}\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename, v7_relativeSplatPath) {\n let location = response.headers.get(\"Location\");\n invariant(location, \"Redirects returned/thrown from loaders/actions must have a Location header\");\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1);\n location = normalizeTo(new URL(request.url), trimmedMatches, basename, true, location, v7_relativeSplatPath);\n response.headers.set(\"Location\", location);\n }\n return response;\n}\nfunction normalizeRedirectLocation(location, currentUrl, basename) {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\") ? new URL(currentUrl.protocol + normalizedLocation) : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(history, location, signal, submission) {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init = {\n signal\n };\n if (submission && isMutationMethod(submission.formMethod)) {\n let {\n formMethod,\n formEncType\n } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n if (formEncType === \"application/json\") {\n init.headers = new Headers({\n \"Content-Type\": formEncType\n });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n return new Request(url, init);\n}\nfunction convertFormDataToSearchParams(formData) {\n let searchParams = new URLSearchParams();\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n return searchParams;\n}\nfunction convertSearchParamsToFormData(searchParams) {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\nfunction processRouteLoaderData(matches, matchesToLoad, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling) {\n // Fill in loaderData/errors from our loaders\n let loaderData = {};\n let errors = null;\n let statusCode;\n let foundError = false;\n let loaderHeaders = {};\n let pendingError = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : undefined;\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(!isRedirectResult(result), \"Cannot handle redirect results in processLoaderData\");\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n errors = errors || {};\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode != null && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = {\n [pendingActionResult[0]]: pendingError\n };\n loaderData[pendingActionResult[0]] = undefined;\n }\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders\n };\n}\nfunction processLoaderData(state, matches, matchesToLoad, results, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds) {\n let {\n loaderData,\n errors\n } = processRouteLoaderData(matches, matchesToLoad, results, pendingActionResult, activeDeferreds, false // This method is only called client side so we always want to bubble\n );\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let {\n key,\n match,\n controller\n } = revalidatingFetchers[index];\n invariant(fetcherResults !== undefined && fetcherResults[index] !== undefined, \"Did not find corresponding fetcher result\");\n let result = fetcherResults[index];\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match == null ? void 0 : match.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = _extends({}, errors, {\n [boundaryMatch.route.id]: result.error\n });\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n return {\n loaderData,\n errors\n };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n let mergedLoaderData = _extends({}, newLoaderData);\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\nfunction getActionDataForCommit(pendingActionResult) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1]) ? {\n // Clear out prior actionData on errors\n actionData: {}\n } : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data\n }\n };\n}\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(matches, routeId) {\n let eligibleMatches = routeId ? matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1) : [...matches];\n return eligibleMatches.reverse().find(m => m.route.hasErrorBoundary === true) || matches[0];\n}\nfunction getShortCircuitMatches(routes) {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.length === 1 ? routes[0] : routes.find(r => r.index || !r.path || r.path === \"/\") || {\n id: \"__shim-error-route__\"\n };\n return {\n matches: [{\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route\n }],\n route\n };\n}\nfunction getInternalRouterError(status, _temp5) {\n let {\n pathname,\n routeId,\n method,\n type\n } = _temp5 === void 0 ? {} : _temp5;\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide a `loader` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = \"Route \\\"\" + routeId + \"\\\" does not match URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = \"No route matches URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method.toUpperCase() + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide an `action` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (method) {\n errorMessage = \"Invalid request method \\\"\" + method.toUpperCase() + \"\\\"\";\n }\n }\n return new ErrorResponseImpl(status || 500, statusText, new Error(errorMessage), true);\n}\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results) {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return {\n result,\n idx: i\n };\n }\n }\n}\nfunction stripHashFromPath(path) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath(_extends({}, parsedPath, {\n hash: \"\"\n }));\n}\nfunction isHashChangeOnly(a, b) {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\nfunction isHandlerResult(result) {\n return result != null && typeof result === \"object\" && \"type\" in result && \"result\" in result && (result.type === ResultType.data || result.type === ResultType.error);\n}\nfunction isRedirectHandlerResult(result) {\n return isResponse(result.result) && redirectStatusCodes.has(result.result.status);\n}\nfunction isDeferredResult(result) {\n return result.type === ResultType.deferred;\n}\nfunction isErrorResult(result) {\n return result.type === ResultType.error;\n}\nfunction isRedirectResult(result) {\n return (result && result.type) === ResultType.redirect;\n}\nfunction isDeferredData(value) {\n let deferred = value;\n return deferred && typeof deferred === \"object\" && typeof deferred.data === \"object\" && typeof deferred.subscribe === \"function\" && typeof deferred.cancel === \"function\" && typeof deferred.resolveData === \"function\";\n}\nfunction isResponse(value) {\n return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isRedirectResponse(result) {\n if (!isResponse(result)) {\n return false;\n }\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\nfunction isValidMethod(method) {\n return validRequestMethods.has(method.toLowerCase());\n}\nfunction isMutationMethod(method) {\n return validMutationMethods.has(method.toLowerCase());\n}\nasync function resolveDeferredResults(currentMatches, matchesToLoad, results, signals, isFetcher, currentLoaderData) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n let currentMatch = currentMatches.find(m => m.route.id === match.route.id);\n let isRevalidatingLoader = currentMatch != null && !isNewRouteInstance(currentMatch, match) && (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(signal, \"Expected an AbortSignal for revalidating fetcher deferred result\");\n await resolveDeferredData(result, signal, isFetcher).then(result => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\nasync function resolveDeferredData(result, signal, unwrap) {\n if (unwrap === void 0) {\n unwrap = false;\n }\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e\n };\n }\n }\n return {\n type: ResultType.data,\n data: result.deferredData.data\n };\n}\nfunction hasNakedIndexQuery(search) {\n return new URLSearchParams(search).getAll(\"index\").some(v => v === \"\");\n}\nfunction getTargetMatch(matches, location) {\n let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n let {\n formMethod,\n formAction,\n formEncType,\n text,\n formData,\n json\n } = navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined\n };\n }\n}\nfunction getLoadingNavigation(location, submission) {\n if (submission) {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n } else {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n };\n return navigation;\n }\n}\nfunction getSubmittingNavigation(location, submission) {\n let navigation = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n}\nfunction getLoadingFetcher(submission, data) {\n if (submission) {\n let fetcher = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data\n };\n return fetcher;\n } else {\n let fetcher = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n }\n}\nfunction getSubmittingFetcher(submission, existingFetcher) {\n let fetcher = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined\n };\n return fetcher;\n}\nfunction getDoneFetcher(data) {\n let fetcher = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(TRANSITIONS_STORAGE_KEY);\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\nfunction persistAppliedTransitions(_window, transitions) {\n if (transitions.size > 0) {\n let json = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(TRANSITIONS_STORAGE_KEY, JSON.stringify(json));\n } catch (error) {\n warning(false, \"Failed to save applied view transitions in sessionStorage (\" + error + \").\");\n }\n }\n}\n//#endregion\n\nexport { AbortedDeferredError, Action, IDLE_BLOCKER, IDLE_FETCHER, IDLE_NAVIGATION, UNSAFE_DEFERRED_SYMBOL, DeferredData as UNSAFE_DeferredData, ErrorResponseImpl as UNSAFE_ErrorResponseImpl, convertRouteMatchToUiMatch as UNSAFE_convertRouteMatchToUiMatch, convertRoutesToDataRoutes as UNSAFE_convertRoutesToDataRoutes, getResolveToMatches as UNSAFE_getResolveToMatches, invariant as UNSAFE_invariant, warning as UNSAFE_warning, createBrowserHistory, createHashHistory, createMemoryHistory, createPath, createRouter, createStaticHandler, defer, generatePath, getStaticContextFromError, getToPathname, isDeferredData, isRouteErrorResponse, joinPaths, json, matchPath, matchRoutes, normalizePathname, parsePath, redirect, redirectDocument, resolvePath, resolveTo, stripBasename };\n//# sourceMappingURL=router.js.map\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*\n! tailwindcss v3.4.4 | MIT License | https://tailwindcss.com\n*//*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #CACACA; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured \\`sans\\` font-family by default.\n5. Use the user's configured \\`sans\\` font-feature-settings by default.\n6. Use the user's configured \\`sans\\` font-variation-settings by default.\n7. Disable tap highlights on iOS\n*/\n\nhtml,\n:host {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n -webkit-tap-highlight-color: transparent; /* 7 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from \\`html\\` so users can set them as a class directly on the \\`html\\` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured \\`mono\\` font-family by default.\n2. Use the user's configured \\`mono\\` font-feature-settings by default.\n3. Use the user's configured \\`mono\\` font-variation-settings by default.\n4. Correct the odd \\`em\\` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-feature-settings: normal; /* 2 */\n font-variation-settings: normal; /* 3 */\n font-size: 1em; /* 4 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent \\`sub\\` and \\`sup\\` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n letter-spacing: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\ninput:where([type='button']),\ninput:where([type='reset']),\ninput:where([type='submit']) {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional \\`:invalid\\` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to \\`inherit\\` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nReset default styling for dialogs.\n*/\ndialog {\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements \\`display: block\\` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add \\`vertical-align: middle\\` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n[hidden] {\n display: none;\n}\n\n*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}\r\n.absolute {\n position: absolute;\n}\r\n.relative {\n position: relative;\n}\r\n.left-\\\\[10px\\\\] {\n left: 10px;\n}\r\n.top-0 {\n top: 0px;\n}\r\n.top-\\\\[-10px\\\\] {\n top: -10px;\n}\r\n.col-span-2 {\n grid-column: span 2 / span 2;\n}\r\n.mb-4 {\n margin-bottom: 1rem;\n}\r\n.mt-4 {\n margin-top: 1rem;\n}\r\n.flex {\n display: flex;\n}\r\n.grid {\n display: grid;\n}\r\n.h-1\\\\/4 {\n height: 25%;\n}\r\n.h-\\\\[30px\\\\] {\n height: 30px;\n}\r\n.h-\\\\[30vh\\\\] {\n height: 30vh;\n}\r\n.h-\\\\[50px\\\\] {\n height: 50px;\n}\r\n.h-full {\n height: 100%;\n}\r\n.h-screen {\n height: 100vh;\n}\r\n.min-h-\\\\[25px\\\\] {\n min-height: 25px;\n}\r\n.w-1\\\\/4 {\n width: 25%;\n}\r\n.w-12 {\n width: 3rem;\n}\r\n.w-\\\\[50px\\\\] {\n width: 50px;\n}\r\n.w-full {\n width: 100%;\n}\r\n.min-w-\\\\[25px\\\\] {\n min-width: 25px;\n}\r\n.min-w-\\\\[30px\\\\] {\n min-width: 30px;\n}\r\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\r\n.cursor-pointer {\n cursor: pointer;\n}\r\n.grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\r\n.flex-row {\n flex-direction: row;\n}\r\n.flex-col {\n flex-direction: column;\n}\r\n.items-center {\n align-items: center;\n}\r\n.justify-end {\n justify-content: flex-end;\n}\r\n.justify-center {\n justify-content: center;\n}\r\n.justify-between {\n justify-content: space-between;\n}\r\n.gap-2 {\n gap: 0.5rem;\n}\r\n.gap-\\\\[10px\\\\] {\n gap: 10px;\n}\r\n.gap-\\\\[14px\\\\] {\n gap: 14px;\n}\r\n.gap-\\\\[20px\\\\] {\n gap: 20px;\n}\r\n.gap-\\\\[2px\\\\] {\n gap: 2px;\n}\r\n.gap-\\\\[30px\\\\] {\n gap: 30px;\n}\r\n.gap-\\\\[40px\\\\] {\n gap: 40px;\n}\r\n.gap-\\\\[4px\\\\] {\n gap: 4px;\n}\r\n.gap-\\\\[6px\\\\] {\n gap: 6px;\n}\r\n.gap-\\\\[8px\\\\] {\n gap: 8px;\n}\r\n.rounded-\\\\[12px\\\\] {\n border-radius: 12px;\n}\r\n.rounded-full {\n border-radius: 9999px;\n}\r\n.rounded-md {\n border-radius: 0.375rem;\n}\r\n.rounded-t-\\\\[12px\\\\] {\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n}\r\n.border {\n border-width: 1px;\n}\r\n.border-border\\\\/50 {\n border-color: rgb(102 102 102 / 0.5);\n}\r\n.border-gray-300 {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity));\n}\r\n.border-red-500\\\\/60 {\n border-color: rgb(239 68 68 / 0.6);\n}\r\n.bg-\\\\[\\\\#013362\\\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(1 51 98 / var(--tw-bg-opacity));\n}\r\n.bg-\\\\[\\\\#EDFBFF\\\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(237 251 255 / var(--tw-bg-opacity));\n}\r\n.bg-black\\\\/50 {\n background-color: rgb(0 0 0 / 0.5);\n}\r\n.bg-gray-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(238 237 237 / var(--tw-bg-opacity));\n}\r\n.bg-gray-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(202 202 202 / var(--tw-bg-opacity));\n}\r\n.bg-primary {\n --tw-bg-opacity: 1;\n background-color: rgb(1 51 98 / var(--tw-bg-opacity));\n}\r\n.bg-secondary {\n --tw-bg-opacity: 1;\n background-color: rgb(201 151 76 / var(--tw-bg-opacity));\n}\r\n.bg-transparent {\n background-color: transparent;\n}\r\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\r\n.object-cover {\n -o-object-fit: cover;\n object-fit: cover;\n}\r\n.p-1 {\n padding: 0.25rem;\n}\r\n.p-2 {\n padding: 0.5rem;\n}\r\n.p-3 {\n padding: 0.75rem;\n}\r\n.p-4 {\n padding: 1rem;\n}\r\n.p-6 {\n padding: 1.5rem;\n}\r\n.px-10 {\n padding-left: 2.5rem;\n padding-right: 2.5rem;\n}\r\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\r\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\r\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\r\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\r\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\r\n.pb-2 {\n padding-bottom: 0.5rem;\n}\r\n.pl-2 {\n padding-left: 0.5rem;\n}\r\n.pt-10 {\n padding-top: 2.5rem;\n}\r\n.text-center {\n text-align: center;\n}\r\n.font-outfit {\n font-family: Outfit, sans-serif;\n}\r\n.font-poppins {\n font-family: Poppins, sans-serif;\n}\r\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\r\n.text-\\\\[12px\\\\] {\n font-size: 12px;\n}\r\n.text-\\\\[14px\\\\] {\n font-size: 14px;\n}\r\n.text-\\\\[16px\\\\] {\n font-size: 16px;\n}\r\n.text-\\\\[18px\\\\] {\n font-size: 18px;\n}\r\n.text-\\\\[20px\\\\] {\n font-size: 20px;\n}\r\n.text-\\\\[28px\\\\] {\n font-size: 28px;\n}\r\n.text-\\\\[32px\\\\] {\n font-size: 32px;\n}\r\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\r\n.font-\\\\[300\\\\] {\n font-weight: 300;\n}\r\n.font-\\\\[400\\\\] {\n font-weight: 400;\n}\r\n.font-\\\\[500\\\\] {\n font-weight: 500;\n}\r\n.font-\\\\[600\\\\] {\n font-weight: 600;\n}\r\n.font-\\\\[700\\\\] {\n font-weight: 700;\n}\r\n.font-\\\\[800\\\\] {\n font-weight: 800;\n}\r\n.font-medium {\n font-weight: 500;\n}\r\n.text-\\\\[\\\\#333333\\\\] {\n --tw-text-opacity: 1;\n color: rgb(51 51 51 / var(--tw-text-opacity));\n}\r\n.text-\\\\[\\\\#37C9EE\\\\] {\n --tw-text-opacity: 1;\n color: rgb(55 201 238 / var(--tw-text-opacity));\n}\r\n.text-\\\\[\\\\#666666\\\\] {\n --tw-text-opacity: 1;\n color: rgb(102 102 102 / var(--tw-text-opacity));\n}\r\n.text-\\\\[\\\\#828282\\\\] {\n --tw-text-opacity: 1;\n color: rgb(130 130 130 / var(--tw-text-opacity));\n}\r\n.text-\\\\[\\\\#A3A2A2\\\\] {\n --tw-text-opacity: 1;\n color: rgb(163 162 162 / var(--tw-text-opacity));\n}\r\n.text-\\\\[white\\\\] {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\r\n.text-black {\n --tw-text-opacity: 1;\n color: rgb(0 0 0 / var(--tw-text-opacity));\n}\r\n.text-gray-400 {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity));\n}\r\n.text-gray-500 {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity));\n}\r\n.text-gray-600 {\n --tw-text-opacity: 1;\n color: rgb(75 85 99 / var(--tw-text-opacity));\n}\r\n.text-red-500 {\n --tw-text-opacity: 1;\n color: rgb(239 68 68 / var(--tw-text-opacity));\n}\r\n.text-secondary {\n --tw-text-opacity: 1;\n color: rgb(201 151 76 / var(--tw-text-opacity));\n}\r\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\r\n.outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\r\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\r\n.transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\r\n.duration-300 {\n transition-duration: 300ms;\n}\r\n\r\n@keyframes fadeIn {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n}\r\n.fade-in {\r\n animation: fadeIn 1s ease-in;\r\n}\r\n\r\n.lift-on-hover {\r\n transition: all 0.2s ease-in-out;\r\n}\r\n\r\n.lift-on-hover:hover {\r\n transform: translateY(-5px);\r\n box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n.placeholder\\\\:font-\\\\[400\\\\]::-moz-placeholder {\n font-weight: 400;\n}\r\n\r\n.placeholder\\\\:font-\\\\[400\\\\]::placeholder {\n font-weight: 400;\n}\r\n\r\n.hover\\\\:text-primary:hover {\n --tw-text-opacity: 1;\n color: rgb(1 51 98 / var(--tw-text-opacity));\n}\r\n\r\n@media (min-width: 540px) {\n\n .md\\\\:w-\\\\[50\\\\%\\\\] {\n width: 50%;\n }\n\n .md\\\\:w-\\\\[60\\\\%\\\\] {\n width: 60%;\n }\n}\r\n\r\n@media (min-width: 768px) {\n\n .lg\\\\:w-1\\\\/3 {\n width: 33.333333%;\n }\n\n .lg\\\\:w-\\\\[30\\\\%\\\\] {\n width: 30%;\n }\n\n .lg\\\\:w-\\\\[40\\\\%\\\\] {\n width: 40%;\n }\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/index.css\"],\"names\":[],\"mappings\":\"AAAA;;CAAc,CAAd;;;CAAc;;AAAd;;;EAAA,sBAAc,EAAd,MAAc;EAAd,eAAc,EAAd,MAAc;EAAd,mBAAc,EAAd,MAAc;EAAd,qBAAc,EAAd,MAAc;AAAA;;AAAd;;EAAA,gBAAc;AAAA;;AAAd;;;;;;;;CAAc;;AAAd;;EAAA,gBAAc,EAAd,MAAc;EAAd,8BAAc,EAAd,MAAc;EAAd,gBAAc,EAAd,MAAc;EAAd,cAAc;KAAd,WAAc,EAAd,MAAc;EAAd,+HAAc,EAAd,MAAc;EAAd,6BAAc,EAAd,MAAc;EAAd,+BAAc,EAAd,MAAc;EAAd,wCAAc,EAAd,MAAc;AAAA;;AAAd;;;CAAc;;AAAd;EAAA,SAAc,EAAd,MAAc;EAAd,oBAAc,EAAd,MAAc;AAAA;;AAAd;;;;CAAc;;AAAd;EAAA,SAAc,EAAd,MAAc;EAAd,cAAc,EAAd,MAAc;EAAd,qBAAc,EAAd,MAAc;AAAA;;AAAd;;CAAc;;AAAd;EAAA,yCAAc;UAAd,iCAAc;AAAA;;AAAd;;CAAc;;AAAd;;;;;;EAAA,kBAAc;EAAd,oBAAc;AAAA;;AAAd;;CAAc;;AAAd;EAAA,cAAc;EAAd,wBAAc;AAAA;;AAAd;;CAAc;;AAAd;;EAAA,mBAAc;AAAA;;AAAd;;;;;CAAc;;AAAd;;;;EAAA,+GAAc,EAAd,MAAc;EAAd,6BAAc,EAAd,MAAc;EAAd,+BAAc,EAAd,MAAc;EAAd,cAAc,EAAd,MAAc;AAAA;;AAAd;;CAAc;;AAAd;EAAA,cAAc;AAAA;;AAAd;;CAAc;;AAAd;;EAAA,cAAc;EAAd,cAAc;EAAd,kBAAc;EAAd,wBAAc;AAAA;;AAAd;EAAA,eAAc;AAAA;;AAAd;EAAA,WAAc;AAAA;;AAAd;;;;CAAc;;AAAd;EAAA,cAAc,EAAd,MAAc;EAAd,qBAAc,EAAd,MAAc;EAAd,yBAAc,EAAd,MAAc;AAAA;;AAAd;;;;CAAc;;AAAd;;;;;EAAA,oBAAc,EAAd,MAAc;EAAd,8BAAc,EAAd,MAAc;EAAd,gCAAc,EAAd,MAAc;EAAd,eAAc,EAAd,MAAc;EAAd,oBAAc,EAAd,MAAc;EAAd,oBAAc,EAAd,MAAc;EAAd,uBAAc,EAAd,MAAc;EAAd,cAAc,EAAd,MAAc;EAAd,SAAc,EAAd,MAAc;EAAd,UAAc,EAAd,MAAc;AAAA;;AAAd;;CAAc;;AAAd;;EAAA,oBAAc;AAAA;;AAAd;;;CAAc;;AAAd;;;;EAAA,0BAAc,EAAd,MAAc;EAAd,6BAAc,EAAd,MAAc;EAAd,sBAAc,EAAd,MAAc;AAAA;;AAAd;;CAAc;;AAAd;EAAA,aAAc;AAAA;;AAAd;;CAAc;;AAAd;EAAA,gBAAc;AAAA;;AAAd;;CAAc;;AAAd;EAAA,wBAAc;AAAA;;AAAd;;CAAc;;AAAd;;EAAA,YAAc;AAAA;;AAAd;;;CAAc;;AAAd;EAAA,6BAAc,EAAd,MAAc;EAAd,oBAAc,EAAd,MAAc;AAAA;;AAAd;;CAAc;;AAAd;EAAA,wBAAc;AAAA;;AAAd;;;CAAc;;AAAd;EAAA,0BAAc,EAAd,MAAc;EAAd,aAAc,EAAd,MAAc;AAAA;;AAAd;;CAAc;;AAAd;EAAA,kBAAc;AAAA;;AAAd;;CAAc;;AAAd;;;;;;;;;;;;;EAAA,SAAc;AAAA;;AAAd;EAAA,SAAc;EAAd,UAAc;AAAA;;AAAd;EAAA,UAAc;AAAA;;AAAd;;;EAAA,gBAAc;EAAd,SAAc;EAAd,UAAc;AAAA;;AAAd;;CAAc;AAAd;EAAA,UAAc;AAAA;;AAAd;;CAAc;;AAAd;EAAA,gBAAc;AAAA;;AAAd;;;CAAc;;AAAd;EAAA,UAAc,EAAd,MAAc;EAAd,cAAc,EAAd,MAAc;AAAA;;AAAd;;EAAA,UAAc,EAAd,MAAc;EAAd,cAAc,EAAd,MAAc;AAAA;;AAAd;;CAAc;;AAAd;;EAAA,eAAc;AAAA;;AAAd;;CAAc;AAAd;EAAA,eAAc;AAAA;;AAAd;;;;CAAc;;AAAd;;;;;;;;EAAA,cAAc,EAAd,MAAc;EAAd,sBAAc,EAAd,MAAc;AAAA;;AAAd;;CAAc;;AAAd;;EAAA,eAAc;EAAd,YAAc;AAAA;;AAAd,wEAAc;AAAd;EAAA,aAAc;AAAA;;AAAd;EAAA,wBAAc;EAAd,wBAAc;EAAd,mBAAc;EAAd,mBAAc;EAAd,cAAc;EAAd,cAAc;EAAd,cAAc;EAAd,eAAc;EAAd,eAAc;EAAd,aAAc;EAAd,aAAc;EAAd,kBAAc;EAAd,sCAAc;EAAd,8BAAc;EAAd,6BAAc;EAAd,4BAAc;EAAd,eAAc;EAAd,oBAAc;EAAd,sBAAc;EAAd,uBAAc;EAAd,wBAAc;EAAd,kBAAc;EAAd,2BAAc;EAAd,4BAAc;EAAd,sCAAc;EAAd,kCAAc;EAAd,2BAAc;EAAd,sBAAc;EAAd,8BAAc;EAAd,YAAc;EAAd,kBAAc;EAAd,gBAAc;EAAd,iBAAc;EAAd,kBAAc;EAAd,cAAc;EAAd,gBAAc;EAAd,aAAc;EAAd,mBAAc;EAAd,qBAAc;EAAd,2BAAc;EAAd,yBAAc;EAAd,0BAAc;EAAd,2BAAc;EAAd,uBAAc;EAAd,wBAAc;EAAd,yBAAc;EAAd,sBAAc;EAAd,oBAAc;EAAd,sBAAc;EAAd,qBAAc;EAAd;AAAc;;AAAd;EAAA,wBAAc;EAAd,wBAAc;EAAd,mBAAc;EAAd,mBAAc;EAAd,cAAc;EAAd,cAAc;EAAd,cAAc;EAAd,eAAc;EAAd,eAAc;EAAd,aAAc;EAAd,aAAc;EAAd,kBAAc;EAAd,sCAAc;EAAd,8BAAc;EAAd,6BAAc;EAAd,4BAAc;EAAd,eAAc;EAAd,oBAAc;EAAd,sBAAc;EAAd,uBAAc;EAAd,wBAAc;EAAd,kBAAc;EAAd,2BAAc;EAAd,4BAAc;EAAd,sCAAc;EAAd,kCAAc;EAAd,2BAAc;EAAd,sBAAc;EAAd,8BAAc;EAAd,YAAc;EAAd,kBAAc;EAAd,gBAAc;EAAd,iBAAc;EAAd,kBAAc;EAAd,cAAc;EAAd,gBAAc;EAAd,aAAc;EAAd,mBAAc;EAAd,qBAAc;EAAd,2BAAc;EAAd,yBAAc;EAAd,0BAAc;EAAd,2BAAc;EAAd,uBAAc;EAAd,wBAAc;EAAd,yBAAc;EAAd,sBAAc;EAAd,oBAAc;EAAd,sBAAc;EAAd,qBAAc;EAAd;AAAc;AAEd;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA,4BAAmB;EAAnB;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA,sBAAmB;EAAnB;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA,kBAAmB;EAAnB;AAAmB;AAAnB;EAAA,kBAAmB;EAAnB;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA,kBAAmB;EAAnB;AAAmB;AAAnB;EAAA,kBAAmB;EAAnB;AAAmB;AAAnB;EAAA,kBAAmB;EAAnB;AAAmB;AAAnB;EAAA,kBAAmB;EAAnB;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA,kBAAmB;EAAnB;AAAmB;AAAnB;EAAA,oBAAmB;KAAnB;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA,oBAAmB;EAAnB;AAAmB;AAAnB;EAAA,oBAAmB;EAAnB;AAAmB;AAAnB;EAAA,qBAAmB;EAAnB;AAAmB;AAAnB;EAAA,kBAAmB;EAAnB;AAAmB;AAAnB;EAAA,oBAAmB;EAAnB;AAAmB;AAAnB;EAAA,mBAAmB;EAAnB;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA,iBAAmB;EAAnB;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA,mBAAmB;EAAnB;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA,oBAAmB;EAAnB;AAAmB;AAAnB;EAAA,oBAAmB;EAAnB;AAAmB;AAAnB;EAAA,oBAAmB;EAAnB;AAAmB;AAAnB;EAAA,oBAAmB;EAAnB;AAAmB;AAAnB;EAAA,oBAAmB;EAAnB;AAAmB;AAAnB;EAAA,oBAAmB;EAAnB;AAAmB;AAAnB;EAAA,oBAAmB;EAAnB;AAAmB;AAAnB;EAAA,oBAAmB;EAAnB;AAAmB;AAAnB;EAAA,oBAAmB;EAAnB;AAAmB;AAAnB;EAAA,oBAAmB;EAAnB;AAAmB;AAAnB;EAAA,oBAAmB;EAAnB;AAAmB;AAAnB;EAAA,oBAAmB;EAAnB;AAAmB;AAAnB;EAAA,oBAAmB;EAAnB;AAAmB;AAAnB;EAAA,8BAAmB;EAAnB;AAAmB;AAAnB;EAAA;AAAmB;AAAnB;EAAA,8BAAmB;EAAnB,wDAAmB;EAAnB;AAAmB;AAAnB;EAAA;AAAmB;;AAEnB;EACE;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;AACF;AACA;EACE,4BAA4B;AAC9B;;AAEA;EACE,gCAAgC;AAClC;;AAEA;EACE,2BAA2B;EAC3B,0CAA0C;AAC5C;;AAvBA;EAAA;AAwBA;;AAxBA;EAAA;AAwBA;;AAxBA;EAAA,oBAwBA;EAxBA;AAwBA;;AAxBA;;EAAA;IAAA;EAwBA;;EAxBA;IAAA;EAwBA;AAAA;;AAxBA;;EAAA;IAAA;EAwBA;;EAxBA;IAAA;EAwBA;;EAxBA;IAAA;EAwBA;AAAA\",\"sourcesContent\":[\"@tailwind base;\\r\\n@tailwind components;\\r\\n@tailwind utilities;\\r\\n\\r\\n@keyframes fadeIn {\\r\\n 0% {\\r\\n opacity: 0;\\r\\n }\\r\\n 100% {\\r\\n opacity: 1;\\r\\n }\\r\\n}\\r\\n.fade-in {\\r\\n animation: fadeIn 1s ease-in;\\r\\n}\\r\\n\\r\\n.lift-on-hover {\\r\\n transition: all 0.2s ease-in-out;\\r\\n}\\r\\n\\r\\n.lift-on-hover:hover {\\r\\n transform: translateY(-5px);\\r\\n box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","/*! js-cookie v3.0.5 | MIT */\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () {\n var current = global.Cookies;\n var exports = global.Cookies = factory();\n exports.noConflict = function () { global.Cookies = current; return exports; };\n })());\n})(this, (function () { 'use strict';\n\n /* eslint-disable no-var */\n function assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n }\n /* eslint-enable no-var */\n\n /* eslint-disable no-var */\n var defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n };\n /* eslint-enable no-var */\n\n /* eslint-disable no-var */\n\n function init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n }\n\n var api = init(defaultConverter, { path: '/' });\n /* eslint-enable no-var */\n\n return api;\n\n}));\n","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.useReactAuthKit = useReactAuthKit;\nvar _react = require(\"react\");\nvar _errors = require(\"./errors\");\nfunction getContext() {\n var context = (0, _react.createContext)(null);\n if (process.env.NODE_ENV !== 'production') {\n context.displayName = 'ReactAuthKit';\n }\n return context;\n}\nvar AuthKitContext = getContext();\nfunction useReactAuthKit() {\n var context = (0, _react.useContext)(AuthKitContext);\n if (context === null) {\n throw new _errors.AuthError('Auth Provider is missing. ' + 'Make sure, you are using this component inside the auth provider.');\n }\n return context;\n}\nvar _default = exports.default = AuthKitContext;","\"use strict\";\n'use client';\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _AuthContext = _interopRequireDefault(require(\"./AuthContext\"));\nvar _hooks = require(\"./utils/hooks\");\nvar _reducers = require(\"./utils/reducers\");\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction AuthProvider(_ref) {\n var store = _ref.store,\n children = _ref.children;\n var tokenObject = store.tokenObject,\n refresh = store.refresh;\n if (refresh) {\n (0, _hooks.useInterval)(function () {\n var _tokenObject$value$au, _tokenObject$value$re;\n refresh.refreshApiCallback({\n authToken: (_tokenObject$value$au = tokenObject.value.auth) === null || _tokenObject$value$au === void 0 ? void 0 : _tokenObject$value$au.token,\n authUserState: tokenObject.value.userState,\n refreshToken: (_tokenObject$value$re = tokenObject.value.refresh) === null || _tokenObject$value$re === void 0 ? void 0 : _tokenObject$value$re.token\n }).then(function (result) {\n if (result.isSuccess) {\n tokenObject.set((0, _reducers.doRefresh)(result));\n } else {\n tokenObject.set((0, _reducers.doSignOut)());\n }\n }).catch(function () {});\n }, tokenObject.value.isSignIn ? refresh.interval : null);\n }\n return (0, _jsxRuntime.jsx)(_AuthContext.default.Provider, {\n value: tokenObject,\n children: children\n });\n}\nvar _default = exports.default = AuthProvider;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _jsCookie = _interopRequireDefault(require(\"js-cookie\"));\nvar _rxjs = require(\"rxjs\");\nvar _errors = require(\"./errors\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nclass TokenObject {\n constructor(authStorageName, authStorageType, refreshTokenName, debug, cookieDomain, cookieSecure) {\n this.authStorageName = authStorageName;\n this.authStorageType = authStorageType;\n this.stateStorageName = `${authStorageName}_state`;\n this.refreshTokenName = refreshTokenName;\n this.cookieDomain = cookieDomain;\n this.cookieSecure = cookieSecure;\n this.debug = debug;\n this.authStorageTypeName = `${this.authStorageName}_type`;\n this.isUsingRefreshToken = !!this.refreshTokenName;\n this.authValue = this.initialToken_();\n this.authSubject = new _rxjs.BehaviorSubject(this.authValue);\n this.log(`[Auth Kit] - Initial Value ${this.authValue}`);\n this.authSubject.subscribe({\n next: this.syncTokens\n });\n }\n subscribe = (next, error, complete) => {\n this.authSubject.subscribe({\n next: next,\n error: error,\n complete: complete\n });\n };\n set = data => {\n this.log(`Set Function is called with`);\n if (this.debug) {\n console.dir(data);\n }\n this.log(`Set Function Old Data`);\n if (this.debug) {\n console.dir(this.value);\n }\n let obj = this.value;\n if (data.userState !== undefined) {\n obj.userState = data.userState;\n }\n if (data.auth) {\n try {\n const exp = this.getExpireDateTime(data.auth.token);\n if (exp > new Date()) {\n obj = {\n ...obj,\n auth: {\n 'token': data.auth.token,\n 'type': data.auth.type,\n 'expiresAt': exp\n },\n isSignIn: true\n };\n } else {\n obj = {\n ...obj,\n auth: null,\n isSignIn: false,\n userState: null\n };\n new _errors.AuthError('Given Auth Token is already expired.');\n }\n } catch (e) {\n obj = {\n ...obj,\n auth: null,\n isSignIn: false,\n userState: null\n };\n new _errors.AuthError('Error pursing the Auth Token. Make sure you provided a valid JWT.');\n }\n } else if (data.auth === null) {\n obj = {\n ...obj,\n auth: null,\n isSignIn: false,\n userState: null\n };\n }\n if (this.isUsingRefreshToken) {\n if (obj.auth === null) {\n obj = {\n ...obj,\n refresh: null\n };\n } else if (data.refresh) {\n try {\n const refreshExpireTime = this.getExpireDateTime(data.refresh);\n if (refreshExpireTime > new Date()) {\n obj = {\n ...obj,\n refresh: {\n 'token': data.refresh,\n 'expiresAt': refreshExpireTime\n }\n };\n } else {\n obj = {\n ...obj,\n auth: null,\n isSignIn: false,\n userState: null,\n refresh: null\n };\n new _errors.AuthError('Given Refresh Token is already expired.');\n }\n } catch (e) {\n obj = {\n ...obj,\n auth: null,\n isSignIn: false,\n userState: null,\n refresh: null\n };\n new _errors.AuthError('Error pursing the Auth Token.' + ' Make sure you provided a valid JWT.');\n }\n } else if (data.refresh === null) {\n obj = {\n ...obj,\n refresh: null\n };\n }\n }\n this.log(`[Auth Kit] - Set Function New Data`);\n this.log(obj);\n this.authValue = obj;\n this.authSubject.next(obj);\n };\n get value() {\n return this.authSubject.value;\n }\n initialToken_ = () => {\n if (this.authStorageType === 'cookie') {\n return this.initialCookieToken_();\n } else {\n return this.initialLSToken_();\n }\n };\n initialCookieToken_ = () => {\n const authToken = _jsCookie.default.get(this.authStorageName);\n const authTokenType = _jsCookie.default.get(this.authStorageTypeName);\n const stateCookie = _jsCookie.default.get(this.stateStorageName);\n const refreshToken = this.isUsingRefreshToken && this.refreshTokenName != null ? _jsCookie.default.get(this.refreshTokenName) : null;\n return this.checkTokenExist_(authToken, authTokenType, stateCookie, refreshToken);\n };\n initialLSToken_ = () => {\n const authToken = localStorage.getItem(this.authStorageName);\n const authTokenType = localStorage.getItem(this.authStorageTypeName);\n const stateCookie = localStorage.getItem(this.stateStorageName);\n const refreshToken = this.isUsingRefreshToken && this.refreshTokenName != null ? localStorage.getItem(this.refreshTokenName) : null;\n return this.checkTokenExist_(authToken, authTokenType, stateCookie, refreshToken);\n };\n checkTokenExist_ = (authToken, authTokenType, stateCookie, refreshToken) => {\n this.log('checkTokenExist_ is called');\n this.log(`Params: authToken: ${authToken}, authTokenType: ${authTokenType},\n stateCookie: ${stateCookie}, refreshToken: ${refreshToken}`);\n try {\n let refresh;\n if (this.isUsingRefreshToken && !!refreshToken) {\n this.log(`checkTokenExist - isUsingRefreshToken\n = ${this.isUsingRefreshToken} refrehToken - ${refreshToken}`);\n const refreshTokenExpiresAt = this.getExpireDateTime(refreshToken);\n if (refreshTokenExpiresAt < new Date()) {\n this.log(`checkTokenExist - refresh token is expired \n ${refreshTokenExpiresAt} ${new Date()}`);\n refresh = null;\n } else {\n this.log(`checkTokenExist - new refresh token is assigned \n ${refreshToken}`);\n refresh = {\n token: refreshToken,\n expiresAt: refreshTokenExpiresAt\n };\n }\n } else {\n this.log(`checkTokenExist - Refesh Token is invalid or not using\n refresh feature ${this.isUsingRefreshToken} ${refreshToken}`);\n refresh = null;\n }\n if (this.isUsingRefreshToken && !refresh) {\n this.log(`checkTokenExist - Removing Refresh Token`);\n this.removeAllToken();\n return {\n auth: null,\n refresh: null,\n userState: null,\n isUsingRefreshToken: this.isUsingRefreshToken,\n isSignIn: false\n };\n }\n let auth;\n let authState;\n if (!!authToken && !!authTokenType && !!stateCookie) {\n this.log(`checkTokenExist - authToken, authTokenType, stateCookie exists`);\n try {\n const expiresAt = this.getExpireDateTime(authToken);\n if (expiresAt < new Date()) {\n this.log(`checkTokenExist - auth token is expired \n ${expiresAt} ${new Date()}`);\n auth = null;\n authState = null;\n } else {\n try {\n authState = JSON.parse(stateCookie.replaceAll('\\\\', ''));\n auth = {\n token: authToken,\n type: authTokenType,\n expiresAt: expiresAt\n };\n } catch (err) {\n this.log('state cookie JSON parsing failed');\n this.log(err);\n auth = null;\n authState = null;\n }\n }\n } catch (e) {\n this.log(`checkTokenExist - auth token or auth state is invalid \n ${authToken} ${stateCookie}`);\n this.log(e);\n auth = null;\n authState = null;\n }\n } else {\n this.log(`checkTokenExist ` + `- authToken, authTokenType, stateCookie doesn't exists`);\n auth = null;\n authState = null;\n }\n if (refresh) {\n if (!!auth && !!authState) {\n this.log('checkTokenExist - Returning auth and refrsh');\n this.log({\n auth: auth,\n refresh: refresh,\n userState: authState,\n isUsingRefreshToken: this.isUsingRefreshToken,\n isSignIn: true\n });\n return {\n auth: auth,\n refresh: refresh,\n userState: authState,\n isUsingRefreshToken: this.isUsingRefreshToken,\n isSignIn: true\n };\n }\n this.log('checkTokenExist - Removing Auth Token');\n this.removeAuth();\n this.log({\n auth: null,\n refresh: refresh,\n userState: null,\n isUsingRefreshToken: this.isUsingRefreshToken,\n isSignIn: false\n });\n return {\n auth: null,\n refresh: refresh,\n userState: null,\n isUsingRefreshToken: this.isUsingRefreshToken,\n isSignIn: false\n };\n } else if (!this.isUsingRefreshToken && !!auth && !!authState) {\n this.log('checkTokenExist - Returning auth');\n this.log({\n auth: auth,\n refresh: null,\n userState: authState,\n isUsingRefreshToken: this.isUsingRefreshToken,\n isSignIn: true\n });\n return {\n auth: auth,\n refresh: null,\n userState: authState,\n isUsingRefreshToken: this.isUsingRefreshToken,\n isSignIn: true\n };\n }\n {\n this.log('checkTokenExist- removing all tokens. Returning null');\n this.removeAllToken();\n return {\n auth: null,\n refresh: null,\n userState: null,\n isUsingRefreshToken: this.isUsingRefreshToken,\n isSignIn: false\n };\n }\n } catch (e) {\n this.removeAllToken();\n return {\n auth: null,\n refresh: null,\n userState: null,\n isUsingRefreshToken: this.isUsingRefreshToken,\n isSignIn: false\n };\n }\n };\n parseJwt = token => {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n return JSON.parse(jsonPayload);\n };\n getExpireDateTime = token => {\n const jwtData = this.parseJwt(token);\n if (Object.prototype.hasOwnProperty.call(jwtData, 'exp')) {\n const d = new Date(0);\n d.setUTCSeconds(jwtData.exp);\n return d;\n } else {\n throw new _errors.AuthError('JWT has no exp param');\n }\n };\n syncTokens = authState => {\n if (authState.auth) {\n this.setAuthToken(authState.auth.token, authState.auth.type, authState.userState);\n } else {\n this.removeAuth();\n }\n if (!!authState.refresh && this.isUsingRefreshToken) {\n this.setRefreshToken(authState.refresh.token);\n } else {\n this.removeRefresh();\n }\n };\n setAuthToken = (authToken, authTokenType, authState) => {\n if (this.authStorageType === 'cookie') {\n const expiresAt = this.getExpireDateTime(authToken);\n _jsCookie.default.set(this.authStorageName, authToken, {\n expires: expiresAt,\n domain: this.cookieDomain,\n secure: this.cookieSecure\n });\n _jsCookie.default.set(this.authStorageTypeName, authTokenType, {\n expires: expiresAt,\n domain: this.cookieDomain,\n secure: this.cookieSecure\n });\n if (authState) {\n _jsCookie.default.set(this.stateStorageName, JSON.stringify(authState), {\n expires: expiresAt,\n domain: this.cookieDomain,\n secure: this.cookieSecure\n });\n }\n } else {\n window.localStorage.setItem(this.authStorageName, authToken);\n window.localStorage.setItem(this.authStorageTypeName, authTokenType);\n if (authState) {\n window.localStorage.setItem(this.stateStorageName, JSON.stringify(authState));\n }\n }\n };\n setRefreshToken = refreshToken => {\n if (this.authStorageType === 'cookie') {\n if (this.isUsingRefreshToken && !!this.refreshTokenName && !!refreshToken) {\n const refreshTokenExpiresAt = this.getExpireDateTime(refreshToken);\n _jsCookie.default.set(this.refreshTokenName, refreshToken, {\n expires: refreshTokenExpiresAt,\n domain: this.cookieDomain,\n secure: this.cookieSecure\n });\n }\n } else if (this.isUsingRefreshToken && !!this.refreshTokenName && !!refreshToken) {\n localStorage.setItem(this.refreshTokenName, refreshToken);\n }\n };\n removeAllToken = () => {\n if (this.authStorageType === 'cookie') {\n this.removeAllCookieToken_();\n } else {\n this.removeAllLSToken_();\n }\n };\n removeAllCookieToken_ = () => {\n _jsCookie.default.remove(this.authStorageName, {\n domain: this.cookieDomain,\n secure: this.cookieSecure\n });\n _jsCookie.default.remove(this.authStorageTypeName, {\n domain: this.cookieDomain,\n secure: this.cookieSecure\n });\n _jsCookie.default.remove(this.stateStorageName, {\n domain: this.cookieDomain,\n secure: this.cookieSecure\n });\n if (this.isUsingRefreshToken && !!this.refreshTokenName) {\n _jsCookie.default.remove(this.refreshTokenName, {\n domain: this.cookieDomain,\n secure: this.cookieSecure\n });\n }\n };\n removeAllLSToken_ = () => {\n localStorage.removeItem(this.authStorageName);\n localStorage.removeItem(this.authStorageTypeName);\n localStorage.removeItem(this.stateStorageName);\n if (this.isUsingRefreshToken && !!this.refreshTokenName) {\n localStorage.removeItem(this.refreshTokenName);\n }\n };\n removeAuth = () => {\n if (this.authStorageType === 'cookie') {\n this.removeAuthCookie();\n } else {\n this.removeAuthToken();\n }\n };\n removeAuthCookie = () => {\n _jsCookie.default.remove(this.authStorageName, {\n domain: this.cookieDomain,\n secure: this.cookieSecure\n });\n _jsCookie.default.remove(this.authStorageTypeName, {\n domain: this.cookieDomain,\n secure: this.cookieSecure\n });\n _jsCookie.default.remove(this.stateStorageName, {\n domain: this.cookieDomain,\n secure: this.cookieSecure\n });\n };\n removeAuthToken = () => {\n localStorage.removeItem(this.authStorageName);\n localStorage.removeItem(this.authStorageTypeName);\n localStorage.removeItem(this.stateStorageName);\n };\n removeRefresh = () => {\n if (this.authStorageType === 'cookie') {\n this.removeRefreshCookie();\n } else {\n this.removeRefreshLocalStorage();\n }\n };\n removeRefreshCookie = () => {\n if (this.isUsingRefreshToken && !!this.refreshTokenName) {\n _jsCookie.default.remove(this.refreshTokenName, {\n domain: this.cookieDomain,\n secure: this.cookieSecure\n });\n }\n };\n removeRefreshLocalStorage = () => {\n if (this.isUsingRefreshToken && !!this.refreshTokenName) {\n localStorage.removeItem(this.refreshTokenName);\n }\n };\n log = (msg, ...optionalParams) => {\n if (this.debug) {\n console.log(`[Auth Kit] - ${msg}`, optionalParams);\n }\n };\n}\nvar _default = exports.default = TokenObject;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createStore;\nvar _RxTokenObject = _interopRequireDefault(require(\"./RxTokenObject\"));\nvar _errors = require(\"./errors\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction createStore(params) {\n if (params.authType === 'cookie' && (params.cookieDomain === undefined || params.cookieSecure === undefined)) {\n throw new _errors.AuthError('authType \\'cookie\\' requires \\'cookieDomain\\'' + ' and \\'cookieSecure\\' to be present in the param');\n }\n const refreshTokenName = params.refresh ? `${params.authName}_refresh` : null;\n const tokenObject = new _RxTokenObject.default(params.authName, params.authType, refreshTokenName, params.debug === undefined ? false : params.debug, params.cookieDomain, params.cookieSecure);\n return {\n tokenObject,\n refresh: params.refresh\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AuthError = void 0;\nclass AuthError extends Error {\n constructor(message) {\n super(message);\n }\n}\nexports.AuthError = AuthError;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _AuthContext = require(\"../AuthContext\");\nvar _utils = require(\"../utils/utils\");\nfunction useAuthUser() {\n var _useReactAuthKit = (0, _AuthContext.useReactAuthKit)(),\n value = _useReactAuthKit.value;\n if ((0, _utils.isAuthenticated)(value)) {\n return value.userState;\n } else {\n return null;\n }\n}\nvar _default = exports.default = useAuthUser;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _AuthContext = require(\"../AuthContext\");\nvar _reducers = require(\"../utils/reducers\");\nvar _errors = require(\"../errors\");\nfunction useSignIn() {\n var context = (0, _AuthContext.useReactAuthKit)();\n return function (signInConfig) {\n if (context.value.isUsingRefreshToken) {\n if (signInConfig.refresh) {\n context.set((0, _reducers.doSignIn)(signInConfig));\n return true;\n } else {\n throw new _errors.AuthError('This appication is using refresh token feature.' + ' So please include `refresh` param in the parameters');\n }\n } else if (signInConfig.refresh) {\n throw new _errors.AuthError('This appication is not using refresh token feature.' + ' So please remove the `refresh` param in the parameters.' + ' In Case you want to use refresh token feature,' + ' make sure you added that while creating the store.');\n } else {\n context.set((0, _reducers.doSignIn)(signInConfig));\n return true;\n }\n };\n}\nvar _default = exports.default = useSignIn;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _AuthContext = require(\"../AuthContext\");\nvar _reducers = require(\"../utils/reducers\");\nfunction useSignOut() {\n var context = (0, _AuthContext.useReactAuthKit)();\n return function () {\n context.set((0, _reducers.doSignOut)());\n };\n}\nvar _default = exports.default = useSignOut;","\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {};\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _AuthProvider.default;\n }\n});\nvar _errors = require(\"./errors\");\nObject.keys(_errors).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _errors[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _errors[key];\n }\n });\n});\nvar _AuthProvider = _interopRequireWildcard(require(\"./AuthProvider\"));\nObject.keys(_AuthProvider).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _AuthProvider[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _AuthProvider[key];\n }\n });\n});\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.useInterval = useInterval;\nvar _react = require(\"react\");\nfunction useInterval(callback, delay) {\n const savedCallback = (0, _react.useRef)(callback);\n const intervalRef = (0, _react.useRef)(null);\n (0, _react.useEffect)(() => {\n savedCallback.current = callback;\n }, [callback]);\n (0, _react.useEffect)(() => {\n const tick = () => savedCallback.current();\n if (typeof delay === 'number') {\n intervalRef.current = window.setInterval(tick, delay * 60 * 1000);\n }\n return () => {\n if (intervalRef.current) {\n window.clearTimeout(intervalRef.current);\n }\n };\n }, [delay]);\n return intervalRef;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.doRefresh = doRefresh;\nexports.doSignIn = doSignIn;\nexports.doSignOut = doSignOut;\nfunction doSignIn(signInParams) {\n const authType = signInParams.auth.type || 'Bearer';\n const authToken = signInParams.auth.token;\n return {\n auth: {\n token: authToken,\n type: authType\n },\n refresh: signInParams.refresh,\n userState: signInParams.userState || {}\n };\n}\nfunction doRefresh(refreshTokenParam) {\n let ret = {\n auth: {\n token: refreshTokenParam.newAuthToken,\n type: refreshTokenParam.newAuthTokenType || 'Bearer'\n }\n };\n if (refreshTokenParam.newAuthUserState) {\n ret = {\n ...ret,\n userState: refreshTokenParam.newAuthUserState\n };\n }\n if (refreshTokenParam.newRefreshToken) {\n ret = {\n ...ret,\n refresh: refreshTokenParam.newRefreshToken\n };\n }\n return ret;\n}\nfunction doSignOut() {\n return {\n auth: null\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isAuthenticated = isAuthenticated;\nfunction isAuthenticated(auth) {\n if (auth.auth) {\n return new Date(auth.auth.expiresAt) > new Date();\n }\n return false;\n}","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\n\nconst NavigationContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n NavigationContext.displayName = \"Navigation\";\n}\nconst LocationContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n LocationContext.displayName = \"Location\";\n}\nconst RouteContext = /*#__PURE__*/React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false\n});\nif (process.env.NODE_ENV !== \"production\") {\n RouteContext.displayName = \"Route\";\n}\nconst RouteErrorContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n RouteErrorContext.displayName = \"RouteError\";\n}\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nfunction useHref(to, _temp) {\n let {\n relative\n } = _temp === void 0 ? {} : _temp;\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useHref() may be used only in the context of a component.\") : UNSAFE_invariant(false) : void 0;\n let {\n basename,\n navigator\n } = React.useContext(NavigationContext);\n let {\n hash,\n pathname,\n search\n } = useResolvedPath(to, {\n relative\n });\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname = pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n return navigator.createHref({\n pathname: joinedPathname,\n search,\n hash\n });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nfunction useInRouterContext() {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nfunction useLocation() {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useLocation() may be used only in the context of a component.\") : UNSAFE_invariant(false) : void 0;\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nfunction useNavigationType() {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nfunction useMatch(pattern) {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useMatch() may be used only in the context of a component.\") : UNSAFE_invariant(false) : void 0;\n let {\n pathname\n } = useLocation();\n return React.useMemo(() => matchPath(pattern, pathname), [pathname, pattern]);\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\n\nconst navigateEffectWarning = \"You should call navigate() in a React.useEffect(), not when \" + \"your component is first rendered.\";\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(cb) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nfunction useNavigate() {\n let {\n isDataRoute\n } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\nfunction useNavigateUnstable() {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useNavigate() may be used only in the context of a component.\") : UNSAFE_invariant(false) : void 0;\n let dataRouterContext = React.useContext(DataRouterContext);\n let {\n basename,\n future,\n navigator\n } = React.useContext(NavigationContext);\n let {\n matches\n } = React.useContext(RouteContext);\n let {\n pathname: locationPathname\n } = useLocation();\n let routePathnamesJson = JSON.stringify(UNSAFE_getResolveToMatches(matches, future.v7_relativeSplatPath));\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n let navigate = React.useCallback(function (to, options) {\n if (options === void 0) {\n options = {};\n }\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(activeRef.current, navigateEffectWarning) : void 0;\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n let path = resolveTo(to, JSON.parse(routePathnamesJson), locationPathname, options.relative === \"path\");\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n (!!options.replace ? navigator.replace : navigator.push)(path, options.state, options);\n }, [basename, navigator, routePathnamesJson, locationPathname, dataRouterContext]);\n return navigate;\n}\nconst OutletContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nfunction useOutletContext() {\n return React.useContext(OutletContext);\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nfunction useOutlet(context) {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return /*#__PURE__*/React.createElement(OutletContext.Provider, {\n value: context\n }, outlet);\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nfunction useParams() {\n let {\n matches\n } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? routeMatch.params : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nfunction useResolvedPath(to, _temp2) {\n let {\n relative\n } = _temp2 === void 0 ? {} : _temp2;\n let {\n future\n } = React.useContext(NavigationContext);\n let {\n matches\n } = React.useContext(RouteContext);\n let {\n pathname: locationPathname\n } = useLocation();\n let routePathnamesJson = JSON.stringify(UNSAFE_getResolveToMatches(matches, future.v7_relativeSplatPath));\n return React.useMemo(() => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname, relative === \"path\"), [to, routePathnamesJson, locationPathname, relative]);\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nfunction useRoutes(routes, locationArg) {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nfunction useRoutesImpl(routes, locationArg, dataRouterState, future) {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useRoutes() may be used only in the context of a component.\") : UNSAFE_invariant(false) : void 0;\n let {\n navigator\n } = React.useContext(NavigationContext);\n let {\n matches: parentMatches\n } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n if (process.env.NODE_ENV !== \"production\") {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = parentRoute && parentRoute.path || \"\";\n warningOnce(parentPathname, !parentRoute || parentPath.endsWith(\"*\"), \"You rendered descendant (or called `useRoutes()`) at \" + (\"\\\"\" + parentPathname + \"\\\" (under ) but the \") + \"parent route path has no trailing \\\"*\\\". This means if you navigate \" + \"deeper, the parent won't match anymore and therefore the child \" + \"routes will never render.\\n\\n\" + (\"Please change the parent to .\"));\n }\n let locationFromContext = useLocation();\n let location;\n if (locationArg) {\n var _parsedLocationArg$pa;\n let parsedLocationArg = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n !(parentPathnameBase === \"/\" || ((_parsedLocationArg$pa = parsedLocationArg.pathname) == null ? void 0 : _parsedLocationArg$pa.startsWith(parentPathnameBase))) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"When overriding the location using `` or `useRoutes(routes, location)`, \" + \"the location pathname must begin with the portion of the URL pathname that was \" + (\"matched by all parent routes. The current pathname base is \\\"\" + parentPathnameBase + \"\\\" \") + (\"but pathname \\\"\" + parsedLocationArg.pathname + \"\\\" was given in the `location` prop.\")) : UNSAFE_invariant(false) : void 0;\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n let pathname = location.pathname || \"/\";\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n let matches = matchRoutes(routes, {\n pathname: remainingPathname\n });\n if (process.env.NODE_ENV !== \"production\") {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(parentRoute || matches != null, \"No routes matched location \\\"\" + location.pathname + location.search + location.hash + \"\\\" \") : void 0;\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(matches == null || matches[matches.length - 1].route.element !== undefined || matches[matches.length - 1].route.Component !== undefined || matches[matches.length - 1].route.lazy !== undefined, \"Matched leaf route at location \\\"\" + location.pathname + location.search + location.hash + \"\\\" \" + \"does not have an element or Component. This means it will render an with a \" + \"null value by default resulting in an \\\"empty\\\" page.\") : void 0;\n }\n let renderedMatches = _renderMatches(matches && matches.map(match => Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation ? navigator.encodeLocation(match.pathname).pathname : match.pathname]),\n pathnameBase: match.pathnameBase === \"/\" ? parentPathnameBase : joinPaths([parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation ? navigator.encodeLocation(match.pathnameBase).pathname : match.pathnameBase])\n })), parentMatches, dataRouterState, future);\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return /*#__PURE__*/React.createElement(LocationContext.Provider, {\n value: {\n location: _extends({\n pathname: \"/\",\n search: \"\",\n hash: \"\",\n state: null,\n key: \"default\"\n }, location),\n navigationType: Action.Pop\n }\n }, renderedMatches);\n }\n return renderedMatches;\n}\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error) ? error.status + \" \" + error.statusText : error instanceof Error ? error.message : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = {\n padding: \"0.5rem\",\n backgroundColor: lightgrey\n };\n let codeStyles = {\n padding: \"2px 4px\",\n backgroundColor: lightgrey\n };\n let devInfo = null;\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\"Error handled by React Router default ErrorBoundary:\", error);\n devInfo = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"p\", null, \"\\uD83D\\uDCBF Hey developer \\uD83D\\uDC4B\"), /*#__PURE__*/React.createElement(\"p\", null, \"You can provide a way better UX than this when your app throws errors by providing your own \", /*#__PURE__*/React.createElement(\"code\", {\n style: codeStyles\n }, \"ErrorBoundary\"), \" or\", \" \", /*#__PURE__*/React.createElement(\"code\", {\n style: codeStyles\n }, \"errorElement\"), \" prop on your route.\"));\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"h2\", null, \"Unexpected Application Error!\"), /*#__PURE__*/React.createElement(\"h3\", {\n style: {\n fontStyle: \"italic\"\n }\n }, message), stack ? /*#__PURE__*/React.createElement(\"pre\", {\n style: preStyles\n }, stack) : null, devInfo);\n}\nconst defaultErrorElement = /*#__PURE__*/React.createElement(DefaultErrorComponent, null);\nclass RenderErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error\n };\n }\n static getDerivedStateFromError(error) {\n return {\n error: error\n };\n }\n static getDerivedStateFromProps(props, state) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (state.location !== props.location || state.revalidation !== \"idle\" && props.revalidation === \"idle\") {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation\n };\n }\n componentDidCatch(error, errorInfo) {\n console.error(\"React Router caught the following error during render\", error, errorInfo);\n }\n render() {\n return this.state.error !== undefined ? /*#__PURE__*/React.createElement(RouteContext.Provider, {\n value: this.props.routeContext\n }, /*#__PURE__*/React.createElement(RouteErrorContext.Provider, {\n value: this.state.error,\n children: this.props.component\n })) : this.props.children;\n }\n}\nfunction RenderedRoute(_ref) {\n let {\n routeContext,\n match,\n children\n } = _ref;\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (dataRouterContext && dataRouterContext.static && dataRouterContext.staticContext && (match.route.errorElement || match.route.ErrorBoundary)) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n return /*#__PURE__*/React.createElement(RouteContext.Provider, {\n value: routeContext\n }, children);\n}\nfunction _renderMatches(matches, parentMatches, dataRouterState, future) {\n var _dataRouterState2;\n if (parentMatches === void 0) {\n parentMatches = [];\n }\n if (dataRouterState === void 0) {\n dataRouterState = null;\n }\n if (future === void 0) {\n future = null;\n }\n if (matches == null) {\n var _dataRouterState;\n if ((_dataRouterState = dataRouterState) != null && _dataRouterState.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches;\n } else {\n return null;\n }\n }\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = (_dataRouterState2 = dataRouterState) == null ? void 0 : _dataRouterState2.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(m => m.route.id && (errors == null ? void 0 : errors[m.route.id]) !== undefined);\n !(errorIndex >= 0) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"Could not find a matching route for errors on route IDs: \" + Object.keys(errors).join(\",\")) : UNSAFE_invariant(false) : void 0;\n renderedMatches = renderedMatches.slice(0, Math.min(renderedMatches.length, errorIndex + 1));\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n if (match.route.id) {\n let {\n loaderData,\n errors\n } = dataRouterState;\n let needsToRunLoader = match.route.loader && loaderData[match.route.id] === undefined && (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error;\n let shouldRenderHydrateFallback = false;\n let errorElement = null;\n let hydrateFallbackElement = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\"route-fallback\", false, \"No `HydrateFallback` element provided to render during initial hydration\");\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = /*#__PURE__*/React.createElement(match.route.Component, null);\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return /*#__PURE__*/React.createElement(RenderedRoute, {\n match: match,\n routeContext: {\n outlet,\n matches,\n isDataRoute: dataRouterState != null\n },\n children: children\n });\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState && (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? /*#__PURE__*/React.createElement(RenderErrorBoundary, {\n location: dataRouterState.location,\n revalidation: dataRouterState.revalidation,\n component: errorElement,\n error: error,\n children: getChildren(),\n routeContext: {\n outlet: null,\n matches,\n isDataRoute: true\n }\n }) : getChildren();\n }, null);\n}\nvar DataRouterHook = /*#__PURE__*/function (DataRouterHook) {\n DataRouterHook[\"UseBlocker\"] = \"useBlocker\";\n DataRouterHook[\"UseRevalidator\"] = \"useRevalidator\";\n DataRouterHook[\"UseNavigateStable\"] = \"useNavigate\";\n return DataRouterHook;\n}(DataRouterHook || {});\nvar DataRouterStateHook = /*#__PURE__*/function (DataRouterStateHook) {\n DataRouterStateHook[\"UseBlocker\"] = \"useBlocker\";\n DataRouterStateHook[\"UseLoaderData\"] = \"useLoaderData\";\n DataRouterStateHook[\"UseActionData\"] = \"useActionData\";\n DataRouterStateHook[\"UseRouteError\"] = \"useRouteError\";\n DataRouterStateHook[\"UseNavigation\"] = \"useNavigation\";\n DataRouterStateHook[\"UseRouteLoaderData\"] = \"useRouteLoaderData\";\n DataRouterStateHook[\"UseMatches\"] = \"useMatches\";\n DataRouterStateHook[\"UseRevalidator\"] = \"useRevalidator\";\n DataRouterStateHook[\"UseNavigateStable\"] = \"useNavigate\";\n DataRouterStateHook[\"UseRouteId\"] = \"useRouteId\";\n return DataRouterStateHook;\n}(DataRouterStateHook || {});\nfunction getDataRouterConsoleError(hookName) {\n return hookName + \" must be used within a data router. See https://reactrouter.com/routers/picking-a-router.\";\n}\nfunction useDataRouterContext(hookName) {\n let ctx = React.useContext(DataRouterContext);\n !ctx ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return ctx;\n}\nfunction useDataRouterState(hookName) {\n let state = React.useContext(DataRouterStateContext);\n !state ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return state;\n}\nfunction useRouteContext(hookName) {\n let route = React.useContext(RouteContext);\n !route ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n !thisRoute.route.id ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, hookName + \" can only be used on routes that contain a unique \\\"id\\\"\") : UNSAFE_invariant(false) : void 0;\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nfunction useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nfunction useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nfunction useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(() => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation\n }), [dataRouterContext.router.revalidate, state.revalidation]);\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nfunction useMatches() {\n let {\n matches,\n loaderData\n } = useDataRouterState(DataRouterStateHook.UseMatches);\n return React.useMemo(() => matches.map(m => UNSAFE_convertRouteMatchToUiMatch(m, loaderData)), [matches, loaderData]);\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nfunction useLoaderData() {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n if (state.errors && state.errors[routeId] != null) {\n console.error(\"You cannot `useLoaderData` in an errorElement (routeId: \" + routeId + \")\");\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nfunction useRouteLoaderData(routeId) {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nfunction useActionData() {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nfunction useRouteError() {\n var _state$errors;\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return (_state$errors = state.errors) == null ? void 0 : _state$errors[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nfunction useAsyncValue() {\n let value = React.useContext(AwaitContext);\n return value == null ? void 0 : value._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nfunction useAsyncError() {\n let value = React.useContext(AwaitContext);\n return value == null ? void 0 : value._error;\n}\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nfunction useBlocker(shouldBlock) {\n let {\n router,\n basename\n } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(arg => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let {\n currentLocation,\n nextLocation,\n historyAction\n } = arg;\n return shouldBlock({\n currentLocation: _extends({}, currentLocation, {\n pathname: stripBasename(currentLocation.pathname, basename) || currentLocation.pathname\n }),\n nextLocation: _extends({}, nextLocation, {\n pathname: stripBasename(nextLocation.pathname, basename) || nextLocation.pathname\n }),\n historyAction\n });\n }, [basename, shouldBlock]);\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey) ? state.blockers.get(blockerKey) : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable() {\n let {\n router\n } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n let navigate = React.useCallback(function (to, options) {\n if (options === void 0) {\n options = {};\n }\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(activeRef.current, navigateEffectWarning) : void 0;\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, _extends({\n fromRouteId: id\n }, options));\n }\n }, [router, id]);\n return navigate;\n}\nconst alreadyWarned = {};\nfunction warningOnce(key, cond, message) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, message) : void 0;\n }\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nfunction RouterProvider(_ref) {\n let {\n fallbackElement,\n router,\n future\n } = _ref;\n let [state, setStateImpl] = React.useState(router.state);\n let {\n v7_startTransition\n } = future || {};\n let setState = React.useCallback(newState => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n }, [setStateImpl, v7_startTransition]);\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n React.useEffect(() => {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(fallbackElement == null || !router.future.v7_partialHydration, \"`` is deprecated when using \" + \"`v7_partialHydration`, use a `HydrateFallback` component instead\") : void 0;\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n let navigator = React.useMemo(() => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: n => router.navigate(n),\n push: (to, state, opts) => router.navigate(to, {\n state,\n preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n }),\n replace: (to, state, opts) => router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n })\n };\n }, [router]);\n let basename = router.basename || \"/\";\n let dataRouterContext = React.useMemo(() => ({\n router,\n navigator,\n static: false,\n basename\n }), [router, navigator, basename]);\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a
\ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 43b5b4f2..c0c7ecf5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9691,6 +9691,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" }, diff --git a/src/Components/ProductsPage/pagination.tsx b/src/Components/ProductsPage/pagination.tsx new file mode 100644 index 00000000..78534ac1 --- /dev/null +++ b/src/Components/ProductsPage/pagination.tsx @@ -0,0 +1,110 @@ +import React from "react"; +import { useSelector, useDispatch } from "react-redux"; +import { setCurrentPage } from "../../Redux/features/productsPage/paginationSlice"; +import { RootState } from "../../Redux/store"; +import next from "../../asset/images/next.svg"; +import prev from "../../asset/images/prev.svg"; + +interface PaginationProps { + totalProducts: number; + productsPerPage: number; +} + +const Pagination: React.FC = ({ + totalProducts, + productsPerPage, +}) => { + const dispatch = useDispatch(); + const currentPage = useSelector( + (state: RootState) => state.pagination.currentPage + ); + const totalPages = Math.ceil(totalProducts / productsPerPage); + + const handleNext = () => { + if (currentPage < totalPages) { + dispatch(setCurrentPage(currentPage + 1)); + } + }; + + const handlePrevious = () => { + if (currentPage > 1) { + dispatch(setCurrentPage(currentPage - 1)); + } + }; + + const renderPageNumbers = () => { + const pages = []; + if (totalPages <= 5) { + for (let i = 1; i <= totalPages; i++) { + pages.push( + + ); + } + } else { + pages.push(renderPageButton(1)); + if (currentPage > 3) { + pages.push(...); + } + let startPage = Math.max(2, currentPage - 1); + let endPage = Math.min(totalPages - 1, currentPage + 1); + for (let i = startPage; i <= endPage; i++) { + pages.push(renderPageButton(i)); + } + if (currentPage < totalPages - 2) { + pages.push(...); + } + pages.push(renderPageButton(totalPages)); + } + return pages; + }; + + const renderPageButton = (page: number) => ( + + ); + + return ( +
+ currentPage !== 1 && handlePrevious()} + style={{ + opacity: currentPage === 1 ? 0.3 : 1, + cursor: currentPage === 1 ? "default" : "pointer", + }} + alt="previous" + /> + {renderPageNumbers()} + next +
+ ); +}; + +export default Pagination; diff --git a/src/Components/ProductsPage/productCard.tsx b/src/Components/ProductsPage/productCard.tsx new file mode 100644 index 00000000..e7906386 --- /dev/null +++ b/src/Components/ProductsPage/productCard.tsx @@ -0,0 +1,86 @@ +import React from "react"; + +interface Product { + id: string; + name: string; + price: number; + image: string; + category: string; +} + +interface ProductCardProps { + product: Product; +} + +const ProductCard: React.FC = ({ product }) => { + return ( +
+
+ product image +
+
+ {product.category} +
+
+

+ {product.name} +

+
+ {product.price} + + Rwf + +
+
+
+ + + + + + +
+
+
+
+
+ ); +}; + +export default ProductCard; diff --git a/src/Components/ProductsPage/searchProduct.tsx b/src/Components/ProductsPage/searchProduct.tsx new file mode 100644 index 00000000..eaef7354 --- /dev/null +++ b/src/Components/ProductsPage/searchProduct.tsx @@ -0,0 +1,38 @@ +import React from "react"; + +const Search = () => { + return ( +
+ + + + + +
+ ); +}; + +export default Search; diff --git a/src/Components/navBar.tsx b/src/Components/navBar.tsx new file mode 100644 index 00000000..aa84a361 --- /dev/null +++ b/src/Components/navBar.tsx @@ -0,0 +1,119 @@ +import React from "react"; +import profile from "../asset/images/profile.png"; + +const Navbar = () => { + return ( +
+ ); +}; + +export default Navbar; diff --git a/src/Redux/features/ApiSlice.tsx b/src/Redux/features/ApiSlice.tsx index 166fda15..e036601a 100644 --- a/src/Redux/features/ApiSlice.tsx +++ b/src/Redux/features/ApiSlice.tsx @@ -5,6 +5,6 @@ const baseQuery = fetchBaseQuery({baseUrl: API_URL,credentials: "include"}) export const apiSlice = createApi({ reducerPath: "api", baseQuery, - endpoints: (buider)=> ({}) + endpoints: (builder)=> ({}) }) diff --git a/src/Redux/features/productsPage/categorySlice.tsx b/src/Redux/features/productsPage/categorySlice.tsx new file mode 100644 index 00000000..81e49faa --- /dev/null +++ b/src/Redux/features/productsPage/categorySlice.tsx @@ -0,0 +1,17 @@ +import { createSlice } from "@reduxjs/toolkit"; + +export const categorySlice = createSlice({ + name: "category", + initialState: { + activeCategory: null, + }, + reducers: { + setActiveCategory: (state, action) => { + state.activeCategory = action.payload; + }, + }, +}); + +export const { setActiveCategory } = categorySlice.actions; + +export default categorySlice.reducer; diff --git a/src/Redux/features/productsPage/paginationSlice.tsx b/src/Redux/features/productsPage/paginationSlice.tsx new file mode 100644 index 00000000..3652115b --- /dev/null +++ b/src/Redux/features/productsPage/paginationSlice.tsx @@ -0,0 +1,26 @@ +import { createSlice, PayloadAction } from '@reduxjs/toolkit'; + +interface PaginationState { + currentPage: number; +} + +const initialState: PaginationState = { + currentPage: 1, +}; + +const paginationSlice = createSlice({ + name: 'pagination', + initialState, + reducers: { + // Action to set the current page + setCurrentPage(state, action: PayloadAction) { + state.currentPage = action.payload; + }, + }, +}); + + +export const { setCurrentPage } = paginationSlice.actions; + + +export default paginationSlice.reducer; \ No newline at end of file diff --git a/src/Redux/features/productsPage/productSlice.tsx b/src/Redux/features/productsPage/productSlice.tsx new file mode 100644 index 00000000..02322ab4 --- /dev/null +++ b/src/Redux/features/productsPage/productSlice.tsx @@ -0,0 +1,15 @@ +import { apiSlice } from "../ApiSlice"; + +const productApiSlice = apiSlice.injectEndpoints({ + endpoints: (builder) => ({ + selectProducts: builder.query({ + query: () => ({ + url: "/readAllProducts", + method: "GET", + }), + }), + }), +}); +export const { useSelectProductsQuery } = productApiSlice; + +export default productApiSlice; diff --git a/src/Redux/store.tsx b/src/Redux/store.tsx index 7038fae8..8b6b099d 100644 --- a/src/Redux/store.tsx +++ b/src/Redux/store.tsx @@ -1,13 +1,17 @@ -import { configureStore } from '@reduxjs/toolkit'; -import AuthSlice from './features/AuthSlice'; -import { apiSlice } from './features/ApiSlice'; +import { configureStore } from "@reduxjs/toolkit"; +import categoryReducer from "./features/productsPage/categorySlice"; +import paginationReducer from "./features/productsPage/paginationSlice"; +import { apiSlice } from "./features/ApiSlice"; export const store = configureStore({ - reducer: { - [apiSlice.reducerPath]:apiSlice.reducer - }, - middleware: (getDefaultMiddelware)=> getDefaultMiddelware().concat(apiSlice.middleware) - }); - - export type RootState = ReturnType; - export type AppDispatch = typeof store.dispatch; \ No newline at end of file + reducer: { + [apiSlice.reducerPath]: apiSlice.reducer, + category: categoryReducer, + pagination: paginationReducer, + }, + middleware: (getDefaultMiddelware) => + getDefaultMiddelware().concat(apiSlice.middleware), +}); + +export type RootState = ReturnType; +export type AppDispatch = typeof store.dispatch; diff --git a/src/Routes/index.tsx b/src/Routes/index.tsx index 15aecb7f..2c4f7912 100644 --- a/src/Routes/index.tsx +++ b/src/Routes/index.tsx @@ -9,7 +9,8 @@ import VerifyCode from '../pages/VerifyCode'; import VerifyEmail from '../Lib/VerifyEmail'; import AuthGoogle from '../Lib/authgoogle'; import AuthOutlet from '@auth-kit/react-router/AuthOutlet' -import Users from '../pages/users'; +import Users from '../pages/Users'; +import Products from '../pages/productsPage'; const AppRoutes: React.FC = () => { @@ -21,6 +22,7 @@ const AppRoutes: React.FC = () => { } /> } /> } /> + } /> }> }> } /> diff --git a/src/asset/images/next.svg b/src/asset/images/next.svg new file mode 100644 index 00000000..6387b897 --- /dev/null +++ b/src/asset/images/next.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/asset/images/prev.svg b/src/asset/images/prev.svg new file mode 100644 index 00000000..507e35a9 --- /dev/null +++ b/src/asset/images/prev.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/asset/images/profile.png b/src/asset/images/profile.png new file mode 100644 index 0000000000000000000000000000000000000000..b32c58e7c232562549f788b5394ad77a835a0df7 GIT binary patch literal 20933 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 literal 0 HcmV?d00001 diff --git a/src/index.css b/src/index.css index bd6213e1..ea93f6ad 100644 --- a/src/index.css +++ b/src/index.css @@ -1,3 +1,24 @@ @tailwind base; @tailwind components; -@tailwind utilities; \ No newline at end of file +@tailwind utilities; + +@keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +.fade-in { + animation: fadeIn 1s ease-in; +} + +.lift-on-hover { + transition: all 0.2s ease-in-out; +} + +.lift-on-hover:hover { + transform: translateY(-5px); + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); +} diff --git a/src/pages/Signin.tsx b/src/pages/Signin.tsx index 54acc055..4e5706c1 100644 --- a/src/pages/Signin.tsx +++ b/src/pages/Signin.tsx @@ -1,10 +1,10 @@ import axios from 'axios' import React, { useState } from 'react' +import { useNavigate } from 'react-router-dom' import AuthButton from '../Constants/AuthButton' import Input from '../Constants/Input' import { useLoginMutation } from '../Redux/features/AuthSlice' import useSignIn from 'react-auth-kit/hooks/useSignIn'; -import { useNavigate } from 'react-router-dom' const Signin: React.FC = () => { const navigate = useNavigate() diff --git a/src/pages/productsPage.tsx b/src/pages/productsPage.tsx new file mode 100644 index 00000000..59701553 --- /dev/null +++ b/src/pages/productsPage.tsx @@ -0,0 +1,179 @@ +import React from "react"; +import { useSelector, useDispatch } from "react-redux"; +import { setActiveCategory } from "../Redux/features/productsPage/categorySlice"; +import { RootState } from "../Redux/store"; +import Navbar from "../Components/navBar"; +import Search from "../Components/ProductsPage/searchProduct"; +import { useSelectProductsQuery } from "../Redux/features/productsPage/productSlice"; +import ProductCard from "../Components/ProductsPage/productCard"; +import Pagination from "../Components/ProductsPage/pagination"; + +interface Product { + id: string; + name: string; + price: number; + image: string; + category: string; +} + +const Products = () => { + const dispatch = useDispatch(); + const activeCategory: string | null = useSelector( + (state: RootState) => state.category.activeCategory + ); + const { data: products, isLoading, isError } = useSelectProductsQuery(); + // console.log(products) + const productsPerPage = 9; + const currentPage = useSelector( + (state: RootState) => state.pagination.currentPage + ); + + const handleCategoryClick = (category: string) => { + // console.log('event clicked') + dispatch(setActiveCategory(category)); + }; + + const filteredProducts = activeCategory + ? products?.filter( + (product: Product) => product.category === activeCategory + ) + : products; + + const indexOfLastProduct = currentPage * productsPerPage; + const indexOfFirstProduct = indexOfLastProduct - productsPerPage; + const currentProducts = filteredProducts?.slice( + indexOfFirstProduct, + indexOfLastProduct + ); + + const categories = [ + { + id: "001", + label: "Electronics", + value: "Electronics", + }, + { + id: "002", + label: "Food", + value: "Food", + }, + { + id: "003", + label: "Fruits", + value: "Fruits", + }, + { + id: "004", + label: "Mechanism", + value: "Mechanism", + }, + { + id: "005", + label: "Sport Kit", + value: "Sport Kit", + }, + { + id: "006", + label: "Clothing", + value: "Clothing", + }, + { + id: "007", + label: "Books", + value: "Books", + }, + { + id: "008", + label: "Furniture", + value: "Furniture", + }, + { + id: "009", + label: "Toys", + value: "Toys", + }, + { + id: "010", + label: "Stationery", + value: "Stationery", + }, + { + id: "011", + label: "Cars", + value: "Cars", + }, + { + id: "012", + label: "Shoes", + value: "Shoes", + }, + ]; + return ( +
+ +
+
+
+ dispatch(setActiveCategory(null))} + > + Products + + / + + {activeCategory || "All Products"} + +
+ +
+ +
+
+

Categories

+
    + {categories.map((item) => { + const isActive = activeCategory === item.value; + return ( +
  • handleCategoryClick(item.value)} + > + {item.label} +
  • + ); + })} +
+
+ +
+ {isLoading ? ( + "Loading..." + ) : filteredProducts?.length === 0 ? ( +
+

+ No Products Available +

+
+ ) : ( + <> + {currentProducts?.map((product: Product, index: number) => { + return ; + })} + + )} +
+
+ +
+
+ ); +}; + +export default Products; From 91e487201a9b7c0a856cda53e76330b7c19afa16 Mon Sep 17 00:00:00 2001 From: ismaelmurekezi Date: Wed, 26 Jun 2024 11:21:21 +0200 Subject: [PATCH 005/174] badge and some analytics components --- .github/workflows/setup.yml | 31 + README.md | 3 + coverage/clover.xml | 11 + coverage/coverage-final.json | 2 + coverage/lcov-report/Check.tsx.html | 124 + coverage/lcov-report/Test.tsx.html | 124 + coverage/lcov-report/base.css | 224 + coverage/lcov-report/block-navigation.js | 87 + coverage/lcov-report/favicon.png | Bin 0 -> 445 bytes coverage/lcov-report/index.html | 116 + coverage/lcov-report/prettify.css | 1 + coverage/lcov-report/prettify.js | 2 + coverage/lcov-report/sort-arrow-sprite.png | Bin 0 -> 138 bytes coverage/lcov-report/sorter.js | 196 + coverage/lcov.info | 13 + package-lock.json | 12001 ++++++++++++------- package.json | 14 +- src/--test--/Check.test.tsx | 19 + src/Redux/features/analyticSlice.tsx | 75 + src/Redux/store.tsx | 25 +- src/Routes/index.tsx | 33 +- src/jest.config.ts | 8 + src/pages/Analytics.tsx | 56 +- src/pages/Check.tsx | 14 + tsconfig.json | 2 +- 25 files changed, 8958 insertions(+), 4223 deletions(-) create mode 100644 .github/workflows/setup.yml create mode 100644 README.md create mode 100644 coverage/clover.xml create mode 100644 coverage/coverage-final.json create mode 100644 coverage/lcov-report/Check.tsx.html create mode 100644 coverage/lcov-report/Test.tsx.html create mode 100644 coverage/lcov-report/base.css create mode 100644 coverage/lcov-report/block-navigation.js create mode 100644 coverage/lcov-report/favicon.png create mode 100644 coverage/lcov-report/index.html create mode 100644 coverage/lcov-report/prettify.css create mode 100644 coverage/lcov-report/prettify.js create mode 100644 coverage/lcov-report/sort-arrow-sprite.png create mode 100644 coverage/lcov-report/sorter.js create mode 100644 coverage/lcov.info create mode 100644 src/--test--/Check.test.tsx create mode 100644 src/Redux/features/analyticSlice.tsx create mode 100644 src/jest.config.ts create mode 100644 src/pages/Check.tsx diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml new file mode 100644 index 00000000..0a349042 --- /dev/null +++ b/.github/workflows/setup.yml @@ -0,0 +1,31 @@ +name: Setup and coverage bagde + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Install Packages + run: npm install + + - name: Build + run: npm run build + + test-and-coverage: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Install Packages + run: npm install + + - name: Run Tests with Coverage + run: npm test -- --coverage + + - name: Upload Coverage to Codecov + uses: codecov/codecov-action@v2 + with: + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/README.md b/README.md new file mode 100644 index 00000000..6d2a3cc3 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +This repository is for multi-vendor E-commerce website + +[![codecov](https://codecov.io/gh/atlp-rwanda/e-commerce-crafters-fn/branch/ft-analytics/graph/badge.svg)](https://codecov.io/gh/atlp-rwanda/e-commerce-crafters-fn) diff --git a/coverage/clover.xml b/coverage/clover.xml new file mode 100644 index 00000000..5976b91b --- /dev/null +++ b/coverage/clover.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json new file mode 100644 index 00000000..89176cc8 --- /dev/null +++ b/coverage/coverage-final.json @@ -0,0 +1,2 @@ +{"/home/ismael/e-commerce-crafters-fn/src/pages/Check.tsx": {"path":"/home/ismael/e-commerce-crafters-fn/src/pages/Check.tsx","statementMap":{"0":{"start":{"line":3,"column":14},"end":{"line":12,"column":1}},"1":{"start":{"line":4,"column":2},"end":{"line":11,"column":4}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":14},"end":{"line":3,"column":15}},"loc":{"start":{"line":3,"column":20},"end":{"line":12,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"081490d965c85622feadd8be3141a4ee39ca7fc3"} +} diff --git a/coverage/lcov-report/Check.tsx.html b/coverage/lcov-report/Check.tsx.html new file mode 100644 index 00000000..99d6b591 --- /dev/null +++ b/coverage/lcov-report/Check.tsx.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for Check.tsx + + + + + + + + + +
+
+

All files Check.tsx

+
+ +
+ 100% + Statements + 2/2 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 2/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14  +  +1x +1x +  +  +  +  +  +  +  +  +  + 
import React from 'react'
+ 
+const Check = () => {
+  return (
+    <div className="flex flex-col items-start font-poppins text-sm">
+      <h1 className="text-gray-800">
+        If you want to part of the program click button below
+      </h1>
+      <button className='  py-2 px-7 ml-10 mt-5 bg-purple-700 text-white rounded-md hover:bg-purple-500'>Confirm</button>
+    </div>
+  );
+}
+ 
+export default Check
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/Test.tsx.html b/coverage/lcov-report/Test.tsx.html new file mode 100644 index 00000000..c6ddd527 --- /dev/null +++ b/coverage/lcov-report/Test.tsx.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for Test.tsx + + + + + + + + + +
+
+

All files Test.tsx

+
+ +
+ 50% + Statements + 1/2 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 50% + Lines + 1/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14  +  +1x +  +  +  +  +  +  +  +  +  +  + 
import React from 'react'
+ 
+const Test = () => {
+  return (
+    <div className="flex flex-col items-start font-poppins text-sm">
+      <h1 className="text-gray-800">
+        If you want to part of the program click button below
+      </h1>
+      <button className='  py-2 px-7 ml-10 mt-5 bg-purple-700 text-white rounded-md hover:bg-purple-500'>Confirm</button>
+    </div>
+  );
+}
+ 
+export default Test
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css new file mode 100644 index 00000000..f418035b --- /dev/null +++ b/coverage/lcov-report/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js new file mode 100644 index 00000000..cc121302 --- /dev/null +++ b/coverage/lcov-report/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/coverage/lcov-report/favicon.png b/coverage/lcov-report/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1525b811a167671e9de1fa78aab9f5c0b61cef7 GIT binary patch literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 100% + Statements + 2/2 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 2/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
Check.tsx +
+
100%2/2100%0/0100%1/1100%2/2
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css new file mode 100644 index 00000000..b317a7cd --- /dev/null +++ b/coverage/lcov-report/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js new file mode 100644 index 00000000..b3225238 --- /dev/null +++ b/coverage/lcov-report/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed68316eb3f65dec9063332d2f69bf3093bbfab GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc literal 0 HcmV?d00001 diff --git a/coverage/lcov-report/sorter.js b/coverage/lcov-report/sorter.js new file mode 100644 index 00000000..2bb296a8 --- /dev/null +++ b/coverage/lcov-report/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/coverage/lcov.info b/coverage/lcov.info new file mode 100644 index 00000000..548eeb50 --- /dev/null +++ b/coverage/lcov.info @@ -0,0 +1,13 @@ +TN: +SF:src/pages/Check.tsx +FN:3,(anonymous_0) +FNF:1 +FNH:1 +FNDA:1,(anonymous_0) +DA:3,1 +DA:4,1 +LF:2 +LH:2 +BRF:0 +BRH:0 +end_of_record diff --git a/package-lock.json b/package-lock.json index d5b5106b..37cdb9aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,11 +43,16 @@ "@babel/preset-env": "^7.24.7", "@babel/preset-react": "^7.24.7", "@babel/preset-typescript": "^7.24.7", + "@testing-library/jest-dom": "^6.4.6", + "@testing-library/react": "^16.0.0", "@types/dotenv": "^8.2.0", + "@types/jest": "^29.5.12", "@types/jwt-decode": "^3.1.0", + "@types/testing-library__react": "^10.2.0", "@typescript-eslint/eslint-plugin": "^7.13.1", "@typescript-eslint/parser": "^7.13.1", "babel-loader": "^9.1.3", + "codecov": "^3.8.3", "css-loader": "^7.1.2", "dotenv": "^16.4.5", "dotenv-webpack": "^8.1.0", @@ -60,9 +65,12 @@ "file-loader": "^6.2.0", "html-webpack-plugin": "^5.6.0", "http-proxy-middleware": "^3.0.0", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", "postcss-loader": "^8.1.1", "style-loader": "^4.0.0", "tailwindcss": "^3.4.4", + "ts-jest": "^29.1.5", "ts-loader": "^9.5.1", "url-loader": "^4.1.1", "webpack": "^5.92.0", @@ -70,6 +78,12 @@ "webpack-dev-server": "^5.0.4" } }, + "node_modules/@adobe/css-tools": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", + "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==", + "dev": true + }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -769,6 +783,18 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", @@ -2122,6 +2148,12 @@ "node": ">=6.9.0" } }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -2344,879 +2376,3642 @@ "node": ">=12" } }, - "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==", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" } }, - "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==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "engines": { - "node": ">=6.0.0" + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "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==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "engines": { - "node": ">=6.0.0" + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "engines": { + "node": ">=8" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "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==", + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jsonjoy.com/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, - "engines": { - "node": ">=10.0" + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "tslib": "2" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@jsonjoy.com/json-pack": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz", - "integrity": "sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==", + "node_modules/@jest/core/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "dependencies": { - "@jsonjoy.com/base64": "^1.1.1", - "@jsonjoy.com/util": "^1.1.2", - "hyperdyperid": "^1.2.0", - "thingies": "^1.20.0" - }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=8" } }, - "node_modules/@jsonjoy.com/util": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.1.3.tgz", - "integrity": "sha512-g//kkF4kOwUjemValCtOc/xiYzmwMRmWq3Bn+YnzOzuZLHq2PpMOxxIayN3cKbo7Ko2Np65t6D9H81IvXbXhqg==", + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "engines": { - "node": ">=10.0" + "node": ">=10" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "node_modules/@jest/core/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, - "node_modules/@next/env": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.4.tgz", - "integrity": "sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==", - "peer": true - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.4.tgz", - "integrity": "sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, + "node_modules/@jest/core/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/@next/swc-darwin-x64": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz", - "integrity": "sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz", - "integrity": "sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz", - "integrity": "sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz", - "integrity": "sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz", - "integrity": "sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz", - "integrity": "sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz", - "integrity": "sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, + "node_modules/@jest/reporters/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.4.tgz", - "integrity": "sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" + "node_modules/@jest/reporters/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "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==", + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">= 8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/@jest/reporters/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, "engines": { - "node": ">= 8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "node_modules/@jest/reporters/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, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 8" + "node": "*" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@jest/reporters/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "optional": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=14" + "node": ">=8" } }, - "node_modules/@reduxjs/toolkit": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.2.5.tgz", - "integrity": "sha512-aeFA/s5NCG7NoJe/MhmwREJxRkDs0ZaSqt0MxhWUrwCf1UQXpwR87RROJEql0uAkLI6U7snBOYOcKw83ew3FPg==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, "dependencies": { - "immer": "^10.0.3", - "redux": "^5.0.1", - "redux-thunk": "^3.1.0", - "reselect": "^5.1.0" - }, - "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18", - "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + "@sinclair/typebox": "^0.27.8" }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-redux": { - "optional": true - } + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@remix-run/router": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz", - "integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==", + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, "engines": { - "node": ">=14.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", - "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" - }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "peer": true - }, - "node_modules/@swc/helpers": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", - "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", - "peer": true, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, "dependencies": { - "@swc/counter": "^0.1.3", - "tslib": "^2.4.0" + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@types/bonjour": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", - "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "dependencies": { - "@types/node": "*" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "dependencies": { - "@types/node": "*" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", - "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "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, "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" + "@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/@types/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" - }, - "node_modules/@types/d3-color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + "node_modules/@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, + "engines": { + "node": ">=6.0.0" + } }, - "node_modules/@types/d3-ease": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + "node_modules/@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, + "engines": { + "node": ">=6.0.0" + } }, - "node_modules/@types/d3-interpolate": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", - "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, "dependencies": { - "@types/d3-color": "*" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@types/d3-path": { - "version": "3.1.0", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "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, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz", + "integrity": "sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==", + "dev": true, + "dependencies": { + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.1.3.tgz", + "integrity": "sha512-g//kkF4kOwUjemValCtOc/xiYzmwMRmWq3Bn+YnzOzuZLHq2PpMOxxIayN3cKbo7Ko2Np65t6D9H81IvXbXhqg==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true + }, + "node_modules/@next/env": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.4.tgz", + "integrity": "sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==", + "peer": true + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.4.tgz", + "integrity": "sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz", + "integrity": "sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz", + "integrity": "sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz", + "integrity": "sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz", + "integrity": "sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz", + "integrity": "sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz", + "integrity": "sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz", + "integrity": "sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.4.tgz", + "integrity": "sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "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, + "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, + "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, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@reduxjs/toolkit": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.2.5.tgz", + "integrity": "sha512-aeFA/s5NCG7NoJe/MhmwREJxRkDs0ZaSqt0MxhWUrwCf1UQXpwR87RROJEql0uAkLI6U7snBOYOcKw83ew3FPg==", + "dependencies": { + "immer": "^10.0.3", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@remix-run/router": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz", + "integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "peer": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "peer": true, + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@testing-library/dom": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.2.0.tgz", + "integrity": "sha512-CytIvb6tVOADRngTHGWNxH8LPgO/3hi/BdCEHOf7Qd2GvZVClhVP0Wo/QHzWhpki49Bk0b4VT6xpt3fx8HTSIw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.6.tgz", + "integrity": "sha512-8qpnGVincVDLEcQXWaHOf6zmlbwTKc6Us6PPu4CRnPXCzo2OGBS5cwgMMOWdxDpEz1mkbvXHpEy99M5Yvt682w==", + "dev": true, + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "@babel/runtime": "^7.9.2", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "lodash": "^4.17.21", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + }, + "peerDependencies": { + "@jest/globals": ">= 28", + "@types/bun": "latest", + "@types/jest": ">= 28", + "jest": ">= 28", + "vitest": ">= 0.32" + }, + "peerDependenciesMeta": { + "@jest/globals": { + "optional": true + }, + "@types/bun": { + "optional": true + }, + "@types/jest": { + "optional": true + }, + "jest": { + "optional": true + }, + "vitest": { + "optional": true + } + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true + }, + "node_modules/@testing-library/jest-dom/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.0.tgz", + "integrity": "sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0", + "@types/react-dom": "^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "peer": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" }, - "node_modules/@types/d3-scale": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", - "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + }, + "node_modules/@types/dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw==", + "deprecated": "This is a stub types definition. dotenv provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "dotenv": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz", + "integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/@types/js-cookie": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz", + "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==" + }, + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "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 + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/jwt-decode": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/jwt-decode/-/jwt-decode-3.1.0.tgz", + "integrity": "sha512-tthwik7TKkou3mVnBnvVuHnHElbjtdbM63pdBCbZTirCt3WAdM73Y79mOri7+ljsS99ZVwUFZHLMxJuJnv/z1w==", + "deprecated": "This is a stub types definition. jwt-decode provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "jwt-decode": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.14.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.5.tgz", + "integrity": "sha512-aoRR+fJkZT2l0aGOJhuA8frnCSoNX6W7U2mpNq63+BxBIj5BQFt8rHy627kijCmm63ijdSdwvGgpUsU6MBsZZA==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-auth-kit": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/react-auth-kit/-/react-auth-kit-1.2.1.tgz", + "integrity": "sha512-Jlo0PJsXVEuUxd2gYyE6fLQD5dPRfE1uLgcvPz5gr5+oF72FIBqxN0UcplhCUHG5QRe5zS3U2kBufi/K71DjLA==", + "deprecated": "This is a stub types definition. react-auth-kit provides its own type definitions, so you do not need this installed.", + "dependencies": { + "react-auth-kit": "*" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-lazy-load-image-component": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@types/react-lazy-load-image-component/-/react-lazy-load-image-component-1.6.4.tgz", + "integrity": "sha512-8pFPeDPF4yVG4lU1/ixZidJEEDZmEOYOTYDvmIu2IAabyuv97Q7n/93nMCocHvQ7vD1czKGiW+op55D9m3MkdA==", + "dependencies": { + "@types/react": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-redux": { + "version": "7.1.33", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", + "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, + "node_modules/@types/react-redux/node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/testing-library__react": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-10.2.0.tgz", + "integrity": "sha512-KbU7qVfEwml8G5KFxM+xEfentAAVj/SOQSjW0+HqzjPE0cXpt0IpSamfX4jGYCImznDHgQcfXBPajS7HjLZduw==", + "deprecated": "This is a stub types definition. testing-library__react provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "@testing-library/react": "*" + } + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.13.1.tgz", + "integrity": "sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/type-utils": "7.13.1", + "@typescript-eslint/utils": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", + "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.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.1.tgz", + "integrity": "sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.1.tgz", + "integrity": "sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.13.1.tgz", + "integrity": "sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.13.1", + "@typescript-eslint/utils": "7.13.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/types": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.1.tgz", + "integrity": "sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.1.tgz", + "integrity": "sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "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.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", + "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.1.tgz", + "integrity": "sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "dev": true, + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "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, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dev": true, + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "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, + "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/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "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, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "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 + }, + "node_modules/argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha512-dEamhpPEwRUBpLNHeuCm/v+g0anFByHahxodVO/BbAarHVBBg2MccCwf9K+o1Pof+2btdnkJelYVUWjW/VrATw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "engines": { + "node": ">=0.6.10" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-loader/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/babel-loader/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/babel-loader/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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 + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "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, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "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, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "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, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "dependencies": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.5", + "hash-base": "~3.0", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/browserify-sign/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/browserslist": { + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, "dependencies": { - "@types/d3-time": "*" + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/d3-shape": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", - "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "peer": true, "dependencies": { - "@types/d3-path": "*" + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" } }, - "node_modules/@types/d3-time": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", - "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" - }, - "node_modules/@types/d3-timer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "node_modules/@types/dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw==", - "deprecated": "This is a stub types definition. dotenv provides its own type definitions, so you do not need this installed.", + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { - "dotenv": "*" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "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, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "engines": { + "node": ">=6" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" + "engines": { + "node": ">=6" } }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz", - "integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==", + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" + "engines": { + "node": ">= 6" } }, - "node_modules/@types/history": { - "version": "4.7.11", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", - "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" + "node_modules/caniuse-lite": { + "version": "1.0.30001636", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", + "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", - "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "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, "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true + "node_modules/chalk/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } }, - "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "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, "dependencies": { - "@types/node": "*" + "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/@types/js-cookie": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz", - "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==" + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "engines": { + "node": ">=6.0" + } }, - "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 + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", "dev": true }, - "node_modules/@types/jwt-decode": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/jwt-decode/-/jwt-decode-3.1.0.tgz", - "integrity": "sha512-tthwik7TKkou3mVnBnvVuHnHElbjtdbM63pdBCbZTirCt3WAdM73Y79mOri7+ljsS99ZVwUFZHLMxJuJnv/z1w==", - "deprecated": "This is a stub types definition. jwt-decode provides its own type definitions, so you do not need this installed.", + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, "dependencies": { - "jwt-decode": "*" + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" } }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "peer": true }, - "node_modules/@types/node": { - "version": "20.14.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.5.tgz", - "integrity": "sha512-aoRR+fJkZT2l0aGOJhuA8frnCSoNX6W7U2mpNq63+BxBIj5BQFt8rHy627kijCmm63ijdSdwvGgpUsU6MBsZZA==", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { - "undici-types": "~5.26.4" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/@types/node-forge": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", - "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">=8" } }, - "node_modules/@types/prop-types": { - "version": "15.7.12", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", - "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" - }, - "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/@types/react": { - "version": "18.3.3", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", - "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "dependencies": { - "@types/prop-types": "*", - "csstype": "^3.0.2" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/react-auth-kit": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/react-auth-kit/-/react-auth-kit-1.2.1.tgz", - "integrity": "sha512-Jlo0PJsXVEuUxd2gYyE6fLQD5dPRfE1uLgcvPz5gr5+oF72FIBqxN0UcplhCUHG5QRe5zS3U2kBufi/K71DjLA==", - "deprecated": "This is a stub types definition. react-auth-kit provides its own type definitions, so you do not need this installed.", + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { - "react-auth-kit": "*" + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/react-dom": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", - "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "dependencies": { - "@types/react": "*" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@types/react-lazy-load-image-component": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/@types/react-lazy-load-image-component/-/react-lazy-load-image-component-1.6.4.tgz", - "integrity": "sha512-8pFPeDPF4yVG4lU1/ixZidJEEDZmEOYOTYDvmIu2IAabyuv97Q7n/93nMCocHvQ7vD1czKGiW+op55D9m3MkdA==", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, "dependencies": { - "@types/react": "*", - "csstype": "^3.0.2" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@types/react-redux": { - "version": "7.1.33", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", - "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", - "dependencies": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" } }, - "node_modules/@types/react-redux/node_modules/redux": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", - "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/codecov": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.3.tgz", + "integrity": "sha512-Y8Hw+V3HgR7V71xWH2vQ9lyS358CbGCldWlJFR0JirqoGtOoas3R3/OclRTvgUYFK29mmJICDPauVKmpqbwhOA==", + "deprecated": "https://about.codecov.io/blog/codecov-uploader-deprecation-plan/", + "dev": true, "dependencies": { - "@babel/runtime": "^7.9.2" + "argv": "0.0.2", + "ignore-walk": "3.0.4", + "js-yaml": "3.14.1", + "teeny-request": "7.1.1", + "urlgrey": "1.0.0" + }, + "bin": { + "codecov": "bin/codecov" + }, + "engines": { + "node": ">=4.0" } }, - "node_modules/@types/react-router": { - "version": "5.1.20", - "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", - "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "node_modules/codecov/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*" + "sprintf-js": "~1.0.2" } }, - "node_modules/@types/react-router-dom": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", - "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "node_modules/codecov/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*", - "@types/react-router": "*" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "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, "dependencies": { - "@types/mime": "^1", - "@types/node": "*" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@types/serve-index": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", - "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "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 + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "dependencies": { - "@types/express": "*" + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/@types/sockjs": { - "version": "0.3.36", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", - "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", - "dev": true, - "dependencies": { - "@types/node": "*" - } + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, - "node_modules/@types/use-sync-external-store": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", - "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + "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 }, - "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">=0.8" } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.13.1.tgz", - "integrity": "sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==", + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.13.1", - "@typescript-eslint/type-utils": "7.13.1", - "@typescript-eslint/utils": "7.13.1", - "@typescript-eslint/visitor-keys": "7.13.1", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "safe-buffer": "5.2.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">= 0.6" } }, - "node_modules/@typescript-eslint/parser": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.1.tgz", - "integrity": "sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==", + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "7.13.1", - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/typescript-estree": "7.13.1", - "@typescript-eslint/visitor-keys": "7.13.1", - "debug": "^4.3.4" - }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">= 0.6" } }, - "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, - "dependencies": { - "ms": "2.1.2" - }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 0.6" } }, - "node_modules/@typescript-eslint/parser/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.1.tgz", - "integrity": "sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==", + "node_modules/core-js-compat": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/visitor-keys": "7.13.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "browserslist": "^4.23.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/core-js" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.13.1.tgz", - "integrity": "sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==", + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.13.1", - "@typescript-eslint/utils": "7.13.1", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/d-fischer" }, "peerDependencies": { - "eslint": "^8.56.0" + "typescript": ">=4.9.5" }, "peerDependenciesMeta": { "typescript": { @@ -3224,534 +6019,524 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dev": true, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, - "node_modules/@typescript-eslint/types": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.1.tgz", - "integrity": "sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.1.tgz", - "integrity": "sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==", - "dev": true, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dependencies": { - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/visitor-keys": "7.13.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "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.0.0" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "bin": { + "create-jest": "bin/create-jest.js" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "ms": "2.1.2" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 8" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } }, - "node_modules/@typescript-eslint/utils": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", - "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", + "node_modules/css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.13.1", - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/typescript-estree": "7.13.1" + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "eslint": "^8.56.0" + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.1.tgz", - "integrity": "sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==", + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.13.1", - "eslint-visitor-keys": "^3.4.3" + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">= 6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", "dev": true }, - "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "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, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", "dev": true }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" - } + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" } }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", - "dev": true, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", - "dev": true, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@xtuc/long": "4.2.2" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" } }, - "node_modules/@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", - "dev": true, - "engines": { - "node": ">=14.15.0" + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "engines": { + "node": ">=12" } }, - "node_modules/@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", - "dev": true, - "engines": { - "node": ">=14.15.0" + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "engines": { + "node": ">=12" } }, - "node_modules/@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } + "engines": { + "node": ">=12" } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", "dev": true, "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=12" } }, - "node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "node_modules/data-urls/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "punycode": "^2.1.1" }, "engines": { - "node": ">=0.4.0" + "node": ">=12" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, - "peerDependencies": { - "acorn": "^8" + "engines": { + "node": ">=12" } }, - "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==", + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, "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" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "dev": true, "dependencies": { - "ajv": "^8.0.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, - "peerDependencies": { - "ajv": "^8.0.0" + "engines": { + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "dev": true, "peerDependencies": { - "ajv": "^6.9.1" + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } + "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 }, - "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "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, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=0.10.0" } }, - "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==", + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "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==", + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, "engines": { - "node": ">= 8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "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 - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, "dependencies": { - "dequal": "^2.0.3" + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -3760,24 +6545,27 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -3786,661 +6574,616 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "esutils": "^2.0.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6.0.0" } }, - "node_modules/array.prototype.toreversed": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", - "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "peer": true + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "utila": "~0.4" } }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/autoprefixer": { - "version": "10.4.19", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", - "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, { "type": "github", - "url": "https://github.com/sponsors/ai" + "url": "https://github.com/sponsors/fb55" } - ], - "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001599", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } + ] }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", "dev": true, "dependencies": { - "possible-typed-array-names": "^1.0.0" + "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/axe-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", - "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, "engines": { - "node": ">=4" - } - }, - "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", - "dev": true, - "dependencies": { - "dequal": "^2.0.3" + "node": ">=12" } }, - "node_modules/babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" + "domelementtype": "^2.2.0" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 4" }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/babel-loader/node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/babel-loader/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/babel-loader/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/babel-loader/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, "engines": { - "node": ">= 12.13.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://dotenvx.com" } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "node_modules/dotenv-defaults": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", + "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "dotenv": "^8.2.0" } }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/dotenv-defaults/node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=10" } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", - "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "node_modules/dotenv-webpack": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-8.1.0.tgz", + "integrity": "sha512-owK1JcsPkIobeqjVrk6h7jPED/W6ZpdFsMPR+5ursB7/SdgDyO+VzAU+szK8C8u3qUhtENyYnj8eyXMR5kkGag==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.1" + "dotenv-defaults": "^2.0.2" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", - "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2" + "engines": { + "node": ">=10" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "webpack": "^4 || ^5" } }, - "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==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" + "node_modules/electron-to-chromium": { + "version": "1.4.805", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.805.tgz", + "integrity": "sha512-8W4UJwX/w9T0QSzINJckTKG6CYpAUTqsaWcWIsdud3I1FYJcMgW9QqT1/4CBff/pP/TihWh13OmiyY8neto6vw==" + }, + "node_modules/elliptic": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", + "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, - "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==", + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, - "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">= 4" } }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, "engines": { "node": ">= 0.8" } }, - "node_modules/bonjour-service": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", - "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "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, + "node_modules/engine.io-client": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", + "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", "dependencies": { - "balanced-match": "^1.0.0" + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1", + "xmlhttprequest-ssl": "~2.0.0" } }, - "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, + "node_modules/engine.io-client/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dependencies": { - "fill-range": "^7.1.1" + "ms": "2.1.2" }, "engines": { - "node": ">=8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } + "node_modules/engine.io-client/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "node_modules/engine.io-parser": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "engines": { + "node": ">=10.0.0" } }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "node_modules/enhanced-resolve": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "dev": true, "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/browserify-sign": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", - "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", - "dependencies": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.5", - "hash-base": "~3.0", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.7", - "readable-stream": "^2.3.8", - "safe-buffer": "^5.2.1" + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" }, "engines": { - "node": ">= 0.12" + "node": ">=4" } }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "is-arrayish": "^0.2.1" } }, - "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/browserify-sign/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } }, - "node_modules/browserslist": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", - "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001629", - "electron-to-chromium": "^1.4.796", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.16" - }, - "bin": { - "browserslist": "cli.js" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">= 0.4" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "node_modules/es-module-lexer": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", + "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==", "dev": true }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, "dependencies": { - "run-applescript": "^7.0.0" + "es-errors": "^1.3.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "peer": true, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, "dependencies": { - "streamsearch": "^1.1.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { - "node": ">=10.16.0" + "node": ">= 0.4" } }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, - "engines": { - "node": ">= 0.8" + "dependencies": { + "hasown": "^2.0.0" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4449,1331 +7192,1413 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "engines": { "node": ">=6" } }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { - "node": ">= 6" + "node": ">=0.8.0" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001636", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", - "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=10" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/chalk/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==", + "node_modules/escodegen/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, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=4.0" } }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "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" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">= 8.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "url": "https://opencollective.com/eslint" } }, - "node_modules/clean-css": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", - "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "node_modules/eslint-config-airbnb": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", + "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", "dev": true, "dependencies": { - "source-map": "~0.6.0" + "eslint-config-airbnb-base": "^15.0.0", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5" }, "engines": { - "node": ">= 10.0" + "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.28.0", + "eslint-plugin-react-hooks": "^4.3.0" } }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "peer": true - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", "dev": true, "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" }, "engines": { - "node": ">=6" + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" } }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "engines": { - "node": ">=6" + "node_modules/eslint-config-airbnb-base/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, - "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==", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "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 + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "node_modules/eslint-import-resolver-node/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 }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, "dependencies": { - "delayed-stream": "~1.0.0" + "debug": "^3.2.7" }, "engines": { - "node": ">= 0.8" + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "node_modules/eslint-module-utils/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 }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, "dependencies": { - "mime-db": ">= 1.43.0 < 2" + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, "engines": { - "node": ">= 0.6" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "node_modules/eslint-plugin-import/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, "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "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 - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "engines": { - "node": ">=0.8" + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "dependencies": { - "safe-buffer": "5.2.1" + "esutils": "^2.0.2" }, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "node_modules/eslint-plugin-import/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, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">= 0.6" + "node": "*" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "node_modules/eslint-plugin-import/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 }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" + }, "engines": { - "node": ">= 0.6" + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true + "node_modules/eslint-plugin-jsx-a11y/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } }, - "node_modules/core-js-compat": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", - "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "node_modules/eslint-plugin-jsx-a11y/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, "dependencies": { - "browserslist": "^4.23.0" + "brace-expansion": "^1.1.7" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "engines": { + "node": "*" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "node_modules/eslint-plugin-react": { + "version": "7.34.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.2.tgz", + "integrity": "sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==", "dev": true, "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.hasown": "^1.1.4", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" + "node": ">=4" }, "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "node_modules/eslint-plugin-react/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, "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "esutils": "^2.0.2" }, "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, + "node_modules/eslint-plugin-react/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, "engines": { - "node": "*" + "node": ">=4.0" } }, - "node_modules/css-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", - "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "node_modules/eslint-plugin-react/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, "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.27.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "node": "*" } }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "bin": { + "semver": "bin/semver.js" } }, - "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==", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "bin": { - "cssesc": "bin/cssesc" + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">=4" + "node": ">=8.0.0" } }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "dependencies": { - "internmap": "1 - 2" - }, + "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, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "node_modules/eslint/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "node_modules/eslint/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">=12" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "node_modules/eslint/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, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "node_modules/eslint/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, "dependencies": { - "d3-color": "1 - 3" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "node_modules/eslint/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, "engines": { - "node": ">=12" + "node": ">=4.0" } }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "node_modules/eslint/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, "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "node_modules/eslint/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, "dependencies": { - "d3-path": "^3.1.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=12" + "node": ">=10.13.0" } }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, "dependencies": { - "d3-array": "2 - 3" + "type-fest": "^0.20.2" }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "node_modules/eslint/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, "dependencies": { - "d3-time": "1 - 3" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "node_modules/eslint/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, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "node_modules/eslint/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, "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "node_modules/eslint/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, "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "p-limit": "^3.0.2" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" + } + }, + "node_modules/eslint/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, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "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, "dependencies": { - "ms": "2.0.0" + "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/decimal.js-light": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", - "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" - }, - "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 - }, - "node_modules/default-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10" } }, - "node_modules/default-browser-id": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "node_modules/esquery/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, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.0" } }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "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, "dependencies": { - "execa": "^5.0.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">= 10" + "node": ">=4.0" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/esrecurse/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, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4.0" } }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.0" } }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "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, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, "engines": { - "node": ">=0.4.0" + "node": ">= 0.6" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "engines": { - "node": ">= 0.8" + "node": ">=0.8.x" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">= 0.10.0" } }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "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 }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "engines": { + "node": ">=6.0.0" + } }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "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, "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" + "@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/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "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 }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "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 + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", "dev": true, "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" + "punycode": "^1.3.2" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "node_modules/fast-url-parser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, - "node_modules/dns-packet": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, "engines": { - "node": ">=6" + "node": ">= 4.9.1" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" + "reusify": "^1.0.4" } }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, "dependencies": { - "utila": "~0.4" + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" } }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" + "bser": "2.1.1" } }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "flat-cache": "^3.0.4" }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "dev": true, "dependencies": { - "domelementtype": "^2.2.0" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "engines": { - "node": ">= 4" + "node": ">= 10.13.0" }, "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "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, "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" + "to-regex-range": "^5.0.1" }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "engines": { + "node": ">=8" } }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, "engines": { - "node": ">=12" + "node": ">=14.16" }, "funding": { - "url": "https://dotenvx.com" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dotenv-defaults": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", - "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, "dependencies": { - "dotenv": "^8.2.0" - } - }, - "node_modules/dotenv-defaults/node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "dev": true, + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dotenv-webpack": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-8.1.0.tgz", - "integrity": "sha512-owK1JcsPkIobeqjVrk6h7jPED/W6ZpdFsMPR+5ursB7/SdgDyO+VzAU+szK8C8u3qUhtENyYnj8eyXMR5kkGag==", + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, "dependencies": { - "dotenv-defaults": "^2.0.2" + "p-locate": "^6.0.0" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependencies": { - "webpack": "^4 || ^5" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.805", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.805.tgz", - "integrity": "sha512-8W4UJwX/w9T0QSzINJckTKG6CYpAUTqsaWcWIsdud3I1FYJcMgW9QqT1/4CBff/pP/TihWh13OmiyY8neto6vw==" - }, - "node_modules/elliptic": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", - "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, "engines": { - "node": ">= 4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, "engines": { - "node": ">= 0.8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/engine.io-client": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", - "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.0.0" + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/engine.io-client/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, "dependencies": { - "ms": "2.1.2" + "find-up": "^6.3.0" }, "engines": { - "node": ">=6.0" + "node": ">=14.16" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/engine.io-client/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/engine.io-parser": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", - "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=10.0.0" + "node": ">=8" } }, - "node_modules/enhanced-resolve": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=10.13.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "node_modules/flat-cache/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/flat-cache/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, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/envinfo": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", - "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, "bin": { - "envinfo": "dist/cli.js" + "rimraf": "bin.js" }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": ">=4" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, "dependencies": { - "is-arrayish": "^0.2.1" + "is-callable": "^1.1.3" } }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { - "get-intrinsic": "^1.2.4" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 0.4" + "node": ">= 6" } }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, "engines": { - "node": ">= 0.4" + "node": ">= 0.6" } }, - "node_modules/es-iterator-helpers": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", - "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.1.2" - }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "engines": { - "node": ">= 0.4" + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" } }, - "node_modules/es-module-lexer": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", - "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==", - "dev": true - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, - "dependencies": { - "es-errors": "^1.3.0" - }, "engines": { - "node": ">= 0.4" + "node": ">= 0.6" } }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "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, - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.4" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "hasown": "^2.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -5782,1321 +8607,1191 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "engines": { - "node": ">=0.8.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=6.9.0" } }, - "node_modules/eslint-config-airbnb": { - "version": "19.0.4", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", - "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "dependencies": { - "eslint-config-airbnb-base": "^15.0.0", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5" - }, "engines": { - "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.3", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.28.0", - "eslint-plugin-react-hooks": "^4.3.0" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">= 0.4" }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.2" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-config-airbnb-base/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-import-resolver-node/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 - }, - "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "node_modules/glob": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", + "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", "dev": true, "dependencies": { - "debug": "^3.2.7" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=4" + "node": ">=16 || 14 >=14.18" }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "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, "dependencies": { - "ms": "^2.1.1" + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/eslint-module-utils/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==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, - "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" - }, "engines": { "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/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, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { - "esutils": "^2.0.2" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "get-intrinsic": "^1.1.3" }, - "engines": { - "node": "*" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-import/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 + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", - "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.23.2", - "aria-query": "^5.3.0", - "array-includes": "^3.1.7", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "=4.7.0", - "axobject-query": "^3.2.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.0.15", - "hasown": "^2.0.0", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true }, - "node_modules/eslint-plugin-jsx-a11y/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==", + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "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, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/eslint-plugin-react": { - "version": "7.34.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.2.tgz", - "integrity": "sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.2", - "array.prototype.toreversed": "^1.1.2", - "array.prototype.tosorted": "^1.1.3", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.19", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.8", - "object.fromentries": "^2.0.8", - "object.hasown": "^1.1.4", - "object.values": "^1.2.0", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11" - }, - "engines": { - "node": ">=4" + "es-define-property": "^1.0.0" }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, "engines": { - "node": ">=10" + "node": ">= 0.4" }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/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==", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "esutils": "^2.0.2" + "has-symbols": "^1.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/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, + "node_modules/hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, "engines": { - "node": ">=4.0" + "node": ">=4" } }, - "node_modules/eslint-plugin-react/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, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "function-bind": "^1.1.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 0.4" } }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, "bin": { - "semver": "bin/semver.js" + "he": "bin/he" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "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, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" } }, - "node_modules/eslint/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==", + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "node_modules/eslint/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/eslint/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==", + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "node_modules/eslint/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==", + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "whatwg-encoding": "^2.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", "dev": true, - "engines": { - "node": ">=4.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] }, - "node_modules/eslint/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==", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" }, - "engines": { - "node": ">=10" + "bin": { + "html-minifier-terser": "cli.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=12" } }, - "node_modules/eslint/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==", + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, "engines": { - "node": ">=10.13.0" + "node": ">= 12" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/html-webpack-plugin": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=10.13.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/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, - "dependencies": { - "p-locate": "^5.0.0" + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, - "node_modules/eslint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", "dev": true }, - "node_modules/eslint/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==", + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/eslint/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==", + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.0.0" } }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/eslint/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==", + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">=10" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "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==", + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/http-proxy-middleware": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz", + "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==", "dev": true, "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "@types/http-proxy": "^1.17.10", + "debug": "^4.3.4", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.5" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "node_modules/http-proxy-middleware/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { - "estraverse": "^5.1.0" + "ms": "2.1.2" }, "engines": { - "node": ">=0.10" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/http-proxy-middleware/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, "engines": { - "node": ">=4.0" + "node": ">= 6" } }, - "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==", + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { - "estraverse": "^5.2.0" + "ms": "2.1.2" }, "engines": { - "node": ">=4.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "engines": { - "node": ">=4.0" + "node": ">=10.17.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", "dev": true, "engines": { - "node": ">=4.0" + "node": ">=10.18" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, "engines": { - "node": ">= 0.6" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { - "node": ">=0.8.x" + "node": ">= 4" } }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "node_modules/ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dev": true, "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "minimatch": "^3.0.4" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/ignore-walk/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, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/ignore-walk/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, + "dependencies": { + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10" - }, + "node": "*" + } + }, + "node_modules/immer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/immer" } }, - "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "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, "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.6.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">= 0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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 - }, - "node_modules/fast-equals": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", - "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "node_modules/import-fresh/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, "engines": { - "node": ">=6.0.0" + "node": ">=4" } }, - "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==", + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "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" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=8.6.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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 - }, - "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 + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "engines": { - "node": ">= 4.9.1" + "node": ">=8" } }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "dependencies": { - "reusify": "^1.0.4" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "websocket-driver": ">=0.5.1" + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=0.8.0" + "node": ">= 0.4" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=10.13.0" } }, - "node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "has-bigints": "^1.0.1" }, - "engines": { - "node": ">= 0.8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "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, "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, - "dependencies": { - "p-locate": "^6.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "hasown": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, "dependencies": { - "p-limit": "^4.0.0" + "is-typed-array": "^1.1.13" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, "dependencies": { - "find-up": "^6.3.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=14.16" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "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, - "bin": { - "flat": "cli.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", "dev": true, "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "call-bind": "^1.0.2" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=8" } }, - "node_modules/flat-cache/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==", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=6" } }, - "node_modules/flat-cache/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "*" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/flat-cache/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "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, "dependencies": { - "brace-expansion": "^1.1.7" + "is-extglob": "^2.1.1" }, "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, "dependencies": { - "glob": "^7.1.3" + "is-docker": "^3.0.0" }, "bin": { - "rimraf": "bin.js" + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, "engines": { - "node": ">=4.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, - "dependencies": { - "is-callable": "^1.1.3" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "node_modules/is-network-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, "engines": { - "node": ">=14" + "node": ">=16" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "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, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=0.12.0" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, - "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, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -7105,35 +9800,25 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "call-bind": "^1.0.7" }, "engines": { "node": ">= 0.4" @@ -7142,27 +9827,25 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -7171,1205 +9854,1470 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", - "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "has-symbols": "^1.0.2" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "which-typed-array": "^1.1.14" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", "dev": true, "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3" + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.10.0" } }, - "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==", + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", "dev": true, "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, - "engines": { - "node": ">= 0.4" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.3" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "node_modules/istanbul-lib-report/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, + "dependencies": { + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/istanbul-lib-source-maps/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { - "function-bind": "^1.1.2" + "ms": "2.1.2" }, "engines": { - "node": ">= 0.4" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } + "node_modules/istanbul-lib-source-maps/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, "dependencies": { - "react-is": "^16.7.0" + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" } }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "node_modules/jackspeak": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", + "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", "dev": true, "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/hpack.js/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/hpack.js/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ] - }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "node_modules/jest-changed-files/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, "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "node_modules/jest-changed-files/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, "engines": { - "node": ">= 12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/html-webpack-plugin": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", - "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=10.13.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.20.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "node_modules/jest-circus/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, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">= 0.8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "node_modules/jest-circus/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "node_modules/jest-circus/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, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, "engines": { - "node": ">=8.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-proxy-middleware": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz", - "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==", + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "dependencies": { - "@types/http-proxy": "^1.17.10", - "debug": "^4.3.4", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.5" + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/http-proxy-middleware/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=6.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { - "supports-color": { + "@types/node": { + "optional": true + }, + "ts-node": { "optional": true } } }, - "node_modules/http-proxy-middleware/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "engines": { - "node": ">=10.17.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/hyperdyperid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", - "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "node_modules/jest-config/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, - "engines": { - "node": ">=10.18" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "node_modules/jest-config/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, - "engines": { - "node": "^10 || ^12 || >= 14" + "dependencies": { + "brace-expansion": "^1.1.7" }, - "peerDependencies": { - "postcss": "^8.1.0" + "engines": { + "node": "*" } }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "node_modules/jest-config/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, "engines": { - "node": ">= 4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/immer": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", - "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } + "node_modules/jest-config/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true }, - "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==", + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/import-fresh/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==", + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "detect-newline": "^3.0.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "engines": { - "node": ">=0.8.19" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "node_modules/jest-each/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "node_modules/jest-each/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "node_modules/jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", "dev": true, "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, "engines": { - "node": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, "engines": { - "node": ">=10.13.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "node_modules/jest-haste-map/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "binary-extensions": "^2.0.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "hasown": "^2.0.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "dependencies": { - "is-typed-array": "^1.1.13" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, - "bin": { - "is-docker": "cli.js" + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.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==", + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "node_modules/jest-runner/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, "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=14.16" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "node_modules/jest-runner/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, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-network-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", - "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, - "engines": { - "node": ">=16" + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.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==", + "node_modules/jest-runtime/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=0.12.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "node_modules/jest-runtime/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, "dependencies": { - "has-tostringtag": "^1.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "*" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/jest-runtime/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "isobject": "^3.0.1" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/jest-snapshot/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, - "engines": { - "node": ">= 0.4" + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "call-bind": "^1.0.7" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/jest-validate/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "dependencies": { - "which-typed-array": "^1.1.14" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 10.13.0" } }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "jiti": "bin/jiti.js" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "engines": { + "node": ">=14" } }, - "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "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, "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" + "argparse": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", "dev": true, "dependencies": { - "is-inside-container": "^1.0.0" + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" }, "engines": { - "node": ">=16" + "node": ">=14" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { + "node_modules/jsdom/node_modules/@tootallnate/once": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" + "node": ">= 10" } }, - "node_modules/jackspeak": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "node_modules/jsdom/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { - "@isaacs/cliui": "^8.0.2" + "ms": "2.1.2" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=6.0" }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "node_modules/jsdom/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 6" } }, - "node_modules/jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "node_modules/jsdom/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", "dev": true, - "bin": { - "jiti": "bin/jiti.js" + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" } }, - "node_modules/js-cookie": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", - "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "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==", + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=12" } }, "node_modules/jsesc": { @@ -8461,6 +11409,15 @@ "node": ">=0.10.0" } }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/language-subtag-registry": { "version": "0.3.23", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", @@ -8489,6 +11446,15 @@ "shell-quote": "^1.8.1" } }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -8562,6 +11528,12 @@ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -8602,6 +11574,46 @@ "node": "14 || >=16.14" } }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "peer": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, "node_modules/md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -8740,6 +11752,15 @@ "node": ">=6" } }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -8939,6 +11960,26 @@ "tslib": "^2.0.3" } }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -8948,6 +11989,12 @@ "node": ">= 6.13.0" } }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", @@ -8994,6 +12041,12 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/nwsapi": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz", + "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==", + "dev": true + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -9322,6 +12375,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -9732,11 +12809,69 @@ "renderkid": "^3.0.0" } }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "peer": true + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -9774,6 +12909,12 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, "node_modules/public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", @@ -9801,6 +12942,22 @@ "node": ">=6" } }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -9816,6 +12973,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -10143,6 +13306,19 @@ "node": ">= 10.13.0" } }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/redux": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", @@ -10308,6 +13484,15 @@ "node": ">=8" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -10366,6 +13551,15 @@ "node": ">=8" } }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -10521,6 +13715,18 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", @@ -10811,6 +14017,12 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -11002,6 +14214,33 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -11011,6 +14250,15 @@ "node": ">= 0.8" } }, + "node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "dev": true, + "dependencies": { + "stubs": "^3.0.0" + } + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -11026,7 +14274,41 @@ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "dependencies": { - "safe-buffer": "~5.2.0" + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-length/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/string-width": { @@ -11218,6 +14500,18 @@ "node": ">=6" } }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -11230,6 +14524,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", + "dev": true + }, "node_modules/style-loader": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz", @@ -11327,6 +14627,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, "node_modules/tailwindcss": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", @@ -11385,6 +14691,22 @@ "node": ">=6" } }, + "node_modules/teeny-request": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.1.tgz", + "integrity": "sha512-iwY6rkW5DDGq8hE2YgNQlKbptYpY5Nn2xecjQiNjOXWbKzPGUfmeUBCSQbbr306d7Z7U2N0TPl+/SwYRfua1Dg==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/terser": { "version": "5.31.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", @@ -11437,6 +14759,63 @@ } } }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/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, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -11487,6 +14866,12 @@ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -11517,6 +14902,27 @@ "node": ">=0.6" } }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, "node_modules/tree-dump": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.1.tgz", @@ -11551,6 +14957,53 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true }, + "node_modules/ts-jest": { + "version": "29.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.5.tgz", + "integrity": "sha512-UuClSYxM7byvvYfyWdFI+/2UxMmwNyJb0NPkZPQE2hew3RurV7l7zURgOHAd/1I1ZdPpe3GUsXNXAcN8TFKSIg==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, "node_modules/ts-loader": { "version": "9.5.1", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", @@ -11621,6 +15074,15 @@ "node": ">= 0.8.0" } }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -11792,6 +15254,15 @@ "node": ">=4" } }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -11866,6 +15337,25 @@ } } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/urlgrey": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-1.0.0.tgz", + "integrity": "sha512-hJfIzMPJmI9IlLkby8QrsCykQ+SXDeO2W5Q9QTW3QpqZVTx4a/K7p8/5q+/isD8vsbVaFgql/gvAoQCRQ2Cb5w==", + "dev": true, + "dependencies": { + "fast-url-parser": "^1.1.3" + } + }, "node_modules/use-sync-external-store": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", @@ -11903,6 +15393,20 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -11933,6 +15437,27 @@ "d3-timer": "^3.0.1" } }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, "node_modules/watchpack": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", @@ -11955,6 +15480,12 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, "node_modules/webpack": { "version": "5.92.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.0.tgz", @@ -12320,6 +15851,49 @@ "node": ">=0.8.0" } }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -12529,6 +16103,19 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/ws": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", @@ -12549,6 +16136,21 @@ } } }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, "node_modules/xmlhttprequest-ssl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", @@ -12557,6 +16159,15 @@ "node": ">=0.4.0" } }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -12575,6 +16186,74 @@ "node": ">= 14" } }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yocto-queue": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", diff --git a/package.json b/package.json index 434ad0e7..1d1c84e2 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,12 @@ "main": "index.ts", "scripts": { "dev": "webpack serve --env NODE_ENV=development", - "build": "webpack --env NODE_ENV=production" + "build": "webpack --env NODE_ENV=production", + "test": "jest --coverage" }, + "jest":{ + "testEnvironment": "jsdom" +}, "keywords": [], "author": "", "license": "ISC", @@ -45,11 +49,16 @@ "@babel/preset-env": "^7.24.7", "@babel/preset-react": "^7.24.7", "@babel/preset-typescript": "^7.24.7", + "@testing-library/jest-dom": "^6.4.6", + "@testing-library/react": "^16.0.0", "@types/dotenv": "^8.2.0", + "@types/jest": "^29.5.12", "@types/jwt-decode": "^3.1.0", + "@types/testing-library__react": "^10.2.0", "@typescript-eslint/eslint-plugin": "^7.13.1", "@typescript-eslint/parser": "^7.13.1", "babel-loader": "^9.1.3", + "codecov": "^3.8.3", "css-loader": "^7.1.2", "dotenv": "^16.4.5", "dotenv-webpack": "^8.1.0", @@ -62,9 +71,12 @@ "file-loader": "^6.2.0", "html-webpack-plugin": "^5.6.0", "http-proxy-middleware": "^3.0.0", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", "postcss-loader": "^8.1.1", "style-loader": "^4.0.0", "tailwindcss": "^3.4.4", + "ts-jest": "^29.1.5", "ts-loader": "^9.5.1", "url-loader": "^4.1.1", "webpack": "^5.92.0", diff --git a/src/--test--/Check.test.tsx b/src/--test--/Check.test.tsx new file mode 100644 index 00000000..3f80c96b --- /dev/null +++ b/src/--test--/Check.test.tsx @@ -0,0 +1,19 @@ +import React from "react"; +import { render, screen } from "@testing-library/react"; +import Check from "../pages/Check"; + +describe("Test component", () => { + test("renders content", () => { + render(); + + const heading = screen.getByText( + /If you want to part of the program click button below/i + ); + expect(heading).toBeTruthy(); + + const button = screen.getByRole("button", { name: /confirm/i }); + expect(button).toBeTruthy(); + }); +}); + + diff --git a/src/Redux/features/analyticSlice.tsx b/src/Redux/features/analyticSlice.tsx new file mode 100644 index 00000000..434426f3 --- /dev/null +++ b/src/Redux/features/analyticSlice.tsx @@ -0,0 +1,75 @@ +import { createSlice, createAsyncThunk, PayloadAction } from "@reduxjs/toolkit"; + +interface DeliveryAddress { + city: string; + street: string; +} + +interface Product { + productId: string; + name: string; + quantity: number; + price: number; +} + +interface Order { + createdAt: string; + deliveryAddress: DeliveryAddress; + expectedDeliveryDate: string | null; + orderId: string; + paymentMethod: string; + products: Product[]; + status: string; + totalAmount: number | null; + updatedAt: string; + userId: string; +} + +interface OrderState { + isLoading: boolean; + data: Order[]; + error: boolean; +} + +const initialState: OrderState = { + isLoading: false, + data: [], + error: false, +}; + +export const fetchOrders = createAsyncThunk("orders/fetchOrders", async () => { + const response = await fetch("http://localhost:5000/order/getAllOrder"); + if (!response.ok) { + throw new Error("Failed to fetch orders"); + } + + const data: Order[] = await response.json(); + return data; +}); + +const OrderSlice = createSlice({ + name: "orders", + initialState, + reducers: {}, + extraReducers: (builder) => { + builder + .addCase(fetchOrders.pending, (state) => { + state.isLoading = true; + state.error = false; + }) + .addCase( + fetchOrders.fulfilled, + (state, action: PayloadAction) => { + state.isLoading = false; + state.data = action.payload; + state.error = false; + } + ) + .addCase(fetchOrders.rejected, (state) => { + state.isLoading = false; + state.error = true; + }); + }, +}); + +export default OrderSlice.reducer; diff --git a/src/Redux/store.tsx b/src/Redux/store.tsx index 7038fae8..52187725 100644 --- a/src/Redux/store.tsx +++ b/src/Redux/store.tsx @@ -1,13 +1,16 @@ -import { configureStore } from '@reduxjs/toolkit'; -import AuthSlice from './features/AuthSlice'; -import { apiSlice } from './features/ApiSlice'; +import { configureStore } from "@reduxjs/toolkit"; +import AuthSlice from "./features/AuthSlice"; +import { apiSlice } from "./features/ApiSlice"; +import OrderStatusSlice from "./features/analyticSlice"; export const store = configureStore({ - reducer: { - [apiSlice.reducerPath]:apiSlice.reducer - }, - middleware: (getDefaultMiddelware)=> getDefaultMiddelware().concat(apiSlice.middleware) - }); - - export type RootState = ReturnType; - export type AppDispatch = typeof store.dispatch; \ No newline at end of file + reducer: { + [apiSlice.reducerPath]: apiSlice.reducer, + orderStatus: OrderStatusSlice, + }, + middleware: (getDefaultMiddelware) => + getDefaultMiddelware().concat(apiSlice.middleware), +}); + +export type RootState = ReturnType; +export type AppDispatch = typeof store.dispatch; diff --git a/src/Routes/index.tsx b/src/Routes/index.tsx index 0980fc62..9549cb28 100644 --- a/src/Routes/index.tsx +++ b/src/Routes/index.tsx @@ -1,19 +1,17 @@ -import React from 'react'; -import { Route, Routes } from 'react-router-dom'; -import Signin from '../pages/Signin'; -import SignUp from '../pages/SignUp'; -import Admin from '../Portal/admin'; -import Buyer from '../Portal/Buyer'; -import Seller from '../Portal/Seller'; -import VerifyCode from '../pages/VerifyCode'; -import VerifyEmail from '../Lib/VerifyEmail'; -import AuthGoogle from '../Lib/authgoogle'; -import Users from '../pages/Users'; -import AuthOutlet from '@auth-kit/react-router/AuthOutlet' -import Analytics from '../pages/Analytics'; - - - +import React from "react"; +import { Route, Routes } from "react-router-dom"; +import Signin from "../pages/Signin"; +import SignUp from "../pages/SignUp"; +import Admin from "../Portal/admin"; +import Buyer from "../Portal/Buyer"; +import Seller from "../Portal/Seller"; +import VerifyCode from "../pages/VerifyCode"; +import VerifyEmail from "../Lib/VerifyEmail"; +import AuthGoogle from "../Lib/authgoogle"; +import Users from "../pages/Users"; +import AuthOutlet from "@auth-kit/react-router/AuthOutlet"; +import Analytics from "../pages/Analytics"; +import Test from "../pages/Check"; const AppRoutes: React.FC = () => { return ( @@ -21,6 +19,7 @@ const AppRoutes: React.FC = () => { } /> } /> + } /> } /> } /> } /> @@ -36,6 +35,6 @@ const AppRoutes: React.FC = () => {
); -} +}; export default AppRoutes; diff --git a/src/jest.config.ts b/src/jest.config.ts new file mode 100644 index 00000000..ab5a341e --- /dev/null +++ b/src/jest.config.ts @@ -0,0 +1,8 @@ +module.exports = { + preset: "ts-jest", + testEnvironment: "jsdom", + collectCoverage: true, + coverageReporters: ["json", "lcov", "text", "clover"], +}; + + diff --git a/src/pages/Analytics.tsx b/src/pages/Analytics.tsx index b95128be..301baba1 100644 --- a/src/pages/Analytics.tsx +++ b/src/pages/Analytics.tsx @@ -1,49 +1,41 @@ import React, { useEffect, useState } from "react"; +import { useDispatch, useSelector } from "react-redux"; import OrderStatus from "../Components/Analytics/OrderStatus"; -import axios from "axios"; import SellingReport from "../Components/Analytics/SellingReport"; +import { RootState, AppDispatch } from "../Redux/store"; +import { fetchOrders } from "../Redux/features/analyticSlice"; -interface DeliveryAddress { - city: string; - street: string; -} - -interface Product { - productId: string; - name: string; - quantity: number; - price: number; -} - -interface Order { - createdAt: string; - deliveryAddress: DeliveryAddress; - expectedDeliveryDate: string | null; - orderId: string; - paymentMethod: string; - products: Product[]; - status: string; - totalAmount: number | null; - updatedAt: string; - userId: string; -} - -const Analytics = () => { + +const Analytics: React.FC = () => { + const dispatch: AppDispatch = useDispatch(); + const { isLoading, data, error } = useSelector( + (state: RootState) => state.orderStatus + ); const [statusCounts, setStatusCounts] = useState<{ [key: string]: number }>( {} ); useEffect(() => { - axios.get("http://localhost:5000/order/getAllOrder").then((res) => { - console.log(res.data); + dispatch(fetchOrders()); + }, [dispatch]); + useEffect(() => { + if (data) { const counts: { [key: string]: number } = {}; - res.data.forEach((order) => { + data.forEach((order) => { counts[order.status] = (counts[order.status] || 0) + 1; }); setStatusCounts(counts); - }); - }, []); + } + }, [data]); + + if (isLoading) { + return
Loading...
; + } + + if (error) { + return
Error fetching orders
; + } return (
diff --git a/src/pages/Check.tsx b/src/pages/Check.tsx new file mode 100644 index 00000000..36b2ddfd --- /dev/null +++ b/src/pages/Check.tsx @@ -0,0 +1,14 @@ +import React from 'react' + +const Check = () => { + return ( +
+

+ If you want to part of the program click button below +

+ +
+ ); +} + +export default Check \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index ed63278b..9d379a3c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,4 +17,4 @@ "jsx": "react-jsx" }, "include": ["src"] -} \ No newline at end of file +} From 040254b7d0a4a7d3964095d04092c6860e1dd493 Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:25:58 +0200 Subject: [PATCH 006/174] Update setup.yml --- .github/workflows/setup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index 0a349042..cdff4cf0 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -4,7 +4,7 @@ on: [push, pull_request] jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -15,7 +15,7 @@ jobs: run: npm run build test-and-coverage: - runs-on: ubuntu-latest + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 From 1dea5948cba92fc95635e6b5e64909713ab1650a Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:28:05 +0200 Subject: [PATCH 007/174] Update setup.yml --- .github/workflows/setup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index cdff4cf0..9dfaa736 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -4,7 +4,7 @@ on: [push, pull_request] jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -15,7 +15,7 @@ jobs: run: npm run build test-and-coverage: - runs-on: ubuntu-latest + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 From 08e442a64a8358c90b4a78d35b4e51ea3e20ec81 Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:33:34 +0200 Subject: [PATCH 008/174] Update Check.test.tsx --- src/--test--/Check.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/--test--/Check.test.tsx b/src/--test--/Check.test.tsx index 3f80c96b..c0339c9d 100644 --- a/src/--test--/Check.test.tsx +++ b/src/--test--/Check.test.tsx @@ -7,7 +7,7 @@ describe("Test component", () => { render(); const heading = screen.getByText( - /If you want to part of the program click button below/i + /If you want to part of the program click button belows/i ); expect(heading).toBeTruthy(); From a5b800ad500fdcd6f167353df2ac05cbd0dc14c8 Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:37:53 +0200 Subject: [PATCH 009/174] Update Check.test.tsx --- src/--test--/Check.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/--test--/Check.test.tsx b/src/--test--/Check.test.tsx index c0339c9d..3f80c96b 100644 --- a/src/--test--/Check.test.tsx +++ b/src/--test--/Check.test.tsx @@ -7,7 +7,7 @@ describe("Test component", () => { render(); const heading = screen.getByText( - /If you want to part of the program click button belows/i + /If you want to part of the program click button below/i ); expect(heading).toBeTruthy(); From 771ff75892129cf98e44de912b7fb211a3e5c25a Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 12:03:06 +0200 Subject: [PATCH 010/174] Update setup.yml --- .github/workflows/setup.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index 9dfaa736..cce1288e 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -24,6 +24,9 @@ jobs: - name: Run Tests with Coverage run: npm test -- --coverage + + - name: List coverage directory + run: ls -la coverage - name: Upload Coverage to Codecov uses: codecov/codecov-action@v2 From 82ca3f57b5e22c2493099283424ee8e9861c8272 Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 12:10:41 +0200 Subject: [PATCH 011/174] Update setup.yml --- .github/workflows/setup.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index cce1288e..fe7fe60c 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -1,6 +1,12 @@ name: Setup and coverage bagde -on: [push, pull_request] +on: + push: + branches: + - feature-branch + pull_request: + branches: + - feature-branch jobs: build: From b57dc3896cfd7199124a9976633eaeabc01deda1 Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 12:24:27 +0200 Subject: [PATCH 012/174] Update setup.yml --- .github/workflows/setup.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index fe7fe60c..c47b5375 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -7,6 +7,7 @@ on: pull_request: branches: - feature-branch + workflow_dispatch: jobs: build: From eb0be0ffb25d420189843c4973d79b271f719e50 Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 12:34:43 +0200 Subject: [PATCH 013/174] Update setup.yml --- .github/workflows/setup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index c47b5375..d2a0a14c 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -3,10 +3,10 @@ name: Setup and coverage bagde on: push: branches: - - feature-branch + - ft-analytics pull_request: branches: - - feature-branch + - ft-analytics workflow_dispatch: jobs: From ad681da87957993efcc0e0d3538243c55e8a5dfe Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 12:42:32 +0200 Subject: [PATCH 014/174] Update setup.yml --- .github/workflows/setup.yml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index d2a0a14c..0c591d24 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -1,4 +1,4 @@ -name: Setup and coverage bagde +name: Setup and coverage badge on: push: @@ -7,11 +7,11 @@ on: pull_request: branches: - ft-analytics - workflow_dispatch: + workflow_dispatch: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -22,7 +22,7 @@ jobs: run: npm run build test-and-coverage: - runs-on: ubuntu-latest + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -31,7 +31,15 @@ jobs: - name: Run Tests with Coverage run: npm test -- --coverage - + + - name: List coverage directory + run: ls -la coverage + + - name: Upload Coverage to Codecov + uses: codecov/codecov-action@v2 + with: + token: ${{ secrets.CODECOV_TOKEN }} + - name: List coverage directory run: ls -la coverage From 0fe62071bd7e141e5e77f2cc159f2e36364f647b Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 12:45:40 +0200 Subject: [PATCH 015/174] Update Check.test.tsx --- src/--test--/Check.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/--test--/Check.test.tsx b/src/--test--/Check.test.tsx index 3f80c96b..c0339c9d 100644 --- a/src/--test--/Check.test.tsx +++ b/src/--test--/Check.test.tsx @@ -7,7 +7,7 @@ describe("Test component", () => { render(); const heading = screen.getByText( - /If you want to part of the program click button below/i + /If you want to part of the program click button belows/i ); expect(heading).toBeTruthy(); From 4e95661898947ce0ccbf68b08f3e03754a321e77 Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 13:03:43 +0200 Subject: [PATCH 016/174] Update Check.test.tsx --- src/--test--/Check.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/--test--/Check.test.tsx b/src/--test--/Check.test.tsx index c0339c9d..3f80c96b 100644 --- a/src/--test--/Check.test.tsx +++ b/src/--test--/Check.test.tsx @@ -7,7 +7,7 @@ describe("Test component", () => { render(); const heading = screen.getByText( - /If you want to part of the program click button belows/i + /If you want to part of the program click button below/i ); expect(heading).toBeTruthy(); From 93915cf456e7d72c336f57d2b2bc7119b2722ed5 Mon Sep 17 00:00:00 2001 From: ismaelmurekezi Date: Wed, 26 Jun 2024 13:24:04 +0200 Subject: [PATCH 017/174] fixing bug --- .github/workflows/setup.yml | 12 +++--------- src/--test--/Check.test.tsx | 4 +--- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index 0c591d24..0e30863e 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -3,11 +3,11 @@ name: Setup and coverage badge on: push: branches: - - ft-analytics + - '*' pull_request: branches: - - ft-analytics - workflow_dispatch: + - '*' + jobs: build: @@ -40,10 +40,4 @@ jobs: with: token: ${{ secrets.CODECOV_TOKEN }} - - name: List coverage directory - run: ls -la coverage - - name: Upload Coverage to Codecov - uses: codecov/codecov-action@v2 - with: - token: ${{ secrets.CODECOV_TOKEN }} diff --git a/src/--test--/Check.test.tsx b/src/--test--/Check.test.tsx index 3f80c96b..3313f370 100644 --- a/src/--test--/Check.test.tsx +++ b/src/--test--/Check.test.tsx @@ -7,7 +7,7 @@ describe("Test component", () => { render(); const heading = screen.getByText( - /If you want to part of the program click button below/i + /If you want to part of the program click button belows/i ); expect(heading).toBeTruthy(); @@ -15,5 +15,3 @@ describe("Test component", () => { expect(button).toBeTruthy(); }); }); - - From f7877f6f4916e53eb7cb249380f351d298e5e41d Mon Sep 17 00:00:00 2001 From: ismaelmurekezi Date: Wed, 26 Jun 2024 13:28:50 +0200 Subject: [PATCH 018/174] testing badge percentage --- coverage/clover.xml | 4 ++-- coverage/lcov-report/Check.tsx.html | 2 +- coverage/lcov-report/index.html | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/coverage/clover.xml b/coverage/clover.xml index 5976b91b..9da272c7 100644 --- a/coverage/clover.xml +++ b/coverage/clover.xml @@ -1,6 +1,6 @@ - - + + diff --git a/coverage/lcov-report/Check.tsx.html b/coverage/lcov-report/Check.tsx.html index 99d6b591..d92c5674 100644 --- a/coverage/lcov-report/Check.tsx.html +++ b/coverage/lcov-report/Check.tsx.html @@ -109,7 +109,7 @@

All files Check.tsx

+ + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/Test.tsx.html b/coverage/lcov-report/Test.tsx.html new file mode 100644 index 00000000..c6ddd527 --- /dev/null +++ b/coverage/lcov-report/Test.tsx.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for Test.tsx + + + + + + + + + +
+
+

All files Test.tsx

+
+ +
+ 50% + Statements + 1/2 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 50% + Lines + 1/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14  +  +1x +  +  +  +  +  +  +  +  +  +  + 
import React from 'react'
+ 
+const Test = () => {
+  return (
+    <div className="flex flex-col items-start font-poppins text-sm">
+      <h1 className="text-gray-800">
+        If you want to part of the program click button below
+      </h1>
+      <button className='  py-2 px-7 ml-10 mt-5 bg-purple-700 text-white rounded-md hover:bg-purple-500'>Confirm</button>
+    </div>
+  );
+}
+ 
+export default Test
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css new file mode 100644 index 00000000..f418035b --- /dev/null +++ b/coverage/lcov-report/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js new file mode 100644 index 00000000..cc121302 --- /dev/null +++ b/coverage/lcov-report/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/coverage/lcov-report/favicon.png b/coverage/lcov-report/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1525b811a167671e9de1fa78aab9f5c0b61cef7 GIT binary patch literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 100% + Statements + 2/2 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 2/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
Check.tsx +
+
100%2/2100%0/0100%1/1100%2/2
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css new file mode 100644 index 00000000..b317a7cd --- /dev/null +++ b/coverage/lcov-report/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js new file mode 100644 index 00000000..b3225238 --- /dev/null +++ b/coverage/lcov-report/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed68316eb3f65dec9063332d2f69bf3093bbfab GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc literal 0 HcmV?d00001 diff --git a/coverage/lcov-report/sorter.js b/coverage/lcov-report/sorter.js new file mode 100644 index 00000000..2bb296a8 --- /dev/null +++ b/coverage/lcov-report/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/coverage/lcov.info b/coverage/lcov.info new file mode 100644 index 00000000..548eeb50 --- /dev/null +++ b/coverage/lcov.info @@ -0,0 +1,13 @@ +TN: +SF:src/pages/Check.tsx +FN:3,(anonymous_0) +FNF:1 +FNH:1 +FNDA:1,(anonymous_0) +DA:3,1 +DA:4,1 +LF:2 +LH:2 +BRF:0 +BRH:0 +end_of_record diff --git a/package-lock.json b/package-lock.json index 80bc21d3..29d3a6fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,13 +55,22 @@ "@babel/preset-env": "^7.24.7", "@babel/preset-react": "^7.24.7", "@babel/preset-typescript": "^7.24.7", + "@testing-library/jest-dom": "^6.4.6", + "@testing-library/react": "^16.0.0", "@types/dotenv": "^8.2.0", + "@types/jest": "^29.5.12", "@types/jwt-decode": "^3.1.0", + "@types/react-loader-spinner": "^4.0.0", "@typescript-eslint/eslint-plugin": "^7.13.1", "@typescript-eslint/parser": "^7.13.1", "babel-loader": "^9.1.3", "cross-env": "^7.0.3", + + "@types/testing-library__react": "^10.2.0", + + "codecov": "^3.8.3", + "css-loader": "^7.1.2", "dotenv": "^16.4.5", "dotenv-webpack": "^8.1.0", @@ -74,9 +83,12 @@ "file-loader": "^6.2.0", "html-webpack-plugin": "^5.6.0", "http-proxy-middleware": "^3.0.0", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", "postcss-loader": "^8.1.1", "style-loader": "^4.0.0", "tailwindcss": "^3.4.4", + "ts-jest": "^29.1.5", "ts-loader": "^9.5.1", "url-loader": "^4.1.1", "webpack": "^5.92.0", @@ -84,6 +96,12 @@ "webpack-dev-server": "^5.0.4" } }, + "node_modules/@adobe/css-tools": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", + "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==", + "dev": true + }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -782,6 +800,18 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", @@ -2135,6 +2165,12 @@ "node": ">=6.9.0" } }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -2428,1576 +2464,4086 @@ "node": ">=12" } }, - "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==", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "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==", - "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==", - "engines": { - "node": ">=6.0.0" + "node": ">=8" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "sprintf-js": "~1.0.2" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "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==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@jsonjoy.com/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=8" } }, - "node_modules/@jsonjoy.com/json-pack": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz", - "integrity": "sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==", + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, "dependencies": { - "@jsonjoy.com/base64": "^1.1.1", - "@jsonjoy.com/util": "^1.1.2", - "hyperdyperid": "^1.2.0", - "thingies": "^1.20.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "tslib": "2" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@jsonjoy.com/util": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.1.3.tgz", - "integrity": "sha512-g//kkF4kOwUjemValCtOc/xiYzmwMRmWq3Bn+YnzOzuZLHq2PpMOxxIayN3cKbo7Ko2Np65t6D9H81IvXbXhqg==", + "node_modules/@jest/core/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { - "node": ">=10.0" + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "node_modules/@jest/core/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, - "node_modules/@next/env": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.4.tgz", - "integrity": "sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==", - "peer": true - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.4.tgz", - "integrity": "sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, + "node_modules/@jest/core/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/@next/swc-darwin-x64": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz", - "integrity": "sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz", - "integrity": "sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz", - "integrity": "sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz", - "integrity": "sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz", - "integrity": "sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz", - "integrity": "sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz", - "integrity": "sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, + "node_modules/@jest/reporters/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.4.tgz", - "integrity": "sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" + "node_modules/@jest/reporters/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "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==", + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">= 8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/@jest/reporters/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, "engines": { - "node": ">= 8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "node_modules/@jest/reporters/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, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 8" + "node": "*" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true, + "node_modules/@jest/reporters/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=14" + "node": ">=8" } }, - "node_modules/@reduxjs/toolkit": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.2.5.tgz", - "integrity": "sha512-aeFA/s5NCG7NoJe/MhmwREJxRkDs0ZaSqt0MxhWUrwCf1UQXpwR87RROJEql0uAkLI6U7snBOYOcKw83ew3FPg==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, "dependencies": { - "immer": "^10.0.3", - "redux": "^5.0.1", - "redux-thunk": "^3.1.0", - "reselect": "^5.1.0" - }, - "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18", - "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + "@sinclair/typebox": "^0.27.8" }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-redux": { - "optional": true - } - } - }, - "node_modules/@remix-run/router": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz", - "integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==", "engines": { - "node": ">=14.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", - "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" - }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "peer": true - }, - "node_modules/@swc/helpers": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", - "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", - "peer": true, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, "dependencies": { - "@swc/counter": "^0.1.3", - "tslib": "^2.4.0" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@types/bonjour": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", - "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "dependencies": { - "@types/node": "*" + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "dependencies": { - "@types/node": "*" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", - "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@types/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" - }, - "node_modules/@types/d3-color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" - }, - "node_modules/@types/d3-ease": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" - }, - "node_modules/@types/d3-interpolate": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", - "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "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==", "dependencies": { - "@types/d3-color": "*" + "@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/@types/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" + "node_modules/@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==", + "engines": { + "node": ">=6.0.0" + } }, - "node_modules/@types/d3-scale": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", - "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "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==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "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==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz", + "integrity": "sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==", + "dev": true, + "dependencies": { + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.1.3.tgz", + "integrity": "sha512-g//kkF4kOwUjemValCtOc/xiYzmwMRmWq3Bn+YnzOzuZLHq2PpMOxxIayN3cKbo7Ko2Np65t6D9H81IvXbXhqg==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true + }, + "node_modules/@next/env": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.4.tgz", + "integrity": "sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==", + "peer": true + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.4.tgz", + "integrity": "sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz", + "integrity": "sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz", + "integrity": "sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz", + "integrity": "sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz", + "integrity": "sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz", + "integrity": "sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz", + "integrity": "sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz", + "integrity": "sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.4.tgz", + "integrity": "sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "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==", + "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==", + "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==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@reduxjs/toolkit": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.2.5.tgz", + "integrity": "sha512-aeFA/s5NCG7NoJe/MhmwREJxRkDs0ZaSqt0MxhWUrwCf1UQXpwR87RROJEql0uAkLI6U7snBOYOcKw83ew3FPg==", + "dependencies": { + "immer": "^10.0.3", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@remix-run/router": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz", + "integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "peer": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "peer": true, + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@testing-library/dom": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.2.0.tgz", + "integrity": "sha512-CytIvb6tVOADRngTHGWNxH8LPgO/3hi/BdCEHOf7Qd2GvZVClhVP0Wo/QHzWhpki49Bk0b4VT6xpt3fx8HTSIw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.6.tgz", + "integrity": "sha512-8qpnGVincVDLEcQXWaHOf6zmlbwTKc6Us6PPu4CRnPXCzo2OGBS5cwgMMOWdxDpEz1mkbvXHpEy99M5Yvt682w==", + "dev": true, + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "@babel/runtime": "^7.9.2", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "lodash": "^4.17.21", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + }, + "peerDependencies": { + "@jest/globals": ">= 28", + "@types/bun": "latest", + "@types/jest": ">= 28", + "jest": ">= 28", + "vitest": ">= 0.32" + }, + "peerDependenciesMeta": { + "@jest/globals": { + "optional": true + }, + "@types/bun": { + "optional": true + }, + "@types/jest": { + "optional": true + }, + "jest": { + "optional": true + }, + "vitest": { + "optional": true + } + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true + }, + "node_modules/@testing-library/jest-dom/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.0.tgz", + "integrity": "sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0", + "@types/react-dom": "^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "peer": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + }, + "node_modules/@types/dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw==", + "deprecated": "This is a stub types definition. dotenv provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "dotenv": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz", + "integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/@types/js-cookie": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz", + "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==" + }, + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "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 + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/jwt-decode": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/jwt-decode/-/jwt-decode-3.1.0.tgz", + "integrity": "sha512-tthwik7TKkou3mVnBnvVuHnHElbjtdbM63pdBCbZTirCt3WAdM73Y79mOri7+ljsS99ZVwUFZHLMxJuJnv/z1w==", + "deprecated": "This is a stub types definition. jwt-decode provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "jwt-decode": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.14.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.5.tgz", + "integrity": "sha512-aoRR+fJkZT2l0aGOJhuA8frnCSoNX6W7U2mpNq63+BxBIj5BQFt8rHy627kijCmm63ijdSdwvGgpUsU6MBsZZA==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-auth-kit": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/react-auth-kit/-/react-auth-kit-1.2.1.tgz", + "integrity": "sha512-Jlo0PJsXVEuUxd2gYyE6fLQD5dPRfE1uLgcvPz5gr5+oF72FIBqxN0UcplhCUHG5QRe5zS3U2kBufi/K71DjLA==", + "deprecated": "This is a stub types definition. react-auth-kit provides its own type definitions, so you do not need this installed.", + "dependencies": { + "react-auth-kit": "*" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-lazy-load-image-component": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@types/react-lazy-load-image-component/-/react-lazy-load-image-component-1.6.4.tgz", + "integrity": "sha512-8pFPeDPF4yVG4lU1/ixZidJEEDZmEOYOTYDvmIu2IAabyuv97Q7n/93nMCocHvQ7vD1czKGiW+op55D9m3MkdA==", + "dependencies": { + "@types/react": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-loader-spinner": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/react-loader-spinner/-/react-loader-spinner-4.0.0.tgz", + "integrity": "sha512-FKW/yD3KwpydC8gsLmdWCOW0v/aezTvxcqqU0umNHa4QNkVF37UgOeh6DgXIPkxRm/m+6fcgW9XYK6Ff+HCd3A==", + "deprecated": "This is a stub types definition. react-loader-spinner provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "react-loader-spinner": "*" + } + }, + "node_modules/@types/react-redux": { + "version": "7.1.33", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", + "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, + "node_modules/@types/react-redux/node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + + "node_modules/@types/stylis": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz", + "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw=="}, + + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/testing-library__react": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-10.2.0.tgz", + "integrity": "sha512-KbU7qVfEwml8G5KFxM+xEfentAAVj/SOQSjW0+HqzjPE0cXpt0IpSamfX4jGYCImznDHgQcfXBPajS7HjLZduw==", + "deprecated": "This is a stub types definition. testing-library__react provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "@testing-library/react": "*" + } + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true + + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.13.1.tgz", + "integrity": "sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/type-utils": "7.13.1", + "@typescript-eslint/utils": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", + "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.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.1.tgz", + "integrity": "sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.1.tgz", + "integrity": "sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.13.1.tgz", + "integrity": "sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.13.1", + "@typescript-eslint/utils": "7.13.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/types": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.1.tgz", + "integrity": "sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.1.tgz", + "integrity": "sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "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.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", + "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.1.tgz", + "integrity": "sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "dev": true, + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "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, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dev": true, + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "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, + "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/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "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 + }, + "node_modules/argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha512-dEamhpPEwRUBpLNHeuCm/v+g0anFByHahxodVO/BbAarHVBBg2MccCwf9K+o1Pof+2btdnkJelYVUWjW/VrATw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "engines": { + "node": ">=0.6.10" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, "dependencies": { - "@types/d3-time": "*" + "dequal": "^2.0.3" } }, - "node_modules/@types/d3-shape": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", - "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, "dependencies": { - "@types/d3-path": "*" + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/@types/d3-time": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", - "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } }, - "node_modules/@types/d3-timer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + "node_modules/babel-loader/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } }, - "node_modules/@types/dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw==", - "deprecated": "This is a stub types definition. dotenv provides its own type definitions, so you do not need this installed.", + "node_modules/babel-loader/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "dependencies": { - "dotenv": "*" + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "node_modules/babel-loader/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz", - "integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "dev": true, "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@types/history": { - "version": "4.7.11", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", - "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", - "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "dev": true, "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "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==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, - "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, "dependencies": { - "@types/node": "*" + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/@types/js-cookie": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz", - "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==" - }, - "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 - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "node_modules/@types/jwt-decode": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/jwt-decode/-/jwt-decode-3.1.0.tgz", - "integrity": "sha512-tthwik7TKkou3mVnBnvVuHnHElbjtdbM63pdBCbZTirCt3WAdM73Y79mOri7+ljsS99ZVwUFZHLMxJuJnv/z1w==", - "deprecated": "This is a stub types definition. jwt-decode provides its own type definitions, so you do not need this installed.", + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dev": true, "dependencies": { - "jwt-decode": "*" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, - "node_modules/@types/node": { - "version": "20.14.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.5.tgz", - "integrity": "sha512-aoRR+fJkZT2l0aGOJhuA8frnCSoNX6W7U2mpNq63+BxBIj5BQFt8rHy627kijCmm63ijdSdwvGgpUsU6MBsZZA==", - "dev": true, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dependencies": { - "undici-types": "~5.26.4" + "balanced-match": "^1.0.0" } }, - "node_modules/@types/node-forge": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", - "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", - "dev": true, + "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==", "dependencies": { - "@types/node": "*" + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/prop-types": { - "version": "15.7.12", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", - "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" - }, - "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", - "dev": true + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } }, - "node_modules/@types/react": { - "version": "18.3.3", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", - "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dependencies": { - "@types/prop-types": "*", - "csstype": "^3.0.2" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, - "node_modules/@types/react-auth-kit": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/react-auth-kit/-/react-auth-kit-1.2.1.tgz", - "integrity": "sha512-Jlo0PJsXVEuUxd2gYyE6fLQD5dPRfE1uLgcvPz5gr5+oF72FIBqxN0UcplhCUHG5QRe5zS3U2kBufi/K71DjLA==", - "deprecated": "This is a stub types definition. react-auth-kit provides its own type definitions, so you do not need this installed.", + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "dependencies": { - "react-auth-kit": "*" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/@types/react-dom": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", - "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dependencies": { - "@types/react": "*" + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" } }, - "node_modules/@types/react-lazy-load-image-component": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/@types/react-lazy-load-image-component/-/react-lazy-load-image-component-1.6.4.tgz", - "integrity": "sha512-8pFPeDPF4yVG4lU1/ixZidJEEDZmEOYOTYDvmIu2IAabyuv97Q7n/93nMCocHvQ7vD1czKGiW+op55D9m3MkdA==", + "node_modules/browserify-sign": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", "dependencies": { - "@types/react": "*", - "csstype": "^3.0.2" + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.5", + "hash-base": "~3.0", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" } }, - "node_modules/@types/react-loader-spinner": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/react-loader-spinner/-/react-loader-spinner-4.0.0.tgz", - "integrity": "sha512-FKW/yD3KwpydC8gsLmdWCOW0v/aezTvxcqqU0umNHa4QNkVF37UgOeh6DgXIPkxRm/m+6fcgW9XYK6Ff+HCd3A==", - "deprecated": "This is a stub types definition. react-loader-spinner provides its own type definitions, so you do not need this installed.", - "dev": true, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { - "react-loader-spinner": "*" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/@types/react-redux": { - "version": "7.1.33", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", - "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", + "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/browserify-sign/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" + "safe-buffer": "~5.1.0" } }, - "node_modules/@types/react-redux/node_modules/redux": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", - "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/browserslist": { + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "@babel/runtime": "^7.9.2" + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/@types/react-router": { - "version": "5.1.20", - "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", - "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*" + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/@types/react-router-dom": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", - "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*", - "@types/react-router": "*" + "node-int64": "^0.4.0" } }, - "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "dev": true, "dependencies": { - "@types/mime": "^1", - "@types/node": "*" + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/serve-index": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", - "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", - "dev": true, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "peer": true, "dependencies": { - "@types/express": "*" + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" } }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" + "engines": { + "node": ">= 0.8" } }, - "node_modules/@types/sockjs": { - "version": "0.3.36", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", - "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { - "@types/node": "*" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/stylis": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz", - "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==" - }, - "node_modules/@types/use-sync-external-store": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", - "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + "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, + "engines": { + "node": ">=6" + } }, - "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, "dependencies": { - "@types/node": "*" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.13.1.tgz", - "integrity": "sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.13.1", - "@typescript-eslint/type-utils": "7.13.1", - "@typescript-eslint/utils": "7.13.1", - "@typescript-eslint/visitor-keys": "7.13.1", - "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.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=6" } }, - "node_modules/@typescript-eslint/parser": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.1.tgz", - "integrity": "sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "7.13.1", - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/typescript-estree": "7.13.1", - "@typescript-eslint/visitor-keys": "7.13.1", - "debug": "^4.3.4" - }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "engines": { - "node": "^18.18.0 || >=20.0.0" - }, + "node": ">= 6" + } + }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "node_modules/caniuse-lite": { + "version": "1.0.30001636", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", + "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "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, "dependencies": { - "ms": "2.1.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@typescript-eslint/parser/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.1.tgz", - "integrity": "sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==", + "node_modules/chalk/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, "dependencies": { - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/visitor-keys": "7.13.1" + "has-flag": "^4.0.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=8" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.13.1.tgz", - "integrity": "sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dependencies": { - "@typescript-eslint/typescript-estree": "7.13.1", - "@typescript-eslint/utils": "7.13.1", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "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": "^18.18.0 || >=20.0.0" + "node": ">= 8.10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" + "url": "https://paulmillr.com/funding/" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, - "dependencies": { - "ms": "2.1.2" - }, "engines": { "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@typescript-eslint/types": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.1.tgz", - "integrity": "sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==", + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=8" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + + "node_modules/class-variance-authority": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", + "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==", + "dependencies": { + "clsx": "2.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://joebell.co.uk" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.1.tgz", - "integrity": "sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==", + "node_modules/class-variance-authority/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + }}, + + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", + "dev": true + + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/visitor-keys": "7.13.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "source-map": "~0.6.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">= 10.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "peer": true + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=12" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/@typescript-eslint/utils": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", - "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.13.1", - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/typescript-estree": "7.13.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" }, - "peerDependencies": { - "eslint": "^8.56.0" + "engines": { + "node": ">=8" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.1.tgz", - "integrity": "sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==", + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.13.1", - "eslint-visitor-keys": "^3.4.3" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "node_modules/codecov": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.3.tgz", + "integrity": "sha512-Y8Hw+V3HgR7V71xWH2vQ9lyS358CbGCldWlJFR0JirqoGtOoas3R3/OclRTvgUYFK29mmJICDPauVKmpqbwhOA==", + "deprecated": "https://about.codecov.io/blog/codecov-uploader-deprecation-plan/", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" + "argv": "0.0.2", + "ignore-walk": "3.0.4", + "js-yaml": "3.14.1", + "teeny-request": "7.1.1", + "urlgrey": "1.0.0" + }, + "bin": { + "codecov": "bin/codecov" + }, + "engines": { + "node": ">=4.0" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "node_modules/codecov/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" + "sprintf-js": "~1.0.2" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "node_modules/codecov/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "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==", "dependencies": { - "@xtuc/long": "4.2.2" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "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==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", - "dev": true, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "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 + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "engines": { + "node": ">=0.8" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@xtuc/long": "4.2.2" + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "node": ">= 0.6" } }, - "node_modules/@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, "engines": { - "node": ">=14.15.0" + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/core-js-compat": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0" }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, "engines": { - "node": ">=14.15.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" }, "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "typescript": ">=4.9.5" }, "peerDependenciesMeta": { - "webpack-dev-server": { + "typescript": { "optional": true } } }, - "node_modules/@xtuc/ieee754": { + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/create-hash": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" }, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + }}, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, "bin": { - "acorn": "bin/acorn" + "create-jest": "bin/create-jest.js" }, "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "peerDependencies": { - "acorn": "^8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.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, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "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, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "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" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": "*" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", "dev": true, "dependencies": { - "ajv": "^8.0.0" + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "ajv": "^8.0.0" + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" }, "peerDependenciesMeta": { - "ajv": { + "@rspack/core": { + "optional": true + }, + "webpack": { "optional": true } } }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" } }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "engines": { - "node": ">=12" + "node": ">= 6" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/sponsors/fb55" } }, - "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==", + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true + }, + "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==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "cssom": "~0.3.6" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true }, - "node_modules/anymatch": { + "node_modules/csstype": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "internmap": "1 - 2" }, "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } }, - "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 + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "dependencies": { - "dequal": "^2.0.3" + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "d3-color": "1 - 3" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "d3-array": "2 - 3" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", - "dev": true, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "d3-time": "1 - 3" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/array.prototype.toreversed": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", - "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "node_modules/data-urls/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" } }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -4006,75 +6552,32 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/autoprefixer": { - "version": "10.4.19", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", - "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001599", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">= 0.4" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, "dependencies": { - "possible-typed-array-names": "^1.0.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -4083,3147 +6586,3226 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/axe-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", - "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "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 + }, + "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, - "dependencies": { - "dequal": "^2.0.3" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", "dev": true, "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": ">=18" }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-loader/node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "engines": { + "node": ">=18" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-loader/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.3" + "execa": "^5.0.0" }, - "peerDependencies": { - "ajv": "^8.8.2" + "engines": { + "node": ">= 10" } }, - "node_modules/babel-loader/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/babel-loader/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", - "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.1" + "engines": { + "node": ">=12" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", - "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==" - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "engines": { - "node": "*" + "node": ">= 0.8" } }, - "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==", + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } }, - "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/bonjour-service": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", - "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "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==", + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dependencies": { - "balanced-match": "^1.0.0" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, - "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==", + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, "dependencies": { - "fill-range": "^7.1.1" + "path-type": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" } }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "peer": true }, - "node_modules/browserify-sign": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", - "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", - "dependencies": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.5", - "hash-base": "~3.0", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.7", - "readable-stream": "^2.3.8", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.12" + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" } }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" } }, - "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/browserify-sign/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/browserslist": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", - "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, { "type": "github", - "url": "https://github.com/sponsors/ai" + "url": "https://github.com/sponsors/fb55" } - ], + ] + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001629", - "electron-to-chromium": "^1.4.796", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.16" - }, - "bin": { - "browserslist": "cli.js" + "webidl-conversions": "^7.0.0" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=12" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "dependencies": { - "run-applescript": "^7.0.0" + "domelementtype": "^2.2.0" }, "engines": { - "node": ">=18" + "node": ">= 4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "peer": true, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, "dependencies": { - "streamsearch": "^1.1.0" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" }, - "engines": { - "node": ">=10.16.0" + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, - "engines": { - "node": ">= 0.8" + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://dotenvx.com" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/dotenv-defaults": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", + "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "dotenv": "^8.2.0" } }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "node_modules/dotenv-defaults/node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", "dev": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" + "engines": { + "node": ">=10" } }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "node_modules/dotenv-webpack": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-8.1.0.tgz", + "integrity": "sha512-owK1JcsPkIobeqjVrk6h7jPED/W6ZpdFsMPR+5ursB7/SdgDyO+VzAU+szK8C8u3qUhtENyYnj8eyXMR5kkGag==", + "dev": true, + "dependencies": { + "dotenv-defaults": "^2.0.2" + }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "peerDependencies": { + "webpack": "^4 || ^5" } }, - "node_modules/camelize": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", - "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.805", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.805.tgz", + "integrity": "sha512-8W4UJwX/w9T0QSzINJckTKG6CYpAUTqsaWcWIsdud3I1FYJcMgW9QqT1/4CBff/pP/TihWh13OmiyY8neto6vw==" + }, + "node_modules/elliptic": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", + "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001636", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", - "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/chalk/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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "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" - }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">= 4" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, "engines": { - "node": ">=6.0" + "node": ">= 0.8" } }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "node_modules/engine.io-client": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", + "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1", + "xmlhttprequest-ssl": "~2.0.0" } }, - "node_modules/class-variance-authority": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", - "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==", + "node_modules/engine.io-client/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dependencies": { - "clsx": "2.0.0" + "ms": "2.1.2" }, - "funding": { - "url": "https://joebell.co.uk" + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/class-variance-authority/node_modules/clsx": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", - "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "node_modules/engine.io-client/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/engine.io-parser": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", "engines": { - "node": ">=6" + "node": ">=10.0.0" } }, - "node_modules/clean-css": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", - "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "node_modules/enhanced-resolve": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "dev": true, "dependencies": { - "source-map": "~0.6.0" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">= 10.0" + "node": ">=10.13.0" } }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "peer": true - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, "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==", - "dependencies": { - "color-name": "~1.1.4" + "node_modules/envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" }, "engines": { - "node": ">=7.0.0" + "node": ">=4" } }, - "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==" - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" + "is-arrayish": "^0.2.1" } }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, "dependencies": { - "mime-db": ">= 1.43.0 < 2" + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dev": true, "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" + "get-intrinsic": "^1.2.4" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4" } }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "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 - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, "engines": { - "node": ">=0.8" + "node": ">= 0.4" } }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", "dev": true, "dependencies": { - "safe-buffer": "5.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" }, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "dev": true, - "engines": { - "node": ">= 0.6" + "node": ">= 0.4" } }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "node_modules/es-module-lexer": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", + "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==", "dev": true }, - "node_modules/core-js-compat": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", - "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, "dependencies": { - "browserslist": "^4.23.0" + "es-errors": "^1.3.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "engines": { + "node": ">= 0.4" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" + "node": ">= 0.4" } }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "hasown": "^2.0.0" } }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.1" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" + "node": ">=6" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, "engines": { - "node": ">= 8" + "node": ">=0.8.0" } }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": "*" + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "node_modules/escodegen/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, "engines": { - "node": ">=4" + "node": ">=4.0" } }, - "node_modules/css-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", - "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">= 18.12.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", + "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5" }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.27.0" + "engines": { + "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.28.0", + "eslint-plugin-react-hooks": "^4.3.0" } }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", "dev": true, "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" } }, - "node_modules/css-to-react-native": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", - "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "node_modules/eslint-config-airbnb-base/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, "dependencies": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^4.0.2" + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "dependencies": { + "ms": "^2.1.1" } }, - "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==", - "bin": { - "cssesc": "bin/cssesc" + "node_modules/eslint-import-resolver-node/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 + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" }, "engines": { "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "node_modules/eslint-module-utils/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 + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, "dependencies": { - "internmap": "1 - 2" + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, "engines": { - "node": ">=12" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "engines": { - "node": ">=12" + "node_modules/eslint-plugin-import/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "engines": { - "node": ">=12" + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "node_modules/eslint-plugin-import/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, "dependencies": { - "d3-color": "1 - 3" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "engines": { - "node": ">=12" + "node_modules/eslint-plugin-import/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 + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dev": true, "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" }, "engines": { - "node": ">=12" + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "node_modules/eslint-plugin-jsx-a11y/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, "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "node_modules/eslint-plugin-jsx-a11y/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, "dependencies": { - "d3-array": "2 - 3" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "node_modules/eslint-plugin-react": { + "version": "7.34.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.2.tgz", + "integrity": "sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==", + "dev": true, "dependencies": { - "d3-time": "1 - 3" + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.hasown": "^1.1.4", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11" }, "engines": { - "node": ">=12" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true + "node_modules/eslint-plugin-react/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "esutils": "^2.0.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "node_modules/eslint-plugin-react/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, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-plugin-react/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, "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "*" } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">= 0.4" + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "ms": "2.0.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/decimal.js-light": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", - "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" - }, - "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 - }, - "node_modules/default-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.0.0" } }, - "node_modules/default-browser-id": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "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, "engines": { - "node": ">=18" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "node_modules/eslint/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/eslint/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, "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" }, "engines": { - "node": ">= 0.4" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "node_modules/eslint/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, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "node_modules/eslint/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, "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">= 0.4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" + "url": "https://opencollective.com/eslint" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/eslint/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, "engines": { - "node": ">= 0.8" + "node": ">=4.0" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "node_modules/eslint/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, - "engines": { - "node": ">=6" - } - }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "node_modules/eslint/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, + "dependencies": { + "is-glob": "^4.0.3" + }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=10.13.0" } }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/eslint/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, "dependencies": { - "path-type": "^4.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - }, - "node_modules/dns-packet": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "node_modules/eslint/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, "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/eslint/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, "dependencies": { - "esutils": "^2.0.2" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "node_modules/eslint/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, "dependencies": { - "utila": "~0.4" + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "node_modules/eslint/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, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "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, "dependencies": { - "domelementtype": "^2.2.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">= 4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "url": "https://opencollective.com/eslint" } }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "engines": { + "node": ">=4" } }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" } }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "node_modules/esquery/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, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" + "node": ">=4.0" } }, - "node_modules/dotenv-defaults": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", - "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", + "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, "dependencies": { - "dotenv": "^8.2.0" + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" } }, - "node_modules/dotenv-defaults/node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "node_modules/esrecurse/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, "engines": { - "node": ">=10" + "node": ">=4.0" } }, - "node_modules/dotenv-webpack": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-8.1.0.tgz", - "integrity": "sha512-owK1JcsPkIobeqjVrk6h7jPED/W6ZpdFsMPR+5ursB7/SdgDyO+VzAU+szK8C8u3qUhtENyYnj8eyXMR5kkGag==", + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "dependencies": { - "dotenv-defaults": "^2.0.2" - }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "webpack": "^4 || ^5" + "node": ">=4.0" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.805", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.805.tgz", - "integrity": "sha512-8W4UJwX/w9T0QSzINJckTKG6CYpAUTqsaWcWIsdud3I1FYJcMgW9QqT1/4CBff/pP/TihWh13OmiyY8neto6vw==" + "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, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/elliptic": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", - "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" } }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { - "node": ">= 0.8" + "node": ">= 0.8.0" } }, - "node_modules/engine.io-client": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", - "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.0.0" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/engine.io-client/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, "dependencies": { - "ms": "2.1.2" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 0.10.0" } }, - "node_modules/engine.io-client/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "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 }, - "node_modules/engine.io-parser": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", - "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", "engines": { - "node": ">=10.0.0" + "node": ">=6.0.0" } }, - "node_modules/enhanced-resolve": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", - "dev": true, + "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==", "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "@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": ">=10.13.0" + "node": ">=8.6.0" } }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "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 + }, + "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 + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "dependencies": { + "punycode": "^1.3.2" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/fast-url-parser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, "engines": { - "node": ">=6" + "node": ">= 4.9.1" } }, - "node_modules/envinfo": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", - "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, - "bin": { - "envinfo": "dist/cli.js" + "dependencies": { + "websocket-driver": ">=0.5.1" }, "engines": { - "node": ">=4" + "node": ">=0.8.0" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "dependencies": { - "is-arrayish": "^0.2.1" + "bser": "2.1.1" } }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">= 0.4" + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, + "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==", "dependencies": { - "get-intrinsic": "^1.2.4" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, "engines": { - "node": ">= 0.4" + "node": ">= 0.8" } }, - "node_modules/es-iterator-helpers": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", - "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.1.2" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es-module-lexer": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", - "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==", - "dev": true - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, "dependencies": { - "es-errors": "^1.3.0" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "p-locate": "^6.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "dependencies": { - "hasown": "^2.0.0" + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "p-limit": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "engines": { - "node": ">=6" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" + "find-up": "^6.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=14.16" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-config-airbnb": { - "version": "19.0.4", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", - "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "eslint-config-airbnb-base": "^15.0.0", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.3", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.28.0", - "eslint-plugin-react-hooks": "^4.3.0" + "node": ">=8" } }, - "node_modules/eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.2" } }, - "node_modules/eslint-config-airbnb-base/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/flat-cache/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, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/flat-cache/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, "dependencies": { - "ms": "^2.1.1" + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "node_modules/eslint-import-resolver-node/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 - }, - "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { - "debug": "^3.2.7" + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": ">=4" + "node": ">=4.0" }, "peerDependenciesMeta": { - "eslint": { + "debug": { "optional": true } } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "is-callable": "^1.1.3" } }, - "node_modules/eslint-module-utils/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 - }, - "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", - "dev": true, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=4" + "node": ">=14" }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-plugin-import/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, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { - "ms": "^2.1.1" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, - "dependencies": { - "esutils": "^2.0.2" + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "engines": { + "node": "*" }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-import/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 - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", - "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.23.2", - "aria-query": "^5.3.0", - "array-includes": "^3.1.7", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "=4.7.0", - "axobject-query": "^3.2.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.0.15", - "hasown": "^2.0.0", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7" - }, "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "node": ">=6.9.0" } }, - "node_modules/eslint-plugin-jsx-a11y/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==", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react": { - "version": "7.34.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.2.tgz", - "integrity": "sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.2", - "array.prototype.toreversed": "^1.1.2", - "array.prototype.tosorted": "^1.1.3", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.19", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.8", - "object.fromentries": "^2.0.8", - "object.hasown": "^1.1.4", - "object.values": "^1.2.0", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11" - }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "node": ">=8.0.0" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "engines": { "node": ">=10" }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-react/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==", + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, + "node_modules/glob": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", + "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", "dependencies": { - "esutils": "^2.0.2" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-plugin-react/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, + "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==", + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">=4.0" + "node": ">= 6" } }, - "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=4" } }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, - "bin": { - "resolve": "bin/resolve" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "get-intrinsic": "^1.1.3" }, - "engines": { - "node": ">=8.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "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, "engines": { "node": ">=8" } }, - "node_modules/eslint/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==", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, - "dependencies": { - "ms": "2.1.2" - }, "engines": { - "node": ">=6.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/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==", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/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==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "has-symbols": "^1.0.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/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, + "node_modules/hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, "engines": { - "node": ">=4.0" + "node": ">=4" } }, - "node_modules/eslint/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, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "node_modules/eslint/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, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { - "is-glob": "^4.0.3" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=10.13.0" + "node": ">= 0.4" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/eslint/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, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "react-is": "^16.7.0" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "node_modules/eslint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/eslint/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==", + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/eslint/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==", + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "whatwg-encoding": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/eslint/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==", + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] }, - "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==", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dev": true, "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "bin": { + "html-minifier-terser": "cli.js" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": ">=12" } }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, "engines": { - "node": ">=0.10" + "node": ">= 12" } }, - "node_modules/esquery/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, - "engines": { - "node": ">=4.0" + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "dependencies": { + "void-elements": "3.1.0" } }, - "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==", + "node_modules/html-webpack-plugin": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", "dev": true, "dependencies": { - "estraverse": "^5.2.0" + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" }, "engines": { - "node": ">=4.0" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "dev": true, - "engines": { - "node": ">=4.0" + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, "engines": { - "node": ">=4.0" + "node": ">= 0.8" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, "engines": { - "node": ">= 0.6" + "node": ">= 6" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">=0.8.x" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/http-proxy-middleware": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz", + "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" + "@types/http-proxy": "^1.17.10", + "debug": "^4.3.4", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.5" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "node_modules/http-proxy-middleware/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.6.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "ms": "2.1.2" }, "engines": { - "node": ">= 0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "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==", + "node_modules/http-proxy-middleware/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/fast-equals": { + "node_modules/https-proxy-agent": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", - "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, "engines": { - "node": ">=6.0.0" + "node": ">= 6" } }, - "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==", + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, "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" + "ms": "2.1.2" }, "engines": { - "node": ">=8.6.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "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 - }, - "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==", + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "engines": { - "node": ">= 4.9.1" + "node": ">=10.17.0" } }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dependencies": { - "reusify": "^1.0.4" + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "dev": true, + "engines": { + "node": ">=10.18" } }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, + "node_modules/i18next": { + "version": "23.11.5", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.5.tgz", + "integrity": "sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" + "@babel/runtime": "^7.23.2" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "dependencies": { - "flat-cache": "^3.0.4" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=0.10.0" } }, - "node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": "^10 || ^12 || >= 14" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "postcss": "^8.1.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==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "node_modules/ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", "dev": true, "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" + "minimatch": "^3.0.4" } }, - "node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "node_modules/ignore-walk/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, "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "node_modules/ignore-walk/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, "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, + "node": "*" + } + }, + "node_modules/immer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/immer" } }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "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, "dependencies": { - "p-locate": "^6.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-cache-dir/node_modules/p-limit": { + "node_modules/import-fresh/node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { - "p-limit": "^4.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=0.8.19" } }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "dependencies": { - "find-up": "^6.3.0" - }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, - "bin": { - "flat": "cli.js" + "engines": { + "node": ">=10.13.0" } }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">= 10" } }, - "node_modules/flat-cache/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==", + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/flat-cache/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "*" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/flat-cache/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dependencies": { + "binary-extensions": "^2.0.0" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "dependencies": { - "glob": "^7.1.3" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, "engines": { - "node": ">=4.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "is-callable": "^1.1.3" + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=14" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=14" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">= 6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "engines": { - "node": "*" + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" }, "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -7232,36 +9814,52 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "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==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, "engines": { - "node": ">=6.9.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, "engines": { "node": ">= 0.4" }, @@ -7269,27 +9867,33 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/is-network-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", "dev": true, "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "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==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -7298,61 +9902,53 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", - "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, "engines": { - "node": ">=16 || 14 >=14.18" + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "isobject": "^3.0.1" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -7361,90 +9957,83 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/handle-thing": { + "node_modules/is-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "engines": { + "node": ">=8" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "dependencies": { - "es-define-property": "^1.0.0" + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, "engines": { "node": ">= 0.4" }, @@ -7452,10 +10041,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, "engines": { "node": ">= 0.4" @@ -7464,13 +10053,26 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-tostringtag": { + "node_modules/is-weakref": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, "dependencies": { - "has-symbols": "^1.0.3" + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -7479,773 +10081,974 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "is-inside-container": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", "dev": true, - "bin": { - "he": "bin/he" + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" } }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "node_modules/istanbul-lib-report/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, "dependencies": { - "react-is": "^16.7.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/istanbul-lib-source-maps/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/hpack.js/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/istanbul-lib-source-maps/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/hpack.js/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ] + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "node_modules/jackspeak": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", + "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" }, "bin": { - "html-minifier-terser": "cli.js" + "jest": "bin/jest.js" }, "engines": { - "node": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, "engines": { - "node": ">= 12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/html-parse-stringify": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", - "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "node_modules/jest-changed-files/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, "dependencies": { - "void-elements": "3.1.0" + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/html-webpack-plugin": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", - "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "node_modules/jest-changed-files/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, - "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - }, "engines": { - "node": ">=10.13.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.20.0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "node_modules/jest-circus/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, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">= 0.8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "node_modules/jest-circus/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "node_modules/jest-circus/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, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, "engines": { - "node": ">=8.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-proxy-middleware": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz", - "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==", + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "dependencies": { - "@types/http-proxy": "^1.17.10", - "debug": "^4.3.4", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.5" + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/http-proxy-middleware/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=6.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { - "supports-color": { + "@types/node": { + "optional": true + }, + "ts-node": { "optional": true } } }, - "node_modules/http-proxy-middleware/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "engines": { - "node": ">=10.17.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/hyperdyperid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", - "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "node_modules/jest-config/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, - "engines": { - "node": ">=10.18" - } - }, - "node_modules/i18next": { - "version": "23.11.5", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.5.tgz", - "integrity": "sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA==", - "funding": [ - { - "type": "individual", - "url": "https://locize.com" - }, - { - "type": "individual", - "url": "https://locize.com/i18next.html" - }, - { - "type": "individual", - "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" - } - ], "dependencies": { - "@babel/runtime": "^7.23.2" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" + "node": "*" }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immer": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", - "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/jest-config/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, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/import-fresh/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==", + "node_modules/jest-config/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "node_modules/jest-config/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "engines": { - "node": ">=0.8.19" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "detect-newline": "^3.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, "engines": { - "node": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "engines": { - "node": ">=10.13.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "node_modules/jest-each/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "node_modules/jest-each/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, "dependencies": { - "has-bigints": "^1.0.1" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "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==", + "node_modules/jest-haste-map/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, "dependencies": { - "binary-extensions": "^2.0.0" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, "dependencies": { - "hasown": "^2.0.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "dependencies": { - "is-typed-array": "^1.1.13" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "bin": { - "is-docker": "cli.js" + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "engines": { - "node": ">= 0.4" + "node": ">=6" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-network-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", - "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.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==", + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, "engines": { - "node": ">=0.12.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "node_modules/jest-runner/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, "dependencies": { - "has-tostringtag": "^1.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "node_modules/jest-runner/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, "engines": { "node": ">=10" @@ -8254,267 +11057,421 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "dependencies": { - "isobject": "^3.0.1" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/jest-runtime/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, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">= 0.4" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "node_modules/jest-runtime/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, "dependencies": { - "call-bind": "^1.0.7" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "*" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/jest-runtime/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "dependencies": { - "which-typed-array": "^1.1.14" + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "node_modules/jest-validate/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "dependencies": { - "is-inside-container": "^1.0.0" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 10.13.0" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "bin": { + "jiti": "bin/jiti.js" + } }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", "engines": { - "node": ">=0.10.0" + "node": ">=14" } }, - "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "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, "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jackspeak": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "dev": true, "dependencies": { - "@isaacs/cliui": "^8.0.2" + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" }, "engines": { "node": ">=14" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "canvas": "^2.5.0" }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/jsdom/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "node_modules/jsdom/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 6" } }, - "node_modules/jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", - "bin": { - "jiti": "bin/jiti.js" - } + "node_modules/jsdom/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, - "node_modules/js-cookie": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", - "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "node_modules/jsdom/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } }, - "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==", + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=12" } }, "node_modules/jsesc": { @@ -8606,6 +11563,15 @@ "node": ">=0.10.0" } }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/language-subtag-registry": { "version": "0.3.23", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", @@ -8634,6 +11600,15 @@ "shell-quote": "^1.8.1" } }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -8705,6 +11680,12 @@ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -8744,12 +11725,53 @@ "node": "14 || >=16.14" } }, + "node_modules/lucide-react": { "version": "0.396.0", "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.396.0.tgz", "integrity": "sha512-N/zP+9vEfEYHiMWMpjwH/M5diaV0e4UFe07BpgdzaRYce5QvXi87hixf7F0Xqdr3zuX/9u7H/2D4MVXIK22O0A==", "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0" + }}, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "peer": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } }, "node_modules/md5.js": { @@ -8888,6 +11910,15 @@ "node": ">=6" } }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -9084,6 +12115,26 @@ "tslib": "^2.0.3" } }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -9093,6 +12144,12 @@ "node": ">= 6.13.0" } }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", @@ -9138,6 +12195,12 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/nwsapi": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz", + "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==", + "dev": true + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -9465,6 +12528,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -9863,11 +12950,69 @@ "renderkid": "^3.0.0" } }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "peer": true + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -9905,6 +13050,12 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, "node_modules/public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", @@ -9932,6 +13083,22 @@ "node": ">=6" } }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -9947,6 +13114,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -10313,6 +13486,19 @@ "node": ">= 10.13.0" } }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/redux": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", @@ -10478,6 +13664,15 @@ "node": ">=8" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -10535,6 +13730,15 @@ "node": ">=8" } }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -10688,6 +13892,18 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", @@ -10981,6 +14197,12 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -11172,6 +14394,33 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -11181,6 +14430,15 @@ "node": ">= 0.8" } }, + "node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "dev": true, + "dependencies": { + "stubs": "^3.0.0" + } + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -11196,7 +14454,41 @@ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "dependencies": { - "safe-buffer": "~5.2.0" + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-length/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/string-width": { @@ -11380,6 +14672,18 @@ "node": ">=6" } }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -11392,6 +14696,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", + "dev": true + }, "node_modules/style-loader": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz", @@ -11523,6 +14833,7 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tailwind-merge": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.3.0.tgz", @@ -11535,6 +14846,12 @@ "url": "https://github.com/sponsors/dcastil" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, "node_modules/tailwindcss": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", @@ -11599,6 +14916,22 @@ "node": ">=6" } }, + "node_modules/teeny-request": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.1.tgz", + "integrity": "sha512-iwY6rkW5DDGq8hE2YgNQlKbptYpY5Nn2xecjQiNjOXWbKzPGUfmeUBCSQbbr306d7Z7U2N0TPl+/SwYRfua1Dg==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/terser": { "version": "5.31.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", @@ -11651,6 +14984,63 @@ } } }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/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, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -11699,6 +15089,12 @@ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -11728,6 +15124,27 @@ "node": ">=0.6" } }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, "node_modules/tree-dump": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.1.tgz", @@ -11761,6 +15178,53 @@ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, + "node_modules/ts-jest": { + "version": "29.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.5.tgz", + "integrity": "sha512-UuClSYxM7byvvYfyWdFI+/2UxMmwNyJb0NPkZPQE2hew3RurV7l7zURgOHAd/1I1ZdPpe3GUsXNXAcN8TFKSIg==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, "node_modules/ts-loader": { "version": "9.5.1", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", @@ -11831,6 +15295,15 @@ "node": ">= 0.8.0" } }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -12002,6 +15475,15 @@ "node": ">=4" } }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -12076,6 +15558,25 @@ } } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/urlgrey": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-1.0.0.tgz", + "integrity": "sha512-hJfIzMPJmI9IlLkby8QrsCykQ+SXDeO2W5Q9QTW3QpqZVTx4a/K7p8/5q+/isD8vsbVaFgql/gvAoQCRQ2Cb5w==", + "dev": true, + "dependencies": { + "fast-url-parser": "^1.1.3" + } + }, "node_modules/use-sync-external-store": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", @@ -12113,6 +15614,20 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -12143,12 +15658,34 @@ "d3-timer": "^3.0.1" } }, + "node_modules/void-elements": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", "engines": { "node": ">=0.10.0" + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } }, "node_modules/watchpack": { @@ -12173,6 +15710,12 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, "node_modules/webpack": { "version": "5.92.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.0.tgz", @@ -12538,6 +16081,49 @@ "node": ">=0.8.0" } }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -12739,6 +16325,19 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/ws": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", @@ -12759,6 +16358,21 @@ } } }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, "node_modules/xmlhttprequest-ssl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", @@ -12767,6 +16381,15 @@ "node": ">=0.4.0" } }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -12784,6 +16407,74 @@ "node": ">= 14" } }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yocto-queue": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", @@ -12797,4 +16488,4 @@ } } } -} +}} diff --git a/package.json b/package.json index 68df8376..e74e7c5a 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,12 @@ "main": "index.ts", "scripts": { "dev": "webpack serve --env NODE_ENV=development", - "build": "webpack --env NODE_ENV=production" + "build": "webpack --env NODE_ENV=production", + "test": "jest --coverage" }, + "jest":{ + "testEnvironment": "jsdom" +}, "keywords": [], "author": "", "license": "ISC", @@ -57,13 +61,19 @@ "@babel/preset-env": "^7.24.7", "@babel/preset-react": "^7.24.7", "@babel/preset-typescript": "^7.24.7", + "@testing-library/jest-dom": "^6.4.6", + "@testing-library/react": "^16.0.0", "@types/dotenv": "^8.2.0", + "@types/jest": "^29.5.12", "@types/jwt-decode": "^3.1.0", + "@types/react-loader-spinner": "^4.0.0", "@typescript-eslint/eslint-plugin": "^7.13.1", "@typescript-eslint/parser": "^7.13.1", "babel-loader": "^9.1.3", "cross-env": "^7.0.3", + "@types/testing-library__react": "^10.2.0", + "codecov": "^3.8.3", "css-loader": "^7.1.2", "dotenv": "^16.4.5", "dotenv-webpack": "^8.1.0", @@ -76,9 +86,12 @@ "file-loader": "^6.2.0", "html-webpack-plugin": "^5.6.0", "http-proxy-middleware": "^3.0.0", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", "postcss-loader": "^8.1.1", "style-loader": "^4.0.0", "tailwindcss": "^3.4.4", + "ts-jest": "^29.1.5", "ts-loader": "^9.5.1", "url-loader": "^4.1.1", "webpack": "^5.92.0", diff --git a/src/--test--/Check.test.tsx b/src/--test--/Check.test.tsx new file mode 100644 index 00000000..3f80c96b --- /dev/null +++ b/src/--test--/Check.test.tsx @@ -0,0 +1,19 @@ +import React from "react"; +import { render, screen } from "@testing-library/react"; +import Check from "../pages/Check"; + +describe("Test component", () => { + test("renders content", () => { + render(); + + const heading = screen.getByText( + /If you want to part of the program click button below/i + ); + expect(heading).toBeTruthy(); + + const button = screen.getByRole("button", { name: /confirm/i }); + expect(button).toBeTruthy(); + }); +}); + + diff --git a/src/Redux/features/analyticSlice.tsx b/src/Redux/features/analyticSlice.tsx new file mode 100644 index 00000000..434426f3 --- /dev/null +++ b/src/Redux/features/analyticSlice.tsx @@ -0,0 +1,75 @@ +import { createSlice, createAsyncThunk, PayloadAction } from "@reduxjs/toolkit"; + +interface DeliveryAddress { + city: string; + street: string; +} + +interface Product { + productId: string; + name: string; + quantity: number; + price: number; +} + +interface Order { + createdAt: string; + deliveryAddress: DeliveryAddress; + expectedDeliveryDate: string | null; + orderId: string; + paymentMethod: string; + products: Product[]; + status: string; + totalAmount: number | null; + updatedAt: string; + userId: string; +} + +interface OrderState { + isLoading: boolean; + data: Order[]; + error: boolean; +} + +const initialState: OrderState = { + isLoading: false, + data: [], + error: false, +}; + +export const fetchOrders = createAsyncThunk("orders/fetchOrders", async () => { + const response = await fetch("http://localhost:5000/order/getAllOrder"); + if (!response.ok) { + throw new Error("Failed to fetch orders"); + } + + const data: Order[] = await response.json(); + return data; +}); + +const OrderSlice = createSlice({ + name: "orders", + initialState, + reducers: {}, + extraReducers: (builder) => { + builder + .addCase(fetchOrders.pending, (state) => { + state.isLoading = true; + state.error = false; + }) + .addCase( + fetchOrders.fulfilled, + (state, action: PayloadAction) => { + state.isLoading = false; + state.data = action.payload; + state.error = false; + } + ) + .addCase(fetchOrders.rejected, (state) => { + state.isLoading = false; + state.error = true; + }); + }, +}); + +export default OrderSlice.reducer; diff --git a/src/Redux/store.tsx b/src/Redux/store.tsx index 473b45b2..670b92e5 100644 --- a/src/Redux/store.tsx +++ b/src/Redux/store.tsx @@ -1,3 +1,4 @@ + import { configureStore, Action } from '@reduxjs/toolkit'; import { ThunkAction } from 'redux-thunk'; import categoryReducer from './productsPage/categorySlice'; @@ -9,6 +10,9 @@ import { productReducer } from './Action/Reducer/singleproductSlice'; import contactReducer from './HomePage/contactSlice'; import productsImagesReducer from './HomePage/ProductsImagesSlice'; import popularProductsReducer from './HomePage/PopularProductsSlice'; +import AuthSlice from "./features/AuthSlice"; +import OrderStatusSlice from "./features/analyticSlice"; + export const store = configureStore({ reducer: { @@ -21,11 +25,17 @@ export const store = configureStore({ product: productReducer, popularProducts: popularProductsReducer, contact: contactReducer, + + orderStatus: OrderStatusSlice, + }, middleware: (getDefaultMiddelware) => getDefaultMiddelware().concat(apiSlice.middleware), }); - + export type RootState = ReturnType; export type AppDispatch = typeof store.dispatch; export type AppThunk = ThunkAction>; + + + diff --git a/src/Routes/index.tsx b/src/Routes/index.tsx index 7d1035b9..5e68d38b 100644 --- a/src/Routes/index.tsx +++ b/src/Routes/index.tsx @@ -1,6 +1,7 @@ import React from "react"; import { Route, Routes } from "react-router-dom"; import AuthOutlet from "@auth-kit/react-router/AuthOutlet"; + import Signin from "../pages/Signin"; import SignUp from "../pages/SignUp"; import Admin from "../Portal/admin"; @@ -10,6 +11,7 @@ import VerifyCode from "../pages/VerifyCode"; import VerifyEmail from "../Lib/VerifyEmail"; import AuthGoogle from "../Lib/authgoogle"; import Users from "../pages/Users"; + import Sellers from "../pages/Sellers"; import Analytics from "../pages/Analytics"; import Settings from "../pages/Settings"; @@ -22,7 +24,6 @@ import Cart from "../pages/Cart"; import Checkout from "../pages/Checkout"; import Singlepage from "../pages/singlePage"; - const AppRoutes: React.FC = () => (
@@ -54,5 +55,4 @@ const AppRoutes: React.FC = () => (
); - export default AppRoutes; diff --git a/src/jest.config.ts b/src/jest.config.ts new file mode 100644 index 00000000..ab5a341e --- /dev/null +++ b/src/jest.config.ts @@ -0,0 +1,8 @@ +module.exports = { + preset: "ts-jest", + testEnvironment: "jsdom", + collectCoverage: true, + coverageReporters: ["json", "lcov", "text", "clover"], +}; + + diff --git a/src/pages/Analytics.tsx b/src/pages/Analytics.tsx index f6272426..535e76ce 100644 --- a/src/pages/Analytics.tsx +++ b/src/pages/Analytics.tsx @@ -1,50 +1,42 @@ import React, { useEffect, useState } from "react"; +import { useDispatch, useSelector } from "react-redux"; import OrderStatus from "../Components/Analytics/OrderStatus"; -import axios from "axios"; import SellingReport from "../Components/Analytics/SellingReport"; +import { RootState, AppDispatch } from "../Redux/store"; +import { fetchOrders } from "../Redux/features/analyticSlice"; -interface DeliveryAddress { - city: string; - street: string; -} - -interface Product { - productId: string; - name: string; - quantity: number; - price: number; -} - -interface Order { - createdAt: string; - deliveryAddress: DeliveryAddress; - expectedDeliveryDate: string | null; - orderId: string; - paymentMethod: string; - products: Product[]; - status: string; - totalAmount: number | null; - updatedAt: string; - userId: string; -} - -const Analytics = () => { + +const Analytics: React.FC = () => { + const dispatch: AppDispatch = useDispatch(); + const { isLoading, data, error } = useSelector( + (state: RootState) => state.orderStatus + ); const [statusCounts, setStatusCounts] = useState<{ [key: string]: number }>( {} ); useEffect(() => { - axios.get("http://localhost:5000/order/getAllOrder").then((res) => { - console.log(res.data); + dispatch(fetchOrders()); + }, [dispatch]); + useEffect(() => { + if (data) { const counts: { [key: string]: number } = {}; - res.data.forEach((order) => { + data.forEach((order) => { counts[order.status] = (counts[order.status] || 0) + 1; }); setStatusCounts(counts); - }); - }, []); + } + }, [data]); + + if (isLoading) { + return
Loading...
; + } + + if (error) { + return
Error fetching orders
; + } return (
diff --git a/src/pages/Check.tsx b/src/pages/Check.tsx new file mode 100644 index 00000000..36b2ddfd --- /dev/null +++ b/src/pages/Check.tsx @@ -0,0 +1,14 @@ +import React from 'react' + +const Check = () => { + return ( +
+

+ If you want to part of the program click button below +

+ +
+ ); +} + +export default Check \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index ed63278b..9d379a3c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,4 +17,4 @@ "jsx": "react-jsx" }, "include": ["src"] -} \ No newline at end of file +} From 0019272a049e5d9571c27ffd74019bc7e9a3c791 Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:25:58 +0200 Subject: [PATCH 047/174] Update setup.yml --- .github/workflows/setup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index 0a349042..cdff4cf0 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -4,7 +4,7 @@ on: [push, pull_request] jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -15,7 +15,7 @@ jobs: run: npm run build test-and-coverage: - runs-on: ubuntu-latest + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 From ca3e2f6a251182c9bd14c288016574bbc5b77ab8 Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:28:05 +0200 Subject: [PATCH 048/174] Update setup.yml --- .github/workflows/setup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index cdff4cf0..9dfaa736 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -4,7 +4,7 @@ on: [push, pull_request] jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -15,7 +15,7 @@ jobs: run: npm run build test-and-coverage: - runs-on: ubuntu-latest + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 From c20a725b533ae6883495c0ee0791246ed6a42342 Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:33:34 +0200 Subject: [PATCH 049/174] Update Check.test.tsx --- src/--test--/Check.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/--test--/Check.test.tsx b/src/--test--/Check.test.tsx index 3f80c96b..c0339c9d 100644 --- a/src/--test--/Check.test.tsx +++ b/src/--test--/Check.test.tsx @@ -7,7 +7,7 @@ describe("Test component", () => { render(); const heading = screen.getByText( - /If you want to part of the program click button below/i + /If you want to part of the program click button belows/i ); expect(heading).toBeTruthy(); From ded1eb66f3f2b25888d19fab7b20ae2cf46237dc Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:37:53 +0200 Subject: [PATCH 050/174] Update Check.test.tsx --- src/--test--/Check.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/--test--/Check.test.tsx b/src/--test--/Check.test.tsx index c0339c9d..3f80c96b 100644 --- a/src/--test--/Check.test.tsx +++ b/src/--test--/Check.test.tsx @@ -7,7 +7,7 @@ describe("Test component", () => { render(); const heading = screen.getByText( - /If you want to part of the program click button belows/i + /If you want to part of the program click button below/i ); expect(heading).toBeTruthy(); From 064223842aca52a3d5987ea0d894f09ae81b0cf7 Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 12:03:06 +0200 Subject: [PATCH 051/174] Update setup.yml --- .github/workflows/setup.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index 9dfaa736..cce1288e 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -24,6 +24,9 @@ jobs: - name: Run Tests with Coverage run: npm test -- --coverage + + - name: List coverage directory + run: ls -la coverage - name: Upload Coverage to Codecov uses: codecov/codecov-action@v2 From 56ae05ec46556cb227af7ff5d9b70342e5d4041b Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 12:10:41 +0200 Subject: [PATCH 052/174] Update setup.yml --- .github/workflows/setup.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index cce1288e..fe7fe60c 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -1,6 +1,12 @@ name: Setup and coverage bagde -on: [push, pull_request] +on: + push: + branches: + - feature-branch + pull_request: + branches: + - feature-branch jobs: build: From 709b2645c98c5fd8ae2e4be59afe6e6719483b01 Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 12:24:27 +0200 Subject: [PATCH 053/174] Update setup.yml --- .github/workflows/setup.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index fe7fe60c..c47b5375 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -7,6 +7,7 @@ on: pull_request: branches: - feature-branch + workflow_dispatch: jobs: build: From b3377ac5b7d4db56305dd0da6d69b33dcd00c97c Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 12:34:43 +0200 Subject: [PATCH 054/174] Update setup.yml --- .github/workflows/setup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index c47b5375..d2a0a14c 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -3,10 +3,10 @@ name: Setup and coverage bagde on: push: branches: - - feature-branch + - ft-analytics pull_request: branches: - - feature-branch + - ft-analytics workflow_dispatch: jobs: From 2d880215e45755237c5cc72915d2e05e96283afd Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 12:42:32 +0200 Subject: [PATCH 055/174] Update setup.yml --- .github/workflows/setup.yml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index d2a0a14c..0c591d24 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -1,4 +1,4 @@ -name: Setup and coverage bagde +name: Setup and coverage badge on: push: @@ -7,11 +7,11 @@ on: pull_request: branches: - ft-analytics - workflow_dispatch: + workflow_dispatch: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -22,7 +22,7 @@ jobs: run: npm run build test-and-coverage: - runs-on: ubuntu-latest + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -31,7 +31,15 @@ jobs: - name: Run Tests with Coverage run: npm test -- --coverage - + + - name: List coverage directory + run: ls -la coverage + + - name: Upload Coverage to Codecov + uses: codecov/codecov-action@v2 + with: + token: ${{ secrets.CODECOV_TOKEN }} + - name: List coverage directory run: ls -la coverage From cb4825bec52fb77dcbc75f72e792f08602138d34 Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 12:45:40 +0200 Subject: [PATCH 056/174] Update Check.test.tsx --- src/--test--/Check.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/--test--/Check.test.tsx b/src/--test--/Check.test.tsx index 3f80c96b..c0339c9d 100644 --- a/src/--test--/Check.test.tsx +++ b/src/--test--/Check.test.tsx @@ -7,7 +7,7 @@ describe("Test component", () => { render(); const heading = screen.getByText( - /If you want to part of the program click button below/i + /If you want to part of the program click button belows/i ); expect(heading).toBeTruthy(); From f4146255cfbac54daec8ab1b611afb035ab661d6 Mon Sep 17 00:00:00 2001 From: MUREKEZI Ismael <110295158+Ismaelmurekezi@users.noreply.github.com> Date: Wed, 26 Jun 2024 13:03:43 +0200 Subject: [PATCH 057/174] Update Check.test.tsx --- src/--test--/Check.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/--test--/Check.test.tsx b/src/--test--/Check.test.tsx index c0339c9d..3f80c96b 100644 --- a/src/--test--/Check.test.tsx +++ b/src/--test--/Check.test.tsx @@ -7,7 +7,7 @@ describe("Test component", () => { render(); const heading = screen.getByText( - /If you want to part of the program click button belows/i + /If you want to part of the program click button below/i ); expect(heading).toBeTruthy(); From 513cc4cd25ccc7079119df971405e306830163fb Mon Sep 17 00:00:00 2001 From: ismaelmurekezi Date: Wed, 26 Jun 2024 13:24:04 +0200 Subject: [PATCH 058/174] fixing bug --- .github/workflows/setup.yml | 12 +++--------- src/--test--/Check.test.tsx | 4 +--- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index 0c591d24..0e30863e 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -3,11 +3,11 @@ name: Setup and coverage badge on: push: branches: - - ft-analytics + - '*' pull_request: branches: - - ft-analytics - workflow_dispatch: + - '*' + jobs: build: @@ -40,10 +40,4 @@ jobs: with: token: ${{ secrets.CODECOV_TOKEN }} - - name: List coverage directory - run: ls -la coverage - - name: Upload Coverage to Codecov - uses: codecov/codecov-action@v2 - with: - token: ${{ secrets.CODECOV_TOKEN }} diff --git a/src/--test--/Check.test.tsx b/src/--test--/Check.test.tsx index 3f80c96b..3313f370 100644 --- a/src/--test--/Check.test.tsx +++ b/src/--test--/Check.test.tsx @@ -7,7 +7,7 @@ describe("Test component", () => { render(); const heading = screen.getByText( - /If you want to part of the program click button below/i + /If you want to part of the program click button belows/i ); expect(heading).toBeTruthy(); @@ -15,5 +15,3 @@ describe("Test component", () => { expect(button).toBeTruthy(); }); }); - - From 2be975f3f7e0f2b022a4ea4de1a8973d36db7279 Mon Sep 17 00:00:00 2001 From: ismaelmurekezi Date: Wed, 26 Jun 2024 13:28:50 +0200 Subject: [PATCH 059/174] testing badge percentage --- coverage/clover.xml | 4 ++-- coverage/lcov-report/Check.tsx.html | 2 +- coverage/lcov-report/index.html | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/coverage/clover.xml b/coverage/clover.xml index 5976b91b..9da272c7 100644 --- a/coverage/clover.xml +++ b/coverage/clover.xml @@ -1,6 +1,6 @@ - - + + diff --git a/coverage/lcov-report/Check.tsx.html b/coverage/lcov-report/Check.tsx.html index 99d6b591..d92c5674 100644 --- a/coverage/lcov-report/Check.tsx.html +++ b/coverage/lcov-report/Check.tsx.html @@ -109,7 +109,7 @@

All files Check.tsx