diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..a547bf36
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 00000000..7e0dd925
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,3 @@
+{
+ "recommendations": ["Vue.volar"]
+}
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..01688326
--- /dev/null
+++ b/README.md
@@ -0,0 +1,13 @@
+# Divicards
+
+Desktop Application for Path of Exile divination cards
+
+## Platform
+
+- [Tauri](https://tauri.app/)
+
+- Vue3
+
+## Recommended IDE Setup
+
+- [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar)
diff --git a/histoire.config.ts b/histoire.config.ts
new file mode 100644
index 00000000..dc4bb022
--- /dev/null
+++ b/histoire.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from 'histoire';
+import { HstVue } from '@histoire/plugin-vue';
+
+export default defineConfig({
+ plugins: [HstVue()],
+ setupFile: 'histoire.setup.ts',
+});
diff --git a/histoire.setup.ts b/histoire.setup.ts
new file mode 100644
index 00000000..408f57cc
--- /dev/null
+++ b/histoire.setup.ts
@@ -0,0 +1,6 @@
+import './src/style.css';
+
+export function setupVue3({ app }) {
+ // app.provide('test', 'hello')
+ // app.use(...)
+}
diff --git a/index.html b/index.html
new file mode 100644
index 00000000..143557b5
--- /dev/null
+++ b/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Vite + Vue + TS
+
+
+
+
+
+
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 00000000..74c78e0b
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,5318 @@
+{
+ "name": "divicards",
+ "version": "0.0.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "divicards",
+ "version": "0.0.0",
+ "dependencies": {
+ "@formkit/auto-animate": "^1.0.0-beta.3",
+ "@tauri-apps/api": "^1.1.0",
+ "vue": "^3.2.37"
+ },
+ "devDependencies": {
+ "@histoire/plugin-vue": "^0.11.6",
+ "@tauri-apps/cli": "^1.1.1",
+ "@vitejs/plugin-vue": "^3.1.0",
+ "histoire": "^0.11.6",
+ "typescript": "^4.6.4",
+ "vite": "^3.1.0",
+ "vue-tsc": "^1.0.9"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.19.6",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz",
+ "integrity": "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@codemirror/commands": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.1.2.tgz",
+ "integrity": "sha512-sO3jdX1s0pam6lIdeSJLMN3DQ6mPEbM4yLvyKkdqtmd/UDwhXA5+AwFJ89rRXm6vTeOXBsE5cAmlos/t7MJdgg==",
+ "dev": true,
+ "dependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "@lezer/common": "^1.0.0"
+ }
+ },
+ "node_modules/@codemirror/lang-json": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.1.tgz",
+ "integrity": "sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==",
+ "dev": true,
+ "dependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@lezer/json": "^1.0.0"
+ }
+ },
+ "node_modules/@codemirror/language": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.3.0.tgz",
+ "integrity": "sha512-6jOE5DEt6sKD46SXhn3xPbBehn+l48ACcA6Uxs2k+E2YNH9XGF5WdGMTYr2DlggfK4h0QZBK6zEb5S7lkTriWA==",
+ "dev": true,
+ "dependencies": {
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "@lezer/common": "^1.0.0",
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.0.0",
+ "style-mod": "^4.0.0"
+ }
+ },
+ "node_modules/@codemirror/lint": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.0.0.tgz",
+ "integrity": "sha512-nUUXcJW1Xp54kNs+a1ToPLK8MadO0rMTnJB8Zk4Z8gBdrN0kqV7uvUraU/T2yqg+grDNR38Vmy/MrhQN/RgwiA==",
+ "dev": true,
+ "dependencies": {
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "crelt": "^1.0.5"
+ }
+ },
+ "node_modules/@codemirror/state": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.1.2.tgz",
+ "integrity": "sha512-Mxff85Hp5va+zuj+H748KbubXjrinX/k28lj43H14T2D0+4kuvEFIEIO7hCEcvBT8ubZyIelt9yGOjj2MWOEQA==",
+ "dev": true
+ },
+ "node_modules/@codemirror/theme-one-dark": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.0.tgz",
+ "integrity": "sha512-AiTHtFRu8+vWT9wWUWDM+cog6ZwgivJogB1Tm/g40NIpLwph7AnmxrSzWfvJN5fBVufsuwBxecQCNmdcR5D7Aw==",
+ "dev": true,
+ "dependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "@lezer/highlight": "^1.0.0"
+ }
+ },
+ "node_modules/@codemirror/view": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.4.1.tgz",
+ "integrity": "sha512-QdBpD6E5HYx6YFXXhqwrRyQ83w7CxWZnchM4QpWBVkkmV7/oJT8N+yz2KAi2iRaLObc/aOf7C2RCQTO2yswF8A==",
+ "dev": true,
+ "dependencies": {
+ "@codemirror/state": "^6.0.0",
+ "style-mod": "^4.0.0",
+ "w3c-keyname": "^2.2.4"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.12.tgz",
+ "integrity": "sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz",
+ "integrity": "sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@formkit/auto-animate": {
+ "version": "1.0.0-beta.3",
+ "resolved": "https://registry.npmjs.org/@formkit/auto-animate/-/auto-animate-1.0.0-beta.3.tgz",
+ "integrity": "sha512-glsi+ytwQpxT/Ctr9GtcIfVr4dO6mJ04mQbNU8MFSdCdqMopHtyfU5Fib0+9lNFIeR0luY4/0NW95/2R5pKsag=="
+ },
+ "node_modules/@histoire/app": {
+ "version": "0.11.6",
+ "resolved": "https://registry.npmjs.org/@histoire/app/-/app-0.11.6.tgz",
+ "integrity": "sha512-TtWcMCZTFmHutyx+RcwAXAPc2CxDAgr5mwgB2CtRYwDC3VrM/aRqWHbZtxMjKrCbq08UXLzO1d+3VXy6Y9SvPA==",
+ "dev": true,
+ "dependencies": {
+ "@histoire/controls": "^0.11.6",
+ "@histoire/shared": "^0.11.6",
+ "@histoire/vendors": "^0.11.6",
+ "@types/flexsearch": "^0.7.3",
+ "flexsearch": "0.7.21",
+ "shiki": "0.10.1"
+ }
+ },
+ "node_modules/@histoire/controls": {
+ "version": "0.11.6",
+ "resolved": "https://registry.npmjs.org/@histoire/controls/-/controls-0.11.6.tgz",
+ "integrity": "sha512-aJrL6OqoS9D24rBIZal6yLp9GU7XhgAh2MD6PCVjRDd6KQEv9dQbcR/BInH0FpdN5nEwXqui8XC2kbITvpw5Tw==",
+ "dev": true,
+ "dependencies": {
+ "@codemirror/commands": "^6.1.1",
+ "@codemirror/lang-json": "^6.0.0",
+ "@codemirror/language": "^6.2.1",
+ "@codemirror/lint": "^6.0.0",
+ "@codemirror/state": "^6.1.2",
+ "@codemirror/theme-one-dark": "^6.1.0",
+ "@codemirror/view": "^6.3.0",
+ "@histoire/vendors": "^0.11.6"
+ }
+ },
+ "node_modules/@histoire/plugin-vue": {
+ "version": "0.11.6",
+ "resolved": "https://registry.npmjs.org/@histoire/plugin-vue/-/plugin-vue-0.11.6.tgz",
+ "integrity": "sha512-jS251u/vRmHpv+HcUenLEF+34VkGWlQZDJLFcB6cl9Ev5YyEVQnorOkB6po/lYZ9kcFyO3F/FymGT6izfWhbew==",
+ "dev": true,
+ "dependencies": {
+ "@histoire/controls": "^0.11.6",
+ "@histoire/shared": "^0.11.6",
+ "@histoire/vendors": "^0.11.6"
+ },
+ "peerDependencies": {
+ "histoire": "^0.11.6",
+ "vue": "^3.2.31"
+ }
+ },
+ "node_modules/@histoire/shared": {
+ "version": "0.11.6",
+ "resolved": "https://registry.npmjs.org/@histoire/shared/-/shared-0.11.6.tgz",
+ "integrity": "sha512-X3jsa3YQ4RrgvKRBde0RuUO3NWgJPZxsJeP0r69qbSQ7yeDQXKgbJ7VvmMg+9XZBCOBIYLPagwO5pezgmVzOzg==",
+ "dev": true,
+ "dependencies": {
+ "@types/fs-extra": "^9.0.13",
+ "@types/markdown-it": "^12.2.3",
+ "chokidar": "^3.5.3",
+ "pathe": "^0.2.0",
+ "picocolors": "^1.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^2.9.0 || ^3.0.0"
+ }
+ },
+ "node_modules/@histoire/vendors": {
+ "version": "0.11.6",
+ "resolved": "https://registry.npmjs.org/@histoire/vendors/-/vendors-0.11.6.tgz",
+ "integrity": "sha512-L2l29V7jAWJdde4Uu+4j5OMLCFzuyF97zli3iM3BxZ8MxcpJXGzGGZesE0wCPGdAINbvRH8pv9GkkveYc5LXeg==",
+ "dev": true
+ },
+ "node_modules/@lezer/common": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.1.tgz",
+ "integrity": "sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw==",
+ "dev": true
+ },
+ "node_modules/@lezer/highlight": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.1.2.tgz",
+ "integrity": "sha512-CAun1WR1glxG9ZdOokTZwXbcwB7PXkIEyZRUMFBVwSrhTcogWq634/ByNImrkUnQhjju6xsIaOBIxvcRJtplXQ==",
+ "dev": true,
+ "dependencies": {
+ "@lezer/common": "^1.0.0"
+ }
+ },
+ "node_modules/@lezer/json": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.0.tgz",
+ "integrity": "sha512-zbAuUY09RBzCoCA3lJ1+ypKw5WSNvLqGMtasdW6HvVOqZoCpPr8eWrsGnOVWGKGn8Rh21FnrKRVlJXrGAVUqRw==",
+ "dev": true,
+ "dependencies": {
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.0.0"
+ }
+ },
+ "node_modules/@lezer/lr": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.2.4.tgz",
+ "integrity": "sha512-L/52/oMJBFXXx8qBYF4UgktLP2geQ/qn5Fd8+5L/mqlLLCB9+qdKktFAtejd9FdFMaFx6lrP5rmLz4sN3Kplcg==",
+ "dev": true,
+ "dependencies": {
+ "@lezer/common": "^1.0.0"
+ }
+ },
+ "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/@polka/url": {
+ "version": "1.0.0-next.21",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
+ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
+ "dev": true
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
+ "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@tauri-apps/api": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.1.0.tgz",
+ "integrity": "sha512-n13pIqdPd3KtaMmmAcrU7BTfdMtIlGNnfZD0dNX8L4p8dgmuNyikm6JAA+yCpl9gqq6I8x5cV2Y0muqdgD0cWw==",
+ "engines": {
+ "node": ">= 12.22.0",
+ "npm": ">= 6.6.0",
+ "yarn": ">= 1.19.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/tauri"
+ }
+ },
+ "node_modules/@tauri-apps/cli": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.1.1.tgz",
+ "integrity": "sha512-80kjMEMPBwLYCp0tTKSquy90PHHGGBvZsneNr3B/mWxNsvjzA1C0vOyGJGFrJuT2OmkvrdvuJZ5mch5hL8O1Xg==",
+ "dev": true,
+ "bin": {
+ "tauri": "tauri.js"
+ },
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/tauri"
+ },
+ "optionalDependencies": {
+ "@tauri-apps/cli-darwin-arm64": "1.1.1",
+ "@tauri-apps/cli-darwin-x64": "1.1.1",
+ "@tauri-apps/cli-linux-arm-gnueabihf": "1.1.1",
+ "@tauri-apps/cli-linux-arm64-gnu": "1.1.1",
+ "@tauri-apps/cli-linux-arm64-musl": "1.1.1",
+ "@tauri-apps/cli-linux-x64-gnu": "1.1.1",
+ "@tauri-apps/cli-linux-x64-musl": "1.1.1",
+ "@tauri-apps/cli-win32-ia32-msvc": "1.1.1",
+ "@tauri-apps/cli-win32-x64-msvc": "1.1.1"
+ }
+ },
+ "node_modules/@tauri-apps/cli-darwin-arm64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.1.1.tgz",
+ "integrity": "sha512-qBG11ig525/qf0f5OQxn0ON3hT8YdpTfpa4Y4kVqBJhdW50R5fadPv6tv5Dpl2TS2X7nWh/zg5mEXYoCK3HZ9w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tauri-apps/cli-darwin-x64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.1.1.tgz",
+ "integrity": "sha512-M3dMsp78OdxisbTwAWGvy3jIb3uqThtQcUYVvqOu9LeEOHyldOBFDSht+6PTBpaJLAHFMQK2rmNxiWgigklJaA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.1.1.tgz",
+ "integrity": "sha512-LYlvdAd73cq+yTi6rw7j/DWIvDpeApwgQkIn+HYsNNeFhyFmABU7tmw+pekK3W3nHAkYAJ69Rl4ZdoxdNGKmHg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tauri-apps/cli-linux-arm64-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.1.1.tgz",
+ "integrity": "sha512-o/hbMQIKuFI7cTNpeQBHD/OCNJOBIci78faKms/t6AstLXx0QJuRHDk477Rg6VVy/I3BBKbyATALbmcTq+ti0A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tauri-apps/cli-linux-arm64-musl": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.1.1.tgz",
+ "integrity": "sha512-8Ci4qlDnXIp93XqUrtzFCBDatUzPHpZq7L3bociUbWpvy/bnlzxp1C/C+vwdc4uS1MiAp9v3BFgrU4i0f0Z3QQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tauri-apps/cli-linux-x64-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.1.1.tgz",
+ "integrity": "sha512-ES4Bkx2JAI8+dDNDJswhLS3yqt+yT/4C6UfGOPIHFxcXUh6fe36eUllrTt+HLRS9xTZbYnteJy7ebq2TqMkaxw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tauri-apps/cli-linux-x64-musl": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.1.1.tgz",
+ "integrity": "sha512-qrN1WOMAaDl+LE8P8iO0+DYlrWNTc9jIu/CsnVY/LImTn79ZPxEkcVBo0UGeKRI7f10TfvkVmLCBLxTz8QhEyA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tauri-apps/cli-win32-ia32-msvc": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.1.1.tgz",
+ "integrity": "sha512-vw7VOmrQlywHhFV3pf54udf2FRNj9dg9WP1gL0My55FnB+w+PWS9Ipm871kX5qepmChdnZHKq9fsqE2uTjX//Q==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tauri-apps/cli-win32-x64-msvc": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.1.1.tgz",
+ "integrity": "sha512-OukxlLLi3AoCN4ABnqCDTiiC7xJGWukAjrKCIx7wFISrLjNfsrnH7/UOzuopfGpZChSe2c+AamVmcpBfVsEmJA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@types/concat-stream": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz",
+ "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz",
+ "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==",
+ "dev": true
+ },
+ "node_modules/@types/flexsearch": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@types/flexsearch/-/flexsearch-0.7.3.tgz",
+ "integrity": "sha512-HXwADeHEP4exXkCIwy2n1+i0f1ilP1ETQOH5KDOugjkTFZPntWo0Gr8stZOaebkxsdx+k0X/K6obU/+it07ocg==",
+ "dev": true
+ },
+ "node_modules/@types/form-data": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz",
+ "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/fs-extra": {
+ "version": "9.0.13",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
+ "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/linkify-it": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz",
+ "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==",
+ "dev": true
+ },
+ "node_modules/@types/markdown-it": {
+ "version": "12.2.3",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz",
+ "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/linkify-it": "*",
+ "@types/mdurl": "*"
+ }
+ },
+ "node_modules/@types/mdurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz",
+ "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "18.11.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
+ "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==",
+ "dev": true
+ },
+ "node_modules/@types/qs": {
+ "version": "6.9.7",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
+ "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
+ "dev": true
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.1.2.tgz",
+ "integrity": "sha512-3zxKNlvA3oNaKDYX0NBclgxTQ1xaFdL7PzwF6zj9tGFziKwmBa3Q/6XcJQxudlT81WxDjEhHmevvIC4Orc1LhQ==",
+ "dev": true,
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^3.0.0",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@volar/language-core": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.0.9.tgz",
+ "integrity": "sha512-5Fty3slLet6svXiJw2YxhYeo6c7wFdtILrql5bZymYLM+HbiZtJbryW1YnUEKAP7MO9Mbeh+TNH4Z0HFxHgIqw==",
+ "dev": true,
+ "dependencies": {
+ "@volar/source-map": "1.0.9",
+ "@vue/reactivity": "^3.2.40",
+ "muggle-string": "^0.1.0"
+ }
+ },
+ "node_modules/@volar/source-map": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.0.9.tgz",
+ "integrity": "sha512-fazB/vy5ZEJ3yKx4fabJyGNI3CBkdLkfEIRVu6+1P3VixK0Mn+eqyUIkLBrzGYaeFM3GybhCLCvsVdNz0Fu/CQ==",
+ "dev": true,
+ "dependencies": {
+ "muggle-string": "^0.1.0"
+ }
+ },
+ "node_modules/@volar/typescript": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.0.9.tgz",
+ "integrity": "sha512-dVziu+ShQUWuMukM6bvK2v2O446/gG6l1XkTh2vfkccw1IzjfbiP1TWQoNo1ipTfZOtu5YJGYAx+o5HNrGXWfQ==",
+ "dev": true,
+ "dependencies": {
+ "@volar/language-core": "1.0.9"
+ }
+ },
+ "node_modules/@volar/vue-language-core": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@volar/vue-language-core/-/vue-language-core-1.0.9.tgz",
+ "integrity": "sha512-tofNoR8ShPFenHT1YVMuvoXtXWwoQE+fiXVqSmW0dSKZqEDjWQ3YeXSd0a6aqyKaIbvR7kWWGp34WbpQlwf9Ww==",
+ "dev": true,
+ "dependencies": {
+ "@volar/language-core": "1.0.9",
+ "@volar/source-map": "1.0.9",
+ "@vue/compiler-dom": "^3.2.40",
+ "@vue/compiler-sfc": "^3.2.40",
+ "@vue/reactivity": "^3.2.40",
+ "@vue/shared": "^3.2.40",
+ "minimatch": "^5.1.0",
+ "vue-template-compiler": "^2.7.10"
+ }
+ },
+ "node_modules/@volar/vue-typescript": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-1.0.9.tgz",
+ "integrity": "sha512-ZLe4y9YNbviACa7uAMCilzxA76gbbSlKfjspXBzk6fCobd8QCIig+VyDYcjANIlm2HhgSCX8jYTzhCKlegh4mw==",
+ "dev": true,
+ "dependencies": {
+ "@volar/typescript": "1.0.9",
+ "@volar/vue-language-core": "1.0.9"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.41.tgz",
+ "integrity": "sha512-oA4mH6SA78DT+96/nsi4p9DX97PHcNROxs51lYk7gb9Z4BPKQ3Mh+BLn6CQZBw857Iuhu28BfMSRHAlPvD4vlw==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.41",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.41.tgz",
+ "integrity": "sha512-xe5TbbIsonjENxJsYRbDJvthzqxLNk+tb3d/c47zgREDa/PCp6/Y4gC/skM4H6PIuX5DAxm7fFJdbjjUH2QTMw==",
+ "dependencies": {
+ "@vue/compiler-core": "3.2.41",
+ "@vue/shared": "3.2.41"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.41.tgz",
+ "integrity": "sha512-+1P2m5kxOeaxVmJNXnBskAn3BenbTmbxBxWOtBq3mQTCokIreuMULFantBUclP0+KnzNCMOvcnKinqQZmiOF8w==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.41",
+ "@vue/compiler-dom": "3.2.41",
+ "@vue/compiler-ssr": "3.2.41",
+ "@vue/reactivity-transform": "3.2.41",
+ "@vue/shared": "3.2.41",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7",
+ "postcss": "^8.1.10",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.41.tgz",
+ "integrity": "sha512-Y5wPiNIiaMz/sps8+DmhaKfDm1xgj6GrH99z4gq2LQenfVQcYXmHIOBcs5qPwl7jaW3SUQWjkAPKMfQemEQZwQ==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.41",
+ "@vue/shared": "3.2.41"
+ }
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.41.tgz",
+ "integrity": "sha512-9JvCnlj8uc5xRiQGZ28MKGjuCoPhhTwcoAdv3o31+cfGgonwdPNuvqAXLhlzu4zwqavFEG5tvaoINQEfxz+l6g==",
+ "dependencies": {
+ "@vue/shared": "3.2.41"
+ }
+ },
+ "node_modules/@vue/reactivity-transform": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.41.tgz",
+ "integrity": "sha512-mK5+BNMsL4hHi+IR3Ft/ho6Za+L3FA5j8WvreJ7XzHrqkPq8jtF/SMo7tuc9gHjLDwKZX1nP1JQOKo9IEAn54A==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.41",
+ "@vue/shared": "3.2.41",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.41.tgz",
+ "integrity": "sha512-0LBBRwqnI0p4FgIkO9q2aJBBTKDSjzhnxrxHYengkAF6dMOjeAIZFDADAlcf2h3GDALWnblbeprYYpItiulSVQ==",
+ "dependencies": {
+ "@vue/reactivity": "3.2.41",
+ "@vue/shared": "3.2.41"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.41.tgz",
+ "integrity": "sha512-U7zYuR1NVIP8BL6jmOqmapRAHovEFp7CSw4pR2FacqewXNGqZaRfHoNLQsqQvVQ8yuZNZtxSZy0FFyC70YXPpA==",
+ "dependencies": {
+ "@vue/runtime-core": "3.2.41",
+ "@vue/shared": "3.2.41",
+ "csstype": "^2.6.8"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.41.tgz",
+ "integrity": "sha512-7YHLkfJdTlsZTV0ae5sPwl9Gn/EGr2hrlbcS/8naXm2CDpnKUwC68i1wGlrYAfIgYWL7vUZwk2GkYLQH5CvFig==",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.2.41",
+ "@vue/shared": "3.2.41"
+ },
+ "peerDependencies": {
+ "vue": "3.2.41"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.41.tgz",
+ "integrity": "sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw=="
+ },
+ "node_modules/acorn": {
+ "version": "8.8.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
+ "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "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": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
+ "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==",
+ "dev": true
+ },
+ "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/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/birpc": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.1.1.tgz",
+ "integrity": "sha512-B64AGL4ug2IS2jvV/zjTYDD1L+2gOJTT7Rv+VaK7KVQtQOo/xZbCDsh7g727ipckmU+QJYRqo5RcifVr0Kgcmg==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "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.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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/capital-case": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz",
+ "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case-first": "^2.0.2"
+ }
+ },
+ "node_modules/caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
+ "dev": true
+ },
+ "node_modules/change-case": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz",
+ "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==",
+ "dev": true,
+ "dependencies": {
+ "camel-case": "^4.1.2",
+ "capital-case": "^1.0.4",
+ "constant-case": "^3.0.4",
+ "dot-case": "^3.0.4",
+ "header-case": "^2.0.4",
+ "no-case": "^3.0.4",
+ "param-case": "^3.0.4",
+ "pascal-case": "^3.1.2",
+ "path-case": "^3.0.4",
+ "sentence-case": "^3.0.4",
+ "snake-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "engines": [
+ "node >= 0.8"
+ ],
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "node_modules/connect": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
+ "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "2.6.9",
+ "finalhandler": "1.1.2",
+ "parseurl": "~1.3.3",
+ "utils-merge": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/constant-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz",
+ "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case": "^2.0.2"
+ }
+ },
+ "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
+ },
+ "node_modules/crelt": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz",
+ "integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==",
+ "dev": true
+ },
+ "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/csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
+ },
+ "node_modules/de-indent": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
+ "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
+ "dev": true
+ },
+ "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/defu": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.0.tgz",
+ "integrity": "sha512-pOFYRTIhoKujrmbTRhcW5lYQLBXw/dlTwfI8IguF1QCDJOcJzNH1w+YFjxqy6BAuJrClTy6MUE8q+oKJ2FLsIw==",
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/diacritics": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/diacritics/-/diacritics-1.3.0.tgz",
+ "integrity": "sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==",
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "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/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/entities": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
+ "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.12.tgz",
+ "integrity": "sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==",
+ "dev": true,
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.15.12",
+ "@esbuild/linux-loong64": "0.15.12",
+ "esbuild-android-64": "0.15.12",
+ "esbuild-android-arm64": "0.15.12",
+ "esbuild-darwin-64": "0.15.12",
+ "esbuild-darwin-arm64": "0.15.12",
+ "esbuild-freebsd-64": "0.15.12",
+ "esbuild-freebsd-arm64": "0.15.12",
+ "esbuild-linux-32": "0.15.12",
+ "esbuild-linux-64": "0.15.12",
+ "esbuild-linux-arm": "0.15.12",
+ "esbuild-linux-arm64": "0.15.12",
+ "esbuild-linux-mips64le": "0.15.12",
+ "esbuild-linux-ppc64le": "0.15.12",
+ "esbuild-linux-riscv64": "0.15.12",
+ "esbuild-linux-s390x": "0.15.12",
+ "esbuild-netbsd-64": "0.15.12",
+ "esbuild-openbsd-64": "0.15.12",
+ "esbuild-sunos-64": "0.15.12",
+ "esbuild-windows-32": "0.15.12",
+ "esbuild-windows-64": "0.15.12",
+ "esbuild-windows-arm64": "0.15.12"
+ }
+ },
+ "node_modules/esbuild-android-64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz",
+ "integrity": "sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-android-arm64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz",
+ "integrity": "sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-darwin-64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz",
+ "integrity": "sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-darwin-arm64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz",
+ "integrity": "sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-freebsd-64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz",
+ "integrity": "sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-freebsd-arm64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz",
+ "integrity": "sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-32": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz",
+ "integrity": "sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz",
+ "integrity": "sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-arm": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz",
+ "integrity": "sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-arm64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz",
+ "integrity": "sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-mips64le": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz",
+ "integrity": "sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-ppc64le": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz",
+ "integrity": "sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-riscv64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz",
+ "integrity": "sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-s390x": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz",
+ "integrity": "sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-netbsd-64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz",
+ "integrity": "sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-openbsd-64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz",
+ "integrity": "sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-sunos-64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz",
+ "integrity": "sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-32": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz",
+ "integrity": "sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz",
+ "integrity": "sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-arm64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz",
+ "integrity": "sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "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/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/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-glob": {
+ "version": "3.2.12",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
+ "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "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"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+ "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "statuses": "~1.5.0",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/flexsearch": {
+ "version": "0.7.21",
+ "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.21.tgz",
+ "integrity": "sha512-W7cHV7Hrwjid6lWmy0IhsWDFQboWSng25U3VVywpHOTJnnAZNPScog67G+cVpeX9f7yDD21ih0WDrMMT+JoaYg==",
+ "dev": true
+ },
+ "node_modules/form-data": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
+ "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
+ "dev": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 0.12"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "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.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
+ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-port": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
+ "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/globby": {
+ "version": "13.1.2",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz",
+ "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==",
+ "dev": true,
+ "dependencies": {
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.11",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+ "dev": true
+ },
+ "node_modules/gray-matter": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
+ "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
+ "dev": true,
+ "dependencies": {
+ "js-yaml": "^3.13.1",
+ "kind-of": "^6.0.2",
+ "section-matter": "^1.0.0",
+ "strip-bom-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/happy-dom": {
+ "version": "2.55.0",
+ "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-2.55.0.tgz",
+ "integrity": "sha512-CHDMBRau+l/yKQL+ANmexRAC8FRCuYbXRSpu/GbLVyfqkrlBzV7OSNd5C5HZ+pVFtFv1bFJYC5r+xrqgGQuq5w==",
+ "dev": true,
+ "dependencies": {
+ "css.escape": "^1.5.1",
+ "he": "^1.2.0",
+ "node-fetch": "^2.x.x",
+ "sync-request": "^6.1.0",
+ "webidl-conversions": "^7.0.0",
+ "whatwg-encoding": "^2.0.0",
+ "whatwg-mimetype": "^3.0.0"
+ }
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "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_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/header-case": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz",
+ "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==",
+ "dev": true,
+ "dependencies": {
+ "capital-case": "^1.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/histoire": {
+ "version": "0.11.6",
+ "resolved": "https://registry.npmjs.org/histoire/-/histoire-0.11.6.tgz",
+ "integrity": "sha512-e8q2xjOoRPjwsePzYolWoOztrqI5hPkE2HxjbMNyRYUI2JdHmwuj6pI+lKoJRckIrwi9hCMuLQCPzzm8Ocdplg==",
+ "dev": true,
+ "dependencies": {
+ "@histoire/app": "^0.11.6",
+ "@histoire/controls": "^0.11.6",
+ "@histoire/shared": "^0.11.6",
+ "@histoire/vendors": "^0.11.6",
+ "@types/flexsearch": "^0.7.3",
+ "@types/markdown-it": "^12.2.3",
+ "birpc": "^0.1.1",
+ "change-case": "^4.1.2",
+ "chokidar": "^3.5.3",
+ "connect": "^3.7.0",
+ "defu": "^6.0.0",
+ "diacritics": "^1.3.0",
+ "flexsearch": "0.7.21",
+ "fs-extra": "^10.0.1",
+ "globby": "^13.1.1",
+ "gray-matter": "^4.0.3",
+ "happy-dom": "^2.55.0",
+ "jiti": "^1.16.0",
+ "markdown-it": "^12.3.2",
+ "markdown-it-anchor": "^8.6.2",
+ "markdown-it-attrs": "^4.1.3",
+ "markdown-it-emoji": "^2.0.0",
+ "micromatch": "^4.0.5",
+ "mrmime": "^1.0.0",
+ "pathe": "^0.2.0",
+ "picocolors": "^1.0.0",
+ "sade": "^1.8.1",
+ "shiki": "0.10.1",
+ "sirv": "^2.0.2",
+ "tinypool": "^0.1.2",
+ "vite-node": "0.23.4",
+ "vite-plugin-inspect": "^0.7.5"
+ },
+ "bin": {
+ "histoire": "bin.mjs"
+ },
+ "peerDependencies": {
+ "vite": "^2.9.0 || ^3.0.0"
+ }
+ },
+ "node_modules/http-basic": {
+ "version": "8.1.3",
+ "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz",
+ "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==",
+ "dev": true,
+ "dependencies": {
+ "caseless": "^0.12.0",
+ "concat-stream": "^1.6.2",
+ "http-response-object": "^3.0.1",
+ "parse-cache-control": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/http-response-object": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz",
+ "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "^10.0.3"
+ }
+ },
+ "node_modules/http-response-object/node_modules/@types/node": {
+ "version": "10.17.60",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz",
+ "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==",
+ "dev": true
+ },
+ "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/ignore": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
+ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "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
+ },
+ "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": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
+ "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.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==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "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
+ },
+ "node_modules/jiti": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.16.0.tgz",
+ "integrity": "sha512-L3BJStEf5NAqNuzrpfbN71dp43mYIcBUlCRea/vdyv5dW/AYa1d4bpelko4SHdY3I6eN9Wzyasxirj1/vv5kmg==",
+ "dev": true,
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "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": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
+ "dev": true
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/kolorist": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.6.0.tgz",
+ "integrity": "sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==",
+ "dev": true
+ },
+ "node_modules/linkify-it": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
+ "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
+ "dev": true,
+ "dependencies": {
+ "uc.micro": "^1.0.1"
+ }
+ },
+ "node_modules/lower-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
+ "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/markdown-it": {
+ "version": "12.3.2",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
+ "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "~2.1.0",
+ "linkify-it": "^3.0.1",
+ "mdurl": "^1.0.1",
+ "uc.micro": "^1.0.5"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.js"
+ }
+ },
+ "node_modules/markdown-it-anchor": {
+ "version": "8.6.5",
+ "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.5.tgz",
+ "integrity": "sha512-PI1qEHHkTNWT+X6Ip9w+paonfIQ+QZP9sCeMYi47oqhH+EsW8CrJ8J7CzV19QVOj6il8ATGbK2nTECj22ZHGvQ==",
+ "dev": true,
+ "peerDependencies": {
+ "@types/markdown-it": "*",
+ "markdown-it": "*"
+ }
+ },
+ "node_modules/markdown-it-attrs": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.1.4.tgz",
+ "integrity": "sha512-53Zfv8PTb6rlVFDlD106xcZHKBSsRZKJ2IW/rTxEJBEVbVaoxaNsmRkG0HXfbHl2SK8kaxZ2QKqdthWy/QBwmA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "peerDependencies": {
+ "markdown-it": ">= 9.0.0"
+ }
+ },
+ "node_modules/markdown-it-emoji": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-2.0.2.tgz",
+ "integrity": "sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ==",
+ "dev": true
+ },
+ "node_modules/markdown-it/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/mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
+ "dev": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
+ "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mlly": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.16.tgz",
+ "integrity": "sha512-LaJ8yuh4v0zEmge/g3c7jjFlhoCPfQn6RCjXgm9A0Qiuochq4BcuOxVfWmdnCoLTlg2MV+hqhOek+W2OhG0Lwg==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.8.0",
+ "pathe": "^0.3.8",
+ "pkg-types": "^0.3.5",
+ "ufo": "^0.8.5"
+ }
+ },
+ "node_modules/mlly/node_modules/pathe": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz",
+ "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==",
+ "dev": true
+ },
+ "node_modules/mri": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
+ "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mrmime": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz",
+ "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/muggle-string": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.1.0.tgz",
+ "integrity": "sha512-Tr1knR3d2mKvvWthlk7202rywKbiOm4rVFLsfAaSIhJ6dt9o47W4S+JMtWhd/PW9Wrdew2/S2fSvhz3E2gkfEg==",
+ "dev": true
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/no-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
+ "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
+ "dev": true,
+ "dependencies": {
+ "lower-case": "^2.0.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "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/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+ "dev": true,
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/param-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
+ "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
+ "dev": true,
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/parse-cache-control": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz",
+ "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==",
+ "dev": true
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/pascal-case": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
+ "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/path-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz",
+ "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==",
+ "dev": true,
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pathe": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.2.0.tgz",
+ "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pkg-types": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-0.3.6.tgz",
+ "integrity": "sha512-uQZutkkh6axl1GxDm5/+8ivVdwuJ5pyDGqJeSiIWIUWIqYiK3p9QKozN/Rv6eVvFoeSWkN1uoYeSDBwwBJBtbg==",
+ "dev": true,
+ "dependencies": {
+ "jsonc-parser": "^3.2.0",
+ "mlly": "^0.5.16",
+ "pathe": "^0.3.9"
+ }
+ },
+ "node_modules/pkg-types/node_modules/pathe": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz",
+ "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==",
+ "dev": true
+ },
+ "node_modules/postcss": {
+ "version": "8.4.18",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz",
+ "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.4",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "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
+ },
+ "node_modules/promise": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz",
+ "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==",
+ "dev": true,
+ "dependencies": {
+ "asap": "~2.0.6"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dev": true,
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "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"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.9.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "2.78.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz",
+ "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==",
+ "dev": true,
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/sade": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
+ "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
+ "dev": true,
+ "dependencies": {
+ "mri": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "node_modules/section-matter": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
+ "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/sentence-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz",
+ "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case-first": "^2.0.2"
+ }
+ },
+ "node_modules/shiki": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.10.1.tgz",
+ "integrity": "sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==",
+ "dev": true,
+ "dependencies": {
+ "jsonc-parser": "^3.0.0",
+ "vscode-oniguruma": "^1.6.1",
+ "vscode-textmate": "5.2.0"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/sirv": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz",
+ "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==",
+ "dev": true,
+ "dependencies": {
+ "@polka/url": "^1.0.0-next.20",
+ "mrmime": "^1.0.0",
+ "totalist": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/slash": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
+ "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/snake-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
+ "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
+ "dev": true,
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
+ },
+ "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/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "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": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/strip-bom-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
+ "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/style-mod": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz",
+ "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==",
+ "dev": true
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/sync-request": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz",
+ "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==",
+ "dev": true,
+ "dependencies": {
+ "http-response-object": "^3.0.1",
+ "sync-rpc": "^1.2.1",
+ "then-request": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/sync-rpc": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz",
+ "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==",
+ "dev": true,
+ "dependencies": {
+ "get-port": "^3.1.0"
+ }
+ },
+ "node_modules/then-request": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz",
+ "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==",
+ "dev": true,
+ "dependencies": {
+ "@types/concat-stream": "^1.6.0",
+ "@types/form-data": "0.0.33",
+ "@types/node": "^8.0.0",
+ "@types/qs": "^6.2.31",
+ "caseless": "~0.12.0",
+ "concat-stream": "^1.6.0",
+ "form-data": "^2.2.0",
+ "http-basic": "^8.1.1",
+ "http-response-object": "^3.0.1",
+ "promise": "^8.0.0",
+ "qs": "^6.4.0"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/then-request/node_modules/@types/node": {
+ "version": "8.10.66",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz",
+ "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==",
+ "dev": true
+ },
+ "node_modules/tinypool": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.1.3.tgz",
+ "integrity": "sha512-2IfcQh7CP46XGWGGbdyO4pjcKqsmVqFAPcXfPxcPXmOWt9cYkTP9HcDmGgsfijYoAEc4z9qcpM/BaBz46Y9/CQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/totalist": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz",
+ "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==",
+ "dev": true,
+ "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/tslib": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
+ "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
+ "dev": true
+ },
+ "node_modules/typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+ "dev": true
+ },
+ "node_modules/typescript": {
+ "version": "4.8.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
+ "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
+ "node_modules/uc.micro": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
+ "dev": true
+ },
+ "node_modules/ufo": {
+ "version": "0.8.6",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz",
+ "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==",
+ "dev": true
+ },
+ "node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/upper-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz",
+ "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/upper-case-first": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz",
+ "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "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
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/vite": {
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.8.tgz",
+ "integrity": "sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==",
+ "dev": true,
+ "dependencies": {
+ "esbuild": "^0.15.9",
+ "postcss": "^8.4.16",
+ "resolve": "^1.22.1",
+ "rollup": "~2.78.0"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ },
+ "peerDependencies": {
+ "less": "*",
+ "sass": "*",
+ "stylus": "*",
+ "terser": "^5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "less": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-node": {
+ "version": "0.23.4",
+ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.23.4.tgz",
+ "integrity": "sha512-8VuDGwTWIvwPYcbw8ZycMlwAwqCmqZfLdFrDK75+o+6bWYpede58k6AAXN9ioU+icW82V4u1MzkxLVhhIoQ9xA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4",
+ "mlly": "^0.5.14",
+ "pathe": "^0.2.0",
+ "vite": "^2.9.12 || ^3.0.0-0"
+ },
+ "bin": {
+ "vite-node": "vite-node.mjs"
+ },
+ "engines": {
+ "node": ">=v14.16.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/vite-node/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-node/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/vite-plugin-inspect": {
+ "version": "0.7.7",
+ "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.7.7.tgz",
+ "integrity": "sha512-2IlnshZuv0RHtUwMBNR8cW//VDLVKfBOG+JY9qqeL2TaNdet5m+Rw/Zxp63vtcX5FNhWO1fYCK1ENRv6PCOevg==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^5.0.2",
+ "debug": "^4.3.4",
+ "fs-extra": "^10.1.0",
+ "kolorist": "^1.6.0",
+ "sirv": "^2.0.2",
+ "ufo": "^0.8.6"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "vite": "^3.1.0"
+ }
+ },
+ "node_modules/vite-plugin-inspect/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-plugin-inspect/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/vscode-oniguruma": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz",
+ "integrity": "sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==",
+ "dev": true
+ },
+ "node_modules/vscode-textmate": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz",
+ "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==",
+ "dev": true
+ },
+ "node_modules/vue": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.41.tgz",
+ "integrity": "sha512-uuuvnrDXEeZ9VUPljgHkqB5IaVO8SxhPpqF2eWOukVrBnRBx2THPSGQBnVRt0GrIG1gvCmFXMGbd7FqcT1ixNQ==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.41",
+ "@vue/compiler-sfc": "3.2.41",
+ "@vue/runtime-dom": "3.2.41",
+ "@vue/server-renderer": "3.2.41",
+ "@vue/shared": "3.2.41"
+ }
+ },
+ "node_modules/vue-template-compiler": {
+ "version": "2.7.13",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.13.tgz",
+ "integrity": "sha512-jYM6TClwDS9YqP48gYrtAtaOhRKkbYmbzE+Q51gX5YDr777n7tNI/IZk4QV4l/PjQPNh/FVa/E92sh/RqKMrog==",
+ "dev": true,
+ "dependencies": {
+ "de-indent": "^1.0.2",
+ "he": "^1.2.0"
+ }
+ },
+ "node_modules/vue-tsc": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.0.9.tgz",
+ "integrity": "sha512-vRmHD1K6DmBymNhoHjQy/aYKTRQNLGOu2/ESasChG9Vy113K6CdP0NlhR0bzgFJfv2eFB9Ez/9L5kIciUajBxQ==",
+ "dev": true,
+ "dependencies": {
+ "@volar/vue-language-core": "1.0.9",
+ "@volar/vue-typescript": "1.0.9"
+ },
+ "bin": {
+ "vue-tsc": "bin/vue-tsc.js"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ }
+ },
+ "node_modules/w3c-keyname": {
+ "version": "2.2.6",
+ "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz",
+ "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==",
+ "dev": true
+ },
+ "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/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-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/whatwg-url/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
+ }
+ },
+ "dependencies": {
+ "@babel/parser": {
+ "version": "7.19.6",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz",
+ "integrity": "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA=="
+ },
+ "@codemirror/commands": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.1.2.tgz",
+ "integrity": "sha512-sO3jdX1s0pam6lIdeSJLMN3DQ6mPEbM4yLvyKkdqtmd/UDwhXA5+AwFJ89rRXm6vTeOXBsE5cAmlos/t7MJdgg==",
+ "dev": true,
+ "requires": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "@lezer/common": "^1.0.0"
+ }
+ },
+ "@codemirror/lang-json": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.1.tgz",
+ "integrity": "sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==",
+ "dev": true,
+ "requires": {
+ "@codemirror/language": "^6.0.0",
+ "@lezer/json": "^1.0.0"
+ }
+ },
+ "@codemirror/language": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.3.0.tgz",
+ "integrity": "sha512-6jOE5DEt6sKD46SXhn3xPbBehn+l48ACcA6Uxs2k+E2YNH9XGF5WdGMTYr2DlggfK4h0QZBK6zEb5S7lkTriWA==",
+ "dev": true,
+ "requires": {
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "@lezer/common": "^1.0.0",
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.0.0",
+ "style-mod": "^4.0.0"
+ }
+ },
+ "@codemirror/lint": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.0.0.tgz",
+ "integrity": "sha512-nUUXcJW1Xp54kNs+a1ToPLK8MadO0rMTnJB8Zk4Z8gBdrN0kqV7uvUraU/T2yqg+grDNR38Vmy/MrhQN/RgwiA==",
+ "dev": true,
+ "requires": {
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "crelt": "^1.0.5"
+ }
+ },
+ "@codemirror/state": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.1.2.tgz",
+ "integrity": "sha512-Mxff85Hp5va+zuj+H748KbubXjrinX/k28lj43H14T2D0+4kuvEFIEIO7hCEcvBT8ubZyIelt9yGOjj2MWOEQA==",
+ "dev": true
+ },
+ "@codemirror/theme-one-dark": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.0.tgz",
+ "integrity": "sha512-AiTHtFRu8+vWT9wWUWDM+cog6ZwgivJogB1Tm/g40NIpLwph7AnmxrSzWfvJN5fBVufsuwBxecQCNmdcR5D7Aw==",
+ "dev": true,
+ "requires": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "@lezer/highlight": "^1.0.0"
+ }
+ },
+ "@codemirror/view": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.4.1.tgz",
+ "integrity": "sha512-QdBpD6E5HYx6YFXXhqwrRyQ83w7CxWZnchM4QpWBVkkmV7/oJT8N+yz2KAi2iRaLObc/aOf7C2RCQTO2yswF8A==",
+ "dev": true,
+ "requires": {
+ "@codemirror/state": "^6.0.0",
+ "style-mod": "^4.0.0",
+ "w3c-keyname": "^2.2.4"
+ }
+ },
+ "@esbuild/android-arm": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.12.tgz",
+ "integrity": "sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-loong64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz",
+ "integrity": "sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==",
+ "dev": true,
+ "optional": true
+ },
+ "@formkit/auto-animate": {
+ "version": "1.0.0-beta.3",
+ "resolved": "https://registry.npmjs.org/@formkit/auto-animate/-/auto-animate-1.0.0-beta.3.tgz",
+ "integrity": "sha512-glsi+ytwQpxT/Ctr9GtcIfVr4dO6mJ04mQbNU8MFSdCdqMopHtyfU5Fib0+9lNFIeR0luY4/0NW95/2R5pKsag=="
+ },
+ "@histoire/app": {
+ "version": "0.11.6",
+ "resolved": "https://registry.npmjs.org/@histoire/app/-/app-0.11.6.tgz",
+ "integrity": "sha512-TtWcMCZTFmHutyx+RcwAXAPc2CxDAgr5mwgB2CtRYwDC3VrM/aRqWHbZtxMjKrCbq08UXLzO1d+3VXy6Y9SvPA==",
+ "dev": true,
+ "requires": {
+ "@histoire/controls": "^0.11.6",
+ "@histoire/shared": "^0.11.6",
+ "@histoire/vendors": "^0.11.6",
+ "@types/flexsearch": "^0.7.3",
+ "flexsearch": "0.7.21",
+ "shiki": "0.10.1"
+ }
+ },
+ "@histoire/controls": {
+ "version": "0.11.6",
+ "resolved": "https://registry.npmjs.org/@histoire/controls/-/controls-0.11.6.tgz",
+ "integrity": "sha512-aJrL6OqoS9D24rBIZal6yLp9GU7XhgAh2MD6PCVjRDd6KQEv9dQbcR/BInH0FpdN5nEwXqui8XC2kbITvpw5Tw==",
+ "dev": true,
+ "requires": {
+ "@codemirror/commands": "^6.1.1",
+ "@codemirror/lang-json": "^6.0.0",
+ "@codemirror/language": "^6.2.1",
+ "@codemirror/lint": "^6.0.0",
+ "@codemirror/state": "^6.1.2",
+ "@codemirror/theme-one-dark": "^6.1.0",
+ "@codemirror/view": "^6.3.0",
+ "@histoire/vendors": "^0.11.6"
+ }
+ },
+ "@histoire/plugin-vue": {
+ "version": "0.11.6",
+ "resolved": "https://registry.npmjs.org/@histoire/plugin-vue/-/plugin-vue-0.11.6.tgz",
+ "integrity": "sha512-jS251u/vRmHpv+HcUenLEF+34VkGWlQZDJLFcB6cl9Ev5YyEVQnorOkB6po/lYZ9kcFyO3F/FymGT6izfWhbew==",
+ "dev": true,
+ "requires": {
+ "@histoire/controls": "^0.11.6",
+ "@histoire/shared": "^0.11.6",
+ "@histoire/vendors": "^0.11.6"
+ }
+ },
+ "@histoire/shared": {
+ "version": "0.11.6",
+ "resolved": "https://registry.npmjs.org/@histoire/shared/-/shared-0.11.6.tgz",
+ "integrity": "sha512-X3jsa3YQ4RrgvKRBde0RuUO3NWgJPZxsJeP0r69qbSQ7yeDQXKgbJ7VvmMg+9XZBCOBIYLPagwO5pezgmVzOzg==",
+ "dev": true,
+ "requires": {
+ "@types/fs-extra": "^9.0.13",
+ "@types/markdown-it": "^12.2.3",
+ "chokidar": "^3.5.3",
+ "pathe": "^0.2.0",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "@histoire/vendors": {
+ "version": "0.11.6",
+ "resolved": "https://registry.npmjs.org/@histoire/vendors/-/vendors-0.11.6.tgz",
+ "integrity": "sha512-L2l29V7jAWJdde4Uu+4j5OMLCFzuyF97zli3iM3BxZ8MxcpJXGzGGZesE0wCPGdAINbvRH8pv9GkkveYc5LXeg==",
+ "dev": true
+ },
+ "@lezer/common": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.1.tgz",
+ "integrity": "sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw==",
+ "dev": true
+ },
+ "@lezer/highlight": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.1.2.tgz",
+ "integrity": "sha512-CAun1WR1glxG9ZdOokTZwXbcwB7PXkIEyZRUMFBVwSrhTcogWq634/ByNImrkUnQhjju6xsIaOBIxvcRJtplXQ==",
+ "dev": true,
+ "requires": {
+ "@lezer/common": "^1.0.0"
+ }
+ },
+ "@lezer/json": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.0.tgz",
+ "integrity": "sha512-zbAuUY09RBzCoCA3lJ1+ypKw5WSNvLqGMtasdW6HvVOqZoCpPr8eWrsGnOVWGKGn8Rh21FnrKRVlJXrGAVUqRw==",
+ "dev": true,
+ "requires": {
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.0.0"
+ }
+ },
+ "@lezer/lr": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.2.4.tgz",
+ "integrity": "sha512-L/52/oMJBFXXx8qBYF4UgktLP2geQ/qn5Fd8+5L/mqlLLCB9+qdKktFAtejd9FdFMaFx6lrP5rmLz4sN3Kplcg==",
+ "dev": true,
+ "requires": {
+ "@lezer/common": "^1.0.0"
+ }
+ },
+ "@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,
+ "requires": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ }
+ },
+ "@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
+ },
+ "@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,
+ "requires": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ }
+ },
+ "@polka/url": {
+ "version": "1.0.0-next.21",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
+ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
+ "dev": true
+ },
+ "@rollup/pluginutils": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
+ "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
+ "dev": true,
+ "requires": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "@tauri-apps/api": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.1.0.tgz",
+ "integrity": "sha512-n13pIqdPd3KtaMmmAcrU7BTfdMtIlGNnfZD0dNX8L4p8dgmuNyikm6JAA+yCpl9gqq6I8x5cV2Y0muqdgD0cWw=="
+ },
+ "@tauri-apps/cli": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.1.1.tgz",
+ "integrity": "sha512-80kjMEMPBwLYCp0tTKSquy90PHHGGBvZsneNr3B/mWxNsvjzA1C0vOyGJGFrJuT2OmkvrdvuJZ5mch5hL8O1Xg==",
+ "dev": true,
+ "requires": {
+ "@tauri-apps/cli-darwin-arm64": "1.1.1",
+ "@tauri-apps/cli-darwin-x64": "1.1.1",
+ "@tauri-apps/cli-linux-arm-gnueabihf": "1.1.1",
+ "@tauri-apps/cli-linux-arm64-gnu": "1.1.1",
+ "@tauri-apps/cli-linux-arm64-musl": "1.1.1",
+ "@tauri-apps/cli-linux-x64-gnu": "1.1.1",
+ "@tauri-apps/cli-linux-x64-musl": "1.1.1",
+ "@tauri-apps/cli-win32-ia32-msvc": "1.1.1",
+ "@tauri-apps/cli-win32-x64-msvc": "1.1.1"
+ }
+ },
+ "@tauri-apps/cli-darwin-arm64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.1.1.tgz",
+ "integrity": "sha512-qBG11ig525/qf0f5OQxn0ON3hT8YdpTfpa4Y4kVqBJhdW50R5fadPv6tv5Dpl2TS2X7nWh/zg5mEXYoCK3HZ9w==",
+ "dev": true,
+ "optional": true
+ },
+ "@tauri-apps/cli-darwin-x64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.1.1.tgz",
+ "integrity": "sha512-M3dMsp78OdxisbTwAWGvy3jIb3uqThtQcUYVvqOu9LeEOHyldOBFDSht+6PTBpaJLAHFMQK2rmNxiWgigklJaA==",
+ "dev": true,
+ "optional": true
+ },
+ "@tauri-apps/cli-linux-arm-gnueabihf": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.1.1.tgz",
+ "integrity": "sha512-LYlvdAd73cq+yTi6rw7j/DWIvDpeApwgQkIn+HYsNNeFhyFmABU7tmw+pekK3W3nHAkYAJ69Rl4ZdoxdNGKmHg==",
+ "dev": true,
+ "optional": true
+ },
+ "@tauri-apps/cli-linux-arm64-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.1.1.tgz",
+ "integrity": "sha512-o/hbMQIKuFI7cTNpeQBHD/OCNJOBIci78faKms/t6AstLXx0QJuRHDk477Rg6VVy/I3BBKbyATALbmcTq+ti0A==",
+ "dev": true,
+ "optional": true
+ },
+ "@tauri-apps/cli-linux-arm64-musl": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.1.1.tgz",
+ "integrity": "sha512-8Ci4qlDnXIp93XqUrtzFCBDatUzPHpZq7L3bociUbWpvy/bnlzxp1C/C+vwdc4uS1MiAp9v3BFgrU4i0f0Z3QQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@tauri-apps/cli-linux-x64-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.1.1.tgz",
+ "integrity": "sha512-ES4Bkx2JAI8+dDNDJswhLS3yqt+yT/4C6UfGOPIHFxcXUh6fe36eUllrTt+HLRS9xTZbYnteJy7ebq2TqMkaxw==",
+ "dev": true,
+ "optional": true
+ },
+ "@tauri-apps/cli-linux-x64-musl": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.1.1.tgz",
+ "integrity": "sha512-qrN1WOMAaDl+LE8P8iO0+DYlrWNTc9jIu/CsnVY/LImTn79ZPxEkcVBo0UGeKRI7f10TfvkVmLCBLxTz8QhEyA==",
+ "dev": true,
+ "optional": true
+ },
+ "@tauri-apps/cli-win32-ia32-msvc": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.1.1.tgz",
+ "integrity": "sha512-vw7VOmrQlywHhFV3pf54udf2FRNj9dg9WP1gL0My55FnB+w+PWS9Ipm871kX5qepmChdnZHKq9fsqE2uTjX//Q==",
+ "dev": true,
+ "optional": true
+ },
+ "@tauri-apps/cli-win32-x64-msvc": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.1.1.tgz",
+ "integrity": "sha512-OukxlLLi3AoCN4ABnqCDTiiC7xJGWukAjrKCIx7wFISrLjNfsrnH7/UOzuopfGpZChSe2c+AamVmcpBfVsEmJA==",
+ "dev": true,
+ "optional": true
+ },
+ "@types/concat-stream": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz",
+ "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/estree": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz",
+ "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==",
+ "dev": true
+ },
+ "@types/flexsearch": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@types/flexsearch/-/flexsearch-0.7.3.tgz",
+ "integrity": "sha512-HXwADeHEP4exXkCIwy2n1+i0f1ilP1ETQOH5KDOugjkTFZPntWo0Gr8stZOaebkxsdx+k0X/K6obU/+it07ocg==",
+ "dev": true
+ },
+ "@types/form-data": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz",
+ "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/fs-extra": {
+ "version": "9.0.13",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
+ "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/linkify-it": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz",
+ "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==",
+ "dev": true
+ },
+ "@types/markdown-it": {
+ "version": "12.2.3",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz",
+ "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==",
+ "dev": true,
+ "requires": {
+ "@types/linkify-it": "*",
+ "@types/mdurl": "*"
+ }
+ },
+ "@types/mdurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz",
+ "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "18.11.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
+ "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==",
+ "dev": true
+ },
+ "@types/qs": {
+ "version": "6.9.7",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
+ "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
+ "dev": true
+ },
+ "@vitejs/plugin-vue": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.1.2.tgz",
+ "integrity": "sha512-3zxKNlvA3oNaKDYX0NBclgxTQ1xaFdL7PzwF6zj9tGFziKwmBa3Q/6XcJQxudlT81WxDjEhHmevvIC4Orc1LhQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "@volar/language-core": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.0.9.tgz",
+ "integrity": "sha512-5Fty3slLet6svXiJw2YxhYeo6c7wFdtILrql5bZymYLM+HbiZtJbryW1YnUEKAP7MO9Mbeh+TNH4Z0HFxHgIqw==",
+ "dev": true,
+ "requires": {
+ "@volar/source-map": "1.0.9",
+ "@vue/reactivity": "^3.2.40",
+ "muggle-string": "^0.1.0"
+ }
+ },
+ "@volar/source-map": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.0.9.tgz",
+ "integrity": "sha512-fazB/vy5ZEJ3yKx4fabJyGNI3CBkdLkfEIRVu6+1P3VixK0Mn+eqyUIkLBrzGYaeFM3GybhCLCvsVdNz0Fu/CQ==",
+ "dev": true,
+ "requires": {
+ "muggle-string": "^0.1.0"
+ }
+ },
+ "@volar/typescript": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.0.9.tgz",
+ "integrity": "sha512-dVziu+ShQUWuMukM6bvK2v2O446/gG6l1XkTh2vfkccw1IzjfbiP1TWQoNo1ipTfZOtu5YJGYAx+o5HNrGXWfQ==",
+ "dev": true,
+ "requires": {
+ "@volar/language-core": "1.0.9"
+ }
+ },
+ "@volar/vue-language-core": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@volar/vue-language-core/-/vue-language-core-1.0.9.tgz",
+ "integrity": "sha512-tofNoR8ShPFenHT1YVMuvoXtXWwoQE+fiXVqSmW0dSKZqEDjWQ3YeXSd0a6aqyKaIbvR7kWWGp34WbpQlwf9Ww==",
+ "dev": true,
+ "requires": {
+ "@volar/language-core": "1.0.9",
+ "@volar/source-map": "1.0.9",
+ "@vue/compiler-dom": "^3.2.40",
+ "@vue/compiler-sfc": "^3.2.40",
+ "@vue/reactivity": "^3.2.40",
+ "@vue/shared": "^3.2.40",
+ "minimatch": "^5.1.0",
+ "vue-template-compiler": "^2.7.10"
+ }
+ },
+ "@volar/vue-typescript": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-1.0.9.tgz",
+ "integrity": "sha512-ZLe4y9YNbviACa7uAMCilzxA76gbbSlKfjspXBzk6fCobd8QCIig+VyDYcjANIlm2HhgSCX8jYTzhCKlegh4mw==",
+ "dev": true,
+ "requires": {
+ "@volar/typescript": "1.0.9",
+ "@volar/vue-language-core": "1.0.9"
+ }
+ },
+ "@vue/compiler-core": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.41.tgz",
+ "integrity": "sha512-oA4mH6SA78DT+96/nsi4p9DX97PHcNROxs51lYk7gb9Z4BPKQ3Mh+BLn6CQZBw857Iuhu28BfMSRHAlPvD4vlw==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.41",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.41.tgz",
+ "integrity": "sha512-xe5TbbIsonjENxJsYRbDJvthzqxLNk+tb3d/c47zgREDa/PCp6/Y4gC/skM4H6PIuX5DAxm7fFJdbjjUH2QTMw==",
+ "requires": {
+ "@vue/compiler-core": "3.2.41",
+ "@vue/shared": "3.2.41"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.41.tgz",
+ "integrity": "sha512-+1P2m5kxOeaxVmJNXnBskAn3BenbTmbxBxWOtBq3mQTCokIreuMULFantBUclP0+KnzNCMOvcnKinqQZmiOF8w==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.41",
+ "@vue/compiler-dom": "3.2.41",
+ "@vue/compiler-ssr": "3.2.41",
+ "@vue/reactivity-transform": "3.2.41",
+ "@vue/shared": "3.2.41",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7",
+ "postcss": "^8.1.10",
+ "source-map": "^0.6.1"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.41.tgz",
+ "integrity": "sha512-Y5wPiNIiaMz/sps8+DmhaKfDm1xgj6GrH99z4gq2LQenfVQcYXmHIOBcs5qPwl7jaW3SUQWjkAPKMfQemEQZwQ==",
+ "requires": {
+ "@vue/compiler-dom": "3.2.41",
+ "@vue/shared": "3.2.41"
+ }
+ },
+ "@vue/reactivity": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.41.tgz",
+ "integrity": "sha512-9JvCnlj8uc5xRiQGZ28MKGjuCoPhhTwcoAdv3o31+cfGgonwdPNuvqAXLhlzu4zwqavFEG5tvaoINQEfxz+l6g==",
+ "requires": {
+ "@vue/shared": "3.2.41"
+ }
+ },
+ "@vue/reactivity-transform": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.41.tgz",
+ "integrity": "sha512-mK5+BNMsL4hHi+IR3Ft/ho6Za+L3FA5j8WvreJ7XzHrqkPq8jtF/SMo7tuc9gHjLDwKZX1nP1JQOKo9IEAn54A==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.41",
+ "@vue/shared": "3.2.41",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.41.tgz",
+ "integrity": "sha512-0LBBRwqnI0p4FgIkO9q2aJBBTKDSjzhnxrxHYengkAF6dMOjeAIZFDADAlcf2h3GDALWnblbeprYYpItiulSVQ==",
+ "requires": {
+ "@vue/reactivity": "3.2.41",
+ "@vue/shared": "3.2.41"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.41.tgz",
+ "integrity": "sha512-U7zYuR1NVIP8BL6jmOqmapRAHovEFp7CSw4pR2FacqewXNGqZaRfHoNLQsqQvVQ8yuZNZtxSZy0FFyC70YXPpA==",
+ "requires": {
+ "@vue/runtime-core": "3.2.41",
+ "@vue/shared": "3.2.41",
+ "csstype": "^2.6.8"
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.41.tgz",
+ "integrity": "sha512-7YHLkfJdTlsZTV0ae5sPwl9Gn/EGr2hrlbcS/8naXm2CDpnKUwC68i1wGlrYAfIgYWL7vUZwk2GkYLQH5CvFig==",
+ "requires": {
+ "@vue/compiler-ssr": "3.2.41",
+ "@vue/shared": "3.2.41"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.41.tgz",
+ "integrity": "sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw=="
+ },
+ "acorn": {
+ "version": "8.8.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
+ "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+ "dev": true,
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
+ "dev": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true
+ },
+ "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
+ },
+ "binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true
+ },
+ "birpc": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.1.1.tgz",
+ "integrity": "sha512-B64AGL4ug2IS2jvV/zjTYDD1L+2gOJTT7Rv+VaK7KVQtQOo/xZbCDsh7g727ipckmU+QJYRqo5RcifVr0Kgcmg==",
+ "dev": true
+ },
+ "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,
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "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
+ },
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
+ "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,
+ "requires": {
+ "pascal-case": "^3.1.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "capital-case": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz",
+ "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==",
+ "dev": true,
+ "requires": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case-first": "^2.0.2"
+ }
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
+ "dev": true
+ },
+ "change-case": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz",
+ "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==",
+ "dev": true,
+ "requires": {
+ "camel-case": "^4.1.2",
+ "capital-case": "^1.0.4",
+ "constant-case": "^3.0.4",
+ "dot-case": "^3.0.4",
+ "header-case": "^2.0.4",
+ "no-case": "^3.0.4",
+ "param-case": "^3.0.4",
+ "pascal-case": "^3.1.2",
+ "path-case": "^3.0.4",
+ "sentence-case": "^3.0.4",
+ "snake-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "dev": true,
+ "requires": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "fsevents": "~2.3.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"
+ }
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "connect": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
+ "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "finalhandler": "1.1.2",
+ "parseurl": "~1.3.3",
+ "utils-merge": "1.0.1"
+ }
+ },
+ "constant-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz",
+ "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==",
+ "dev": true,
+ "requires": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case": "^2.0.2"
+ }
+ },
+ "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
+ },
+ "crelt": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz",
+ "integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==",
+ "dev": true
+ },
+ "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
+ },
+ "csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
+ },
+ "de-indent": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
+ "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "defu": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.0.tgz",
+ "integrity": "sha512-pOFYRTIhoKujrmbTRhcW5lYQLBXw/dlTwfI8IguF1QCDJOcJzNH1w+YFjxqy6BAuJrClTy6MUE8q+oKJ2FLsIw==",
+ "dev": true
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true
+ },
+ "diacritics": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/diacritics/-/diacritics-1.3.0.tgz",
+ "integrity": "sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==",
+ "dev": true
+ },
+ "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,
+ "requires": {
+ "path-type": "^4.0.0"
+ }
+ },
+ "dot-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
+ "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
+ "dev": true,
+ "requires": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "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
+ },
+ "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
+ },
+ "entities": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
+ "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
+ "dev": true
+ },
+ "esbuild": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.12.tgz",
+ "integrity": "sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==",
+ "dev": true,
+ "requires": {
+ "@esbuild/android-arm": "0.15.12",
+ "@esbuild/linux-loong64": "0.15.12",
+ "esbuild-android-64": "0.15.12",
+ "esbuild-android-arm64": "0.15.12",
+ "esbuild-darwin-64": "0.15.12",
+ "esbuild-darwin-arm64": "0.15.12",
+ "esbuild-freebsd-64": "0.15.12",
+ "esbuild-freebsd-arm64": "0.15.12",
+ "esbuild-linux-32": "0.15.12",
+ "esbuild-linux-64": "0.15.12",
+ "esbuild-linux-arm": "0.15.12",
+ "esbuild-linux-arm64": "0.15.12",
+ "esbuild-linux-mips64le": "0.15.12",
+ "esbuild-linux-ppc64le": "0.15.12",
+ "esbuild-linux-riscv64": "0.15.12",
+ "esbuild-linux-s390x": "0.15.12",
+ "esbuild-netbsd-64": "0.15.12",
+ "esbuild-openbsd-64": "0.15.12",
+ "esbuild-sunos-64": "0.15.12",
+ "esbuild-windows-32": "0.15.12",
+ "esbuild-windows-64": "0.15.12",
+ "esbuild-windows-arm64": "0.15.12"
+ }
+ },
+ "esbuild-android-64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz",
+ "integrity": "sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-android-arm64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz",
+ "integrity": "sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-darwin-64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz",
+ "integrity": "sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-darwin-arm64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz",
+ "integrity": "sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-freebsd-64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz",
+ "integrity": "sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-freebsd-arm64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz",
+ "integrity": "sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-32": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz",
+ "integrity": "sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz",
+ "integrity": "sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-arm": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz",
+ "integrity": "sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-arm64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz",
+ "integrity": "sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-mips64le": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz",
+ "integrity": "sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-ppc64le": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz",
+ "integrity": "sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-riscv64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz",
+ "integrity": "sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-s390x": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz",
+ "integrity": "sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-netbsd-64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz",
+ "integrity": "sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-openbsd-64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz",
+ "integrity": "sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-sunos-64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz",
+ "integrity": "sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-windows-32": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz",
+ "integrity": "sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-windows-64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz",
+ "integrity": "sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-windows-arm64": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz",
+ "integrity": "sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==",
+ "dev": true,
+ "optional": true
+ },
+ "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
+ },
+ "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
+ },
+ "estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "fast-glob": {
+ "version": "3.2.12",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
+ "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "dev": true,
+ "requires": {
+ "@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"
+ }
+ },
+ "fastq": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+ "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+ "dev": true,
+ "requires": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "statuses": "~1.5.0",
+ "unpipe": "~1.0.0"
+ }
+ },
+ "flexsearch": {
+ "version": "0.7.21",
+ "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.21.tgz",
+ "integrity": "sha512-W7cHV7Hrwjid6lWmy0IhsWDFQboWSng25U3VVywpHOTJnnAZNPScog67G+cVpeX9f7yDD21ih0WDrMMT+JoaYg==",
+ "dev": true
+ },
+ "form-data": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
+ "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
+ "dev": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ },
+ "fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "optional": true
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "get-intrinsic": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
+ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "get-port": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
+ "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==",
+ "dev": true
+ },
+ "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,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "globby": {
+ "version": "13.1.2",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz",
+ "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==",
+ "dev": true,
+ "requires": {
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.11",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^4.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+ "dev": true
+ },
+ "gray-matter": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
+ "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
+ "dev": true,
+ "requires": {
+ "js-yaml": "^3.13.1",
+ "kind-of": "^6.0.2",
+ "section-matter": "^1.0.0",
+ "strip-bom-string": "^1.0.0"
+ }
+ },
+ "happy-dom": {
+ "version": "2.55.0",
+ "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-2.55.0.tgz",
+ "integrity": "sha512-CHDMBRau+l/yKQL+ANmexRAC8FRCuYbXRSpu/GbLVyfqkrlBzV7OSNd5C5HZ+pVFtFv1bFJYC5r+xrqgGQuq5w==",
+ "dev": true,
+ "requires": {
+ "css.escape": "^1.5.1",
+ "he": "^1.2.0",
+ "node-fetch": "^2.x.x",
+ "sync-request": "^6.1.0",
+ "webidl-conversions": "^7.0.0",
+ "whatwg-encoding": "^2.0.0",
+ "whatwg-mimetype": "^3.0.0"
+ }
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "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
+ },
+ "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
+ },
+ "header-case": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz",
+ "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==",
+ "dev": true,
+ "requires": {
+ "capital-case": "^1.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "histoire": {
+ "version": "0.11.6",
+ "resolved": "https://registry.npmjs.org/histoire/-/histoire-0.11.6.tgz",
+ "integrity": "sha512-e8q2xjOoRPjwsePzYolWoOztrqI5hPkE2HxjbMNyRYUI2JdHmwuj6pI+lKoJRckIrwi9hCMuLQCPzzm8Ocdplg==",
+ "dev": true,
+ "requires": {
+ "@histoire/app": "^0.11.6",
+ "@histoire/controls": "^0.11.6",
+ "@histoire/shared": "^0.11.6",
+ "@histoire/vendors": "^0.11.6",
+ "@types/flexsearch": "^0.7.3",
+ "@types/markdown-it": "^12.2.3",
+ "birpc": "^0.1.1",
+ "change-case": "^4.1.2",
+ "chokidar": "^3.5.3",
+ "connect": "^3.7.0",
+ "defu": "^6.0.0",
+ "diacritics": "^1.3.0",
+ "flexsearch": "0.7.21",
+ "fs-extra": "^10.0.1",
+ "globby": "^13.1.1",
+ "gray-matter": "^4.0.3",
+ "happy-dom": "^2.55.0",
+ "jiti": "^1.16.0",
+ "markdown-it": "^12.3.2",
+ "markdown-it-anchor": "^8.6.2",
+ "markdown-it-attrs": "^4.1.3",
+ "markdown-it-emoji": "^2.0.0",
+ "micromatch": "^4.0.5",
+ "mrmime": "^1.0.0",
+ "pathe": "^0.2.0",
+ "picocolors": "^1.0.0",
+ "sade": "^1.8.1",
+ "shiki": "0.10.1",
+ "sirv": "^2.0.2",
+ "tinypool": "^0.1.2",
+ "vite-node": "0.23.4",
+ "vite-plugin-inspect": "^0.7.5"
+ }
+ },
+ "http-basic": {
+ "version": "8.1.3",
+ "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz",
+ "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==",
+ "dev": true,
+ "requires": {
+ "caseless": "^0.12.0",
+ "concat-stream": "^1.6.2",
+ "http-response-object": "^3.0.1",
+ "parse-cache-control": "^1.0.1"
+ }
+ },
+ "http-response-object": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz",
+ "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "^10.0.3"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "10.17.60",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz",
+ "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==",
+ "dev": true
+ }
+ }
+ },
+ "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,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ }
+ },
+ "ignore": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
+ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "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,
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-core-module": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
+ "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true
+ },
+ "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,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "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
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true
+ },
+ "jiti": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.16.0.tgz",
+ "integrity": "sha512-L3BJStEf5NAqNuzrpfbN71dp43mYIcBUlCRea/vdyv5dW/AYa1d4bpelko4SHdY3I6eN9Wzyasxirj1/vv5kmg==",
+ "dev": true
+ },
+ "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,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "jsonc-parser": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true
+ },
+ "kolorist": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.6.0.tgz",
+ "integrity": "sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==",
+ "dev": true
+ },
+ "linkify-it": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
+ "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
+ "dev": true,
+ "requires": {
+ "uc.micro": "^1.0.1"
+ }
+ },
+ "lower-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
+ "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
+ "dev": true,
+ "requires": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "requires": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "markdown-it": {
+ "version": "12.3.2",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
+ "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
+ "dev": true,
+ "requires": {
+ "argparse": "^2.0.1",
+ "entities": "~2.1.0",
+ "linkify-it": "^3.0.1",
+ "mdurl": "^1.0.1",
+ "uc.micro": "^1.0.5"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "markdown-it-anchor": {
+ "version": "8.6.5",
+ "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.5.tgz",
+ "integrity": "sha512-PI1qEHHkTNWT+X6Ip9w+paonfIQ+QZP9sCeMYi47oqhH+EsW8CrJ8J7CzV19QVOj6il8ATGbK2nTECj22ZHGvQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "markdown-it-attrs": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.1.4.tgz",
+ "integrity": "sha512-53Zfv8PTb6rlVFDlD106xcZHKBSsRZKJ2IW/rTxEJBEVbVaoxaNsmRkG0HXfbHl2SK8kaxZ2QKqdthWy/QBwmA==",
+ "dev": true,
+ "requires": {}
+ },
+ "markdown-it-emoji": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-2.0.2.tgz",
+ "integrity": "sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ==",
+ "dev": true
+ },
+ "mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
+ "dev": true
+ },
+ "merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "requires": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.52.0"
+ }
+ },
+ "minimatch": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
+ "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
+ },
+ "mlly": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.16.tgz",
+ "integrity": "sha512-LaJ8yuh4v0zEmge/g3c7jjFlhoCPfQn6RCjXgm9A0Qiuochq4BcuOxVfWmdnCoLTlg2MV+hqhOek+W2OhG0Lwg==",
+ "dev": true,
+ "requires": {
+ "acorn": "^8.8.0",
+ "pathe": "^0.3.8",
+ "pkg-types": "^0.3.5",
+ "ufo": "^0.8.5"
+ },
+ "dependencies": {
+ "pathe": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz",
+ "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==",
+ "dev": true
+ }
+ }
+ },
+ "mri": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
+ "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+ "dev": true
+ },
+ "mrmime": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz",
+ "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "muggle-string": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.1.0.tgz",
+ "integrity": "sha512-Tr1knR3d2mKvvWthlk7202rywKbiOm4rVFLsfAaSIhJ6dt9o47W4S+JMtWhd/PW9Wrdew2/S2fSvhz3E2gkfEg==",
+ "dev": true
+ },
+ "nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
+ },
+ "no-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
+ "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
+ "dev": true,
+ "requires": {
+ "lower-case": "^2.0.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dev": true,
+ "requires": {
+ "whatwg-url": "^5.0.0"
+ }
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true
+ },
+ "object-inspect": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
+ "dev": true
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+ "dev": true,
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "param-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
+ "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
+ "dev": true,
+ "requires": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "parse-cache-control": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz",
+ "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==",
+ "dev": true
+ },
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true
+ },
+ "pascal-case": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
+ "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
+ "dev": true,
+ "requires": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "path-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz",
+ "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==",
+ "dev": true,
+ "requires": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true
+ },
+ "pathe": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.2.0.tgz",
+ "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==",
+ "dev": true
+ },
+ "picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true
+ },
+ "pkg-types": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-0.3.6.tgz",
+ "integrity": "sha512-uQZutkkh6axl1GxDm5/+8ivVdwuJ5pyDGqJeSiIWIUWIqYiK3p9QKozN/Rv6eVvFoeSWkN1uoYeSDBwwBJBtbg==",
+ "dev": true,
+ "requires": {
+ "jsonc-parser": "^3.2.0",
+ "mlly": "^0.5.16",
+ "pathe": "^0.3.9"
+ },
+ "dependencies": {
+ "pathe": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz",
+ "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==",
+ "dev": true
+ }
+ }
+ },
+ "postcss": {
+ "version": "8.4.18",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz",
+ "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==",
+ "requires": {
+ "nanoid": "^3.3.4",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "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
+ },
+ "promise": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz",
+ "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==",
+ "dev": true,
+ "requires": {
+ "asap": "~2.0.6"
+ }
+ },
+ "qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dev": true,
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
+ },
+ "queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "requires": {
+ "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"
+ }
+ },
+ "readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
+ },
+ "resolve": {
+ "version": "1.22.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+ "dev": true,
+ "requires": {
+ "is-core-module": "^2.9.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ }
+ },
+ "reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true
+ },
+ "rollup": {
+ "version": "2.78.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz",
+ "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==",
+ "dev": true,
+ "requires": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "requires": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "sade": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
+ "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
+ "dev": true,
+ "requires": {
+ "mri": "^1.1.0"
+ }
+ },
+ "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
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "section-matter": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
+ "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "kind-of": "^6.0.0"
+ }
+ },
+ "sentence-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz",
+ "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==",
+ "dev": true,
+ "requires": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case-first": "^2.0.2"
+ }
+ },
+ "shiki": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.10.1.tgz",
+ "integrity": "sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==",
+ "dev": true,
+ "requires": {
+ "jsonc-parser": "^3.0.0",
+ "vscode-oniguruma": "^1.6.1",
+ "vscode-textmate": "5.2.0"
+ }
+ },
+ "side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ }
+ },
+ "sirv": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz",
+ "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==",
+ "dev": true,
+ "requires": {
+ "@polka/url": "^1.0.0-next.20",
+ "mrmime": "^1.0.0",
+ "totalist": "^3.0.0"
+ }
+ },
+ "slash": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
+ "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
+ "dev": true
+ },
+ "snake-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
+ "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
+ "dev": true,
+ "requires": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
+ },
+ "sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "dev": true
+ },
+ "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,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-bom-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
+ "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==",
+ "dev": true
+ },
+ "style-mod": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz",
+ "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==",
+ "dev": true
+ },
+ "supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true
+ },
+ "sync-request": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz",
+ "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==",
+ "dev": true,
+ "requires": {
+ "http-response-object": "^3.0.1",
+ "sync-rpc": "^1.2.1",
+ "then-request": "^6.0.0"
+ }
+ },
+ "sync-rpc": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz",
+ "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==",
+ "dev": true,
+ "requires": {
+ "get-port": "^3.1.0"
+ }
+ },
+ "then-request": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz",
+ "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==",
+ "dev": true,
+ "requires": {
+ "@types/concat-stream": "^1.6.0",
+ "@types/form-data": "0.0.33",
+ "@types/node": "^8.0.0",
+ "@types/qs": "^6.2.31",
+ "caseless": "~0.12.0",
+ "concat-stream": "^1.6.0",
+ "form-data": "^2.2.0",
+ "http-basic": "^8.1.1",
+ "http-response-object": "^3.0.1",
+ "promise": "^8.0.0",
+ "qs": "^6.4.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "8.10.66",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz",
+ "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==",
+ "dev": true
+ }
+ }
+ },
+ "tinypool": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.1.3.tgz",
+ "integrity": "sha512-2IfcQh7CP46XGWGGbdyO4pjcKqsmVqFAPcXfPxcPXmOWt9cYkTP9HcDmGgsfijYoAEc4z9qcpM/BaBz46Y9/CQ==",
+ "dev": true
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
+ "totalist": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz",
+ "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==",
+ "dev": true
+ },
+ "tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "dev": true
+ },
+ "tslib": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
+ "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
+ "dev": true
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+ "dev": true
+ },
+ "typescript": {
+ "version": "4.8.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
+ "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
+ "dev": true
+ },
+ "uc.micro": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
+ "dev": true
+ },
+ "ufo": {
+ "version": "0.8.6",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz",
+ "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==",
+ "dev": true
+ },
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "dev": true
+ },
+ "upper-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz",
+ "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==",
+ "dev": true,
+ "requires": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "upper-case-first": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz",
+ "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==",
+ "dev": true,
+ "requires": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "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
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "dev": true
+ },
+ "vite": {
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.8.tgz",
+ "integrity": "sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==",
+ "dev": true,
+ "requires": {
+ "esbuild": "^0.15.9",
+ "fsevents": "~2.3.2",
+ "postcss": "^8.4.16",
+ "resolve": "^1.22.1",
+ "rollup": "~2.78.0"
+ }
+ },
+ "vite-node": {
+ "version": "0.23.4",
+ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.23.4.tgz",
+ "integrity": "sha512-8VuDGwTWIvwPYcbw8ZycMlwAwqCmqZfLdFrDK75+o+6bWYpede58k6AAXN9ioU+icW82V4u1MzkxLVhhIoQ9xA==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.3.4",
+ "mlly": "^0.5.14",
+ "pathe": "^0.2.0",
+ "vite": "^2.9.12 || ^3.0.0-0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "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
+ }
+ }
+ },
+ "vite-plugin-inspect": {
+ "version": "0.7.7",
+ "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.7.7.tgz",
+ "integrity": "sha512-2IlnshZuv0RHtUwMBNR8cW//VDLVKfBOG+JY9qqeL2TaNdet5m+Rw/Zxp63vtcX5FNhWO1fYCK1ENRv6PCOevg==",
+ "dev": true,
+ "requires": {
+ "@rollup/pluginutils": "^5.0.2",
+ "debug": "^4.3.4",
+ "fs-extra": "^10.1.0",
+ "kolorist": "^1.6.0",
+ "sirv": "^2.0.2",
+ "ufo": "^0.8.6"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "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
+ }
+ }
+ },
+ "vscode-oniguruma": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz",
+ "integrity": "sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==",
+ "dev": true
+ },
+ "vscode-textmate": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz",
+ "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==",
+ "dev": true
+ },
+ "vue": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.41.tgz",
+ "integrity": "sha512-uuuvnrDXEeZ9VUPljgHkqB5IaVO8SxhPpqF2eWOukVrBnRBx2THPSGQBnVRt0GrIG1gvCmFXMGbd7FqcT1ixNQ==",
+ "requires": {
+ "@vue/compiler-dom": "3.2.41",
+ "@vue/compiler-sfc": "3.2.41",
+ "@vue/runtime-dom": "3.2.41",
+ "@vue/server-renderer": "3.2.41",
+ "@vue/shared": "3.2.41"
+ }
+ },
+ "vue-template-compiler": {
+ "version": "2.7.13",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.13.tgz",
+ "integrity": "sha512-jYM6TClwDS9YqP48gYrtAtaOhRKkbYmbzE+Q51gX5YDr777n7tNI/IZk4QV4l/PjQPNh/FVa/E92sh/RqKMrog==",
+ "dev": true,
+ "requires": {
+ "de-indent": "^1.0.2",
+ "he": "^1.2.0"
+ }
+ },
+ "vue-tsc": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.0.9.tgz",
+ "integrity": "sha512-vRmHD1K6DmBymNhoHjQy/aYKTRQNLGOu2/ESasChG9Vy113K6CdP0NlhR0bzgFJfv2eFB9Ez/9L5kIciUajBxQ==",
+ "dev": true,
+ "requires": {
+ "@volar/vue-language-core": "1.0.9",
+ "@volar/vue-typescript": "1.0.9"
+ }
+ },
+ "w3c-keyname": {
+ "version": "2.2.6",
+ "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz",
+ "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==",
+ "dev": true
+ },
+ "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
+ },
+ "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,
+ "requires": {
+ "iconv-lite": "0.6.3"
+ }
+ },
+ "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
+ },
+ "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,
+ "requires": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..801af9ee
--- /dev/null
+++ b/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "divicards",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vue-tsc --noEmit && vite build",
+ "preview": "vite preview",
+ "tauri": "tauri",
+ "story": "histoire"
+ },
+ "dependencies": {
+ "@formkit/auto-animate": "^1.0.0-beta.3",
+ "@tauri-apps/api": "^1.1.0",
+ "vue": "^3.2.37"
+ },
+ "devDependencies": {
+ "@histoire/plugin-vue": "^0.11.6",
+ "@tauri-apps/cli": "^1.1.1",
+ "@vitejs/plugin-vue": "^3.1.0",
+ "histoire": "^0.11.6",
+ "typescript": "^4.6.4",
+ "vite": "^3.1.0",
+ "vue-tsc": "^1.0.9"
+ }
+}
diff --git a/public/chaos.png b/public/chaos.png
new file mode 100644
index 00000000..ead2074e
Binary files /dev/null and b/public/chaos.png differ
diff --git a/public/vite.svg b/public/vite.svg
new file mode 100644
index 00000000..e7b8dfb1
--- /dev/null
+++ b/public/vite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src-tauri/.gitignore b/src-tauri/.gitignore
new file mode 100644
index 00000000..aba21e24
--- /dev/null
+++ b/src-tauri/.gitignore
@@ -0,0 +1,3 @@
+# Generated by Cargo
+# will have compiled files and executables
+/target/
diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
new file mode 100644
index 00000000..2a9e0fc5
--- /dev/null
+++ b/src-tauri/Cargo.lock
@@ -0,0 +1,4455 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "adler"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
+[[package]]
+name = "adler32"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
+
+[[package]]
+name = "aho-corasick"
+version = "0.7.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "alloc-no-stdlib"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
+
+[[package]]
+name = "alloc-stdlib"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
+dependencies = [
+ "alloc-no-stdlib",
+]
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.66"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6"
+
+[[package]]
+name = "app"
+version = "0.1.0"
+dependencies = [
+ "csv",
+ "dotenv",
+ "reqwest",
+ "reqwest-retry",
+ "serde",
+ "serde_json",
+ "strsim",
+ "tauri",
+ "tauri-api",
+ "tauri-build",
+ "tokio",
+ "tracing",
+ "tracing-subscriber",
+ "wry",
+]
+
+[[package]]
+name = "async-trait"
+version = "0.1.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e805d94e6b5001b651426cf4cd446b1ab5f319d27bab5c644f61de0a804360c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "atk"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd"
+dependencies = [
+ "atk-sys",
+ "bitflags",
+ "glib",
+ "libc",
+]
+
+[[package]]
+name = "atk-sys"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "attohttpc"
+version = "0.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fdb8867f378f33f78a811a8eb9bf108ad99430d7aad43315dd9319c827ef6247"
+dependencies = [
+ "flate2",
+ "http",
+ "log",
+ "native-tls",
+ "openssl",
+ "serde",
+ "serde_json",
+ "serde_urlencoded 0.6.1",
+ "url",
+ "wildmatch",
+]
+
+[[package]]
+name = "attohttpc"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fcf00bc6d5abb29b5f97e3c61a90b6d3caa12f3faf897d4a3e3607c050a35a7"
+dependencies = [
+ "flate2",
+ "http",
+ "log",
+ "native-tls",
+ "serde",
+ "serde_json",
+ "serde_urlencoded 0.7.1",
+ "url",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "base64"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "block"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
+
+[[package]]
+name = "block-buffer"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "brotli"
+version = "3.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+ "brotli-decompressor",
+]
+
+[[package]]
+name = "brotli-decompressor"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+]
+
+[[package]]
+name = "bstr"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223"
+dependencies = [
+ "lazy_static",
+ "memchr",
+ "regex-automata",
+ "serde",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba"
+
+[[package]]
+name = "bytemuck"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f5715e491b5a1598fc2bef5a606847b5dc1d48ea625bd3c02c00de8285591da"
+
+[[package]]
+name = "byteorder"
+version = "1.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+
+[[package]]
+name = "bytes"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db"
+
+[[package]]
+name = "bzip2"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0"
+dependencies = [
+ "bzip2-sys",
+ "libc",
+]
+
+[[package]]
+name = "bzip2-sys"
+version = "0.1.11+1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+]
+
+[[package]]
+name = "cairo-rs"
+version = "0.15.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc"
+dependencies = [
+ "bitflags",
+ "cairo-sys-rs",
+ "glib",
+ "libc",
+ "thiserror",
+]
+
+[[package]]
+name = "cairo-sys-rs"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "cargo_toml"
+version = "0.11.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e72c3ff59e3b7d24630206bb63a73af65da4ed5df1f76ee84dfafb9fee2ba60e"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "toml",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.73"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
+
+[[package]]
+name = "cesu8"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
+
+[[package]]
+name = "cfb"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74f89d248799e3f15f91b70917f65381062a01bb8e222700ea0e5a7ff9785f9c"
+dependencies = [
+ "byteorder",
+ "uuid 0.8.2",
+]
+
+[[package]]
+name = "cfg-expr"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7"
+dependencies = [
+ "smallvec",
+]
+
+[[package]]
+name = "cfg-expr"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0357a6402b295ca3a86bc148e84df46c02e41f41fef186bda662557ef6328aa"
+dependencies = [
+ "smallvec",
+]
+
+[[package]]
+name = "cfg-if"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "chrono"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1"
+dependencies = [
+ "iana-time-zone",
+ "num-integer",
+ "num-traits",
+ "winapi",
+]
+
+[[package]]
+name = "cocoa"
+version = "0.24.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f63902e9223530efb4e26ccd0cf55ec30d592d3b42e21a28defc42a9586e832"
+dependencies = [
+ "bitflags",
+ "block",
+ "cocoa-foundation",
+ "core-foundation",
+ "core-graphics",
+ "foreign-types",
+ "libc",
+ "objc",
+]
+
+[[package]]
+name = "cocoa-foundation"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318"
+dependencies = [
+ "bitflags",
+ "block",
+ "core-foundation",
+ "core-graphics-types",
+ "foreign-types",
+ "libc",
+ "objc",
+]
+
+[[package]]
+name = "codespan-reporting"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
+dependencies = [
+ "termcolor",
+ "unicode-width",
+]
+
+[[package]]
+name = "color_quant"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
+
+[[package]]
+name = "combine"
+version = "4.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
+dependencies = [
+ "bytes",
+ "memchr",
+]
+
+[[package]]
+name = "convert_case"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
+
+[[package]]
+name = "core-foundation"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
+
+[[package]]
+name = "core-graphics"
+version = "0.22.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "core-graphics-types",
+ "foreign-types",
+ "libc",
+]
+
+[[package]]
+name = "core-graphics-types"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "foreign-types",
+ "libc",
+]
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crc32fast"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+dependencies = [
+ "cfg-if 1.0.0",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
+dependencies = [
+ "cfg-if 1.0.0",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
+dependencies = [
+ "cfg-if 1.0.0",
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348"
+dependencies = [
+ "autocfg",
+ "cfg-if 1.0.0",
+ "crossbeam-utils",
+ "memoffset",
+ "scopeguard",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac"
+dependencies = [
+ "cfg-if 1.0.0",
+]
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "cssparser"
+version = "0.27.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a"
+dependencies = [
+ "cssparser-macros",
+ "dtoa-short",
+ "itoa 0.4.8",
+ "matches",
+ "phf 0.8.0",
+ "proc-macro2",
+ "quote",
+ "smallvec",
+ "syn",
+]
+
+[[package]]
+name = "cssparser-macros"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e"
+dependencies = [
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "csv"
+version = "1.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1"
+dependencies = [
+ "bstr",
+ "csv-core",
+ "itoa 0.4.8",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "csv-core"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "ctor"
+version = "0.1.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096"
+dependencies = [
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "cty"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35"
+
+[[package]]
+name = "cxx"
+version = "1.0.80"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b7d4e43b25d3c994662706a1d4fcfc32aaa6afd287502c111b237093bb23f3a"
+dependencies = [
+ "cc",
+ "cxxbridge-flags",
+ "cxxbridge-macro",
+ "link-cplusplus",
+]
+
+[[package]]
+name = "cxx-build"
+version = "1.0.80"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84f8829ddc213e2c1368e51a2564c552b65a8cb6a28f31e576270ac81d5e5827"
+dependencies = [
+ "cc",
+ "codespan-reporting",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "scratch",
+ "syn",
+]
+
+[[package]]
+name = "cxxbridge-flags"
+version = "1.0.80"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e72537424b474af1460806647c41d4b6d35d09ef7fe031c5c2fa5766047cc56a"
+
+[[package]]
+name = "cxxbridge-macro"
+version = "1.0.80"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "309e4fb93eed90e1e14bea0da16b209f81813ba9fc7830c20ed151dd7bc0a4d7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "darling"
+version = "0.13.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.13.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.13.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835"
+dependencies = [
+ "darling_core",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "dbus"
+version = "0.9.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f8bcdd56d2e5c4ed26a529c5a9029f5db8290d433497506f958eae3be148eb6"
+dependencies = [
+ "libc",
+ "libdbus-sys",
+ "winapi",
+]
+
+[[package]]
+name = "deflate"
+version = "0.7.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "707b6a7b384888a70c8d2e8650b3e60170dfc6a67bb4aa67b6dfca57af4bedb4"
+dependencies = [
+ "adler32",
+ "byteorder",
+]
+
+[[package]]
+name = "derive_more"
+version = "0.99.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
+dependencies = [
+ "convert_case",
+ "proc-macro2",
+ "quote",
+ "rustc_version 0.4.0",
+ "syn",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+]
+
+[[package]]
+name = "dirs-next"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf36e65a80337bea855cd4ef9b8401ffce06a7baedf2e85ec467b1ac3f6e82b6"
+dependencies = [
+ "cfg-if 1.0.0",
+ "dirs-sys-next",
+]
+
+[[package]]
+name = "dirs-next"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
+dependencies = [
+ "cfg-if 1.0.0",
+ "dirs-sys-next",
+]
+
+[[package]]
+name = "dirs-sys-next"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
+dependencies = [
+ "libc",
+ "redox_users",
+ "winapi",
+]
+
+[[package]]
+name = "dispatch"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
+
+[[package]]
+name = "doc-comment"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
+
+[[package]]
+name = "dotenv"
+version = "0.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f"
+
+[[package]]
+name = "dtoa"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0"
+
+[[package]]
+name = "dtoa-short"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bde03329ae10e79ede66c9ce4dc930aa8599043b0743008548680f25b91502d6"
+dependencies = [
+ "dtoa",
+]
+
+[[package]]
+name = "either"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
+
+[[package]]
+name = "embed_plist"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7"
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b"
+dependencies = [
+ "cfg-if 1.0.0",
+]
+
+[[package]]
+name = "fastrand"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
+dependencies = [
+ "instant",
+]
+
+[[package]]
+name = "field-offset"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92"
+dependencies = [
+ "memoffset",
+ "rustc_version 0.3.3",
+]
+
+[[package]]
+name = "filetime"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b9663d381d07ae25dc88dbdf27df458faa83a9b25336bcac83d5e452b5fc9d3"
+dependencies = [
+ "cfg-if 1.0.0",
+ "libc",
+ "redox_syscall",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "flate2"
+version = "1.0.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "foreign-types"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+dependencies = [
+ "foreign-types-shared",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "futf"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843"
+dependencies = [
+ "mac",
+ "new_debug_unreachable",
+]
+
+[[package]]
+name = "futures"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb"
+
+[[package]]
+name = "futures-macro"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9"
+
+[[package]]
+name = "futures-task"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea"
+
+[[package]]
+name = "futures-util"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "fxhash"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
+dependencies = [
+ "byteorder",
+]
+
+[[package]]
+name = "gcc"
+version = "0.3.55"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2"
+
+[[package]]
+name = "gdk"
+version = "0.15.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8"
+dependencies = [
+ "bitflags",
+ "cairo-rs",
+ "gdk-pixbuf",
+ "gdk-sys",
+ "gio",
+ "glib",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gdk-pixbuf"
+version = "0.15.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a"
+dependencies = [
+ "bitflags",
+ "gdk-pixbuf-sys",
+ "gio",
+ "glib",
+ "libc",
+]
+
+[[package]]
+name = "gdk-pixbuf-sys"
+version = "0.15.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7"
+dependencies = [
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "gdk-sys"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pango-sys",
+ "pkg-config",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "gdkx11-sys"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178"
+dependencies = [
+ "gdk-sys",
+ "glib-sys",
+ "libc",
+ "system-deps 6.0.3",
+ "x11",
+]
+
+[[package]]
+name = "generator"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc184cace1cea8335047a471cc1da80f18acf8a76f3bab2028d499e328948ec7"
+dependencies = [
+ "cc",
+ "libc",
+ "log",
+ "rustversion",
+ "windows 0.32.0",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
+dependencies = [
+ "cfg-if 1.0.0",
+ "libc",
+ "wasi 0.9.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+dependencies = [
+ "cfg-if 1.0.0",
+ "libc",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "gio"
+version = "0.15.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b"
+dependencies = [
+ "bitflags",
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "gio-sys",
+ "glib",
+ "libc",
+ "once_cell",
+ "thiserror",
+]
+
+[[package]]
+name = "gio-sys"
+version = "0.15.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps 6.0.3",
+ "winapi",
+]
+
+[[package]]
+name = "glib"
+version = "0.15.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d"
+dependencies = [
+ "bitflags",
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-task",
+ "glib-macros",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "once_cell",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "glib-macros"
+version = "0.15.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25a68131a662b04931e71891fb14aaf65ee4b44d08e8abc10f49e77418c86c64"
+dependencies = [
+ "anyhow",
+ "heck 0.4.0",
+ "proc-macro-crate",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "glib-sys"
+version = "0.15.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4"
+dependencies = [
+ "libc",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "glob"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
+
+[[package]]
+name = "globset"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a"
+dependencies = [
+ "aho-corasick",
+ "bstr",
+ "fnv",
+ "log",
+ "regex",
+]
+
+[[package]]
+name = "gobject-sys"
+version = "0.15.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "gtk"
+version = "0.15.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0"
+dependencies = [
+ "atk",
+ "bitflags",
+ "cairo-rs",
+ "field-offset",
+ "futures-channel",
+ "gdk",
+ "gdk-pixbuf",
+ "gio",
+ "glib",
+ "gtk-sys",
+ "gtk3-macros",
+ "libc",
+ "once_cell",
+ "pango",
+ "pkg-config",
+]
+
+[[package]]
+name = "gtk-sys"
+version = "0.15.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84"
+dependencies = [
+ "atk-sys",
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pango-sys",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "gtk3-macros"
+version = "0.15.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24f518afe90c23fba585b2d7697856f9e6a7bbc62f65588035e66f6afb01a2e9"
+dependencies = [
+ "anyhow",
+ "proc-macro-crate",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "h2"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4"
+dependencies = [
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "http",
+ "indexmap",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+
+[[package]]
+name = "heck"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "heck"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "html5ever"
+version = "0.25.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148"
+dependencies = [
+ "log",
+ "mac",
+ "markup5ever",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "http"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa 1.0.4",
+]
+
+[[package]]
+name = "http-body"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
+dependencies = [
+ "bytes",
+ "http",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "http-range"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573"
+
+[[package]]
+name = "httparse"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+
+[[package]]
+name = "httpdate"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
+
+[[package]]
+name = "hyper"
+version = "0.14.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http",
+ "http-body",
+ "httparse",
+ "httpdate",
+ "itoa 1.0.4",
+ "pin-project-lite",
+ "socket2",
+ "tokio",
+ "tower-service",
+ "tracing",
+ "want",
+]
+
+[[package]]
+name = "hyper-tls"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
+dependencies = [
+ "bytes",
+ "hyper",
+ "native-tls",
+ "tokio",
+ "tokio-native-tls",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.51"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5a6ef98976b22b3b7f2f3a806f858cb862044cfa66805aa3ad84cb3d3b785ed"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "winapi",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca"
+dependencies = [
+ "cxx",
+ "cxx-build",
+]
+
+[[package]]
+name = "ico"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a4b3331534254a9b64095ae60d3dc2a8225a7a70229cd5888be127cdc1f6804"
+dependencies = [
+ "byteorder",
+ "png 0.11.0",
+]
+
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
+[[package]]
+name = "idna"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "ignore"
+version = "0.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d"
+dependencies = [
+ "crossbeam-utils",
+ "globset",
+ "lazy_static",
+ "log",
+ "memchr",
+ "regex",
+ "same-file",
+ "thread_local",
+ "walkdir",
+ "winapi-util",
+]
+
+[[package]]
+name = "image"
+version = "0.24.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd8e4fb07cf672b1642304e731ef8a6a4c7891d67bb4fd4f5ce58cd6ed86803c"
+dependencies = [
+ "bytemuck",
+ "byteorder",
+ "color_quant",
+ "num-rational",
+ "num-traits",
+]
+
+[[package]]
+name = "indexmap"
+version = "1.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
+dependencies = [
+ "autocfg",
+ "hashbrown",
+]
+
+[[package]]
+name = "infer"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20b2b533137b9cad970793453d4f921c2e91312a6d88b1085c07bc15fc51bb3b"
+dependencies = [
+ "cfb",
+]
+
+[[package]]
+name = "inflate"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5f9f47468e9a76a6452271efadc88fe865a82be91fe75e6c0c57b87ccea59d4"
+dependencies = [
+ "adler32",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+dependencies = [
+ "cfg-if 1.0.0",
+]
+
+[[package]]
+name = "ipnet"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b"
+
+[[package]]
+name = "itoa"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
+
+[[package]]
+name = "itoa"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
+
+[[package]]
+name = "javascriptcore-rs"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c"
+dependencies = [
+ "bitflags",
+ "glib",
+ "javascriptcore-rs-sys",
+]
+
+[[package]]
+name = "javascriptcore-rs-sys"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps 5.0.0",
+]
+
+[[package]]
+name = "jni"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec"
+dependencies = [
+ "cesu8",
+ "combine",
+ "jni-sys",
+ "log",
+ "thiserror",
+ "walkdir",
+]
+
+[[package]]
+name = "jni-sys"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
+
+[[package]]
+name = "js-sys"
+version = "0.3.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "json-patch"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f995a3c8f2bc3dd52a18a583e90f9ec109c047fa1603a853e46bcda14d2e279d"
+dependencies = [
+ "serde",
+ "serde_json",
+ "treediff",
+]
+
+[[package]]
+name = "kuchiki"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ea8e9c6e031377cff82ee3001dc8026cdf431ed4e2e6b51f98ab8c73484a358"
+dependencies = [
+ "cssparser",
+ "html5ever",
+ "matches",
+ "selectors",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "libc"
+version = "0.2.135"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c"
+
+[[package]]
+name = "libdbus-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c185b5b7ad900923ef3a8ff594083d4d9b5aea80bb4f32b8342363138c0d456b"
+dependencies = [
+ "pkg-config",
+]
+
+[[package]]
+name = "line-wrap"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9"
+dependencies = [
+ "safemem",
+]
+
+[[package]]
+name = "link-cplusplus"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "lock_api"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+dependencies = [
+ "cfg-if 1.0.0",
+]
+
+[[package]]
+name = "loom"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5"
+dependencies = [
+ "cfg-if 1.0.0",
+ "generator",
+ "scoped-tls",
+ "serde",
+ "serde_json",
+ "tracing",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "mac"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
+
+[[package]]
+name = "mac-notification-sys"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e72d50edb17756489e79d52eb146927bec8eba9dd48faadf9ef08bca3791ad5"
+dependencies = [
+ "cc",
+ "dirs-next 2.0.0",
+ "objc-foundation",
+ "objc_id",
+ "time 0.3.15",
+]
+
+[[package]]
+name = "malloc_buf"
+version = "0.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "markup5ever"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd"
+dependencies = [
+ "log",
+ "phf 0.8.0",
+ "phf_codegen",
+ "string_cache",
+ "string_cache_codegen",
+ "tendril",
+]
+
+[[package]]
+name = "matchers"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
+dependencies = [
+ "regex-automata",
+]
+
+[[package]]
+name = "matches"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
+
+[[package]]
+name = "memchr"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+
+[[package]]
+name = "memoffset"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "mime"
+version = "0.3.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
+
+[[package]]
+name = "mime_guess"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef"
+dependencies = [
+ "mime",
+ "unicase",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34"
+dependencies = [
+ "adler",
+]
+
+[[package]]
+name = "mio"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de"
+dependencies = [
+ "libc",
+ "log",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "native-tls"
+version = "0.2.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9"
+dependencies = [
+ "lazy_static",
+ "libc",
+ "log",
+ "openssl",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "security-framework",
+ "security-framework-sys",
+ "tempfile",
+]
+
+[[package]]
+name = "ndk"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4"
+dependencies = [
+ "bitflags",
+ "jni-sys",
+ "ndk-sys",
+ "num_enum",
+ "thiserror",
+]
+
+[[package]]
+name = "ndk-context"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b"
+
+[[package]]
+name = "ndk-sys"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97"
+dependencies = [
+ "jni-sys",
+]
+
+[[package]]
+name = "new_debug_unreachable"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
+
+[[package]]
+name = "nfd"
+version = "0.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e752e3c216bc8a491c5b59fa46da10f1379ae450b19ac688e07f4bb55042e98"
+dependencies = [
+ "gcc",
+]
+
+[[package]]
+name = "nodrop"
+version = "0.1.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
+
+[[package]]
+name = "notify-rust"
+version = "4.5.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "368e89ea58df747ce88be669ae44e79783c1d30bfd540ad0fc520b3f41f0b3b0"
+dependencies = [
+ "dbus",
+ "mac-notification-sys",
+ "tauri-winrt-notification",
+]
+
+[[package]]
+name = "ntapi"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "nu-ansi-term"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+dependencies = [
+ "overload",
+ "winapi",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+dependencies = [
+ "autocfg",
+ "num-traits",
+]
+
+[[package]]
+name = "num-iter"
+version = "0.1.43"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
+[[package]]
+name = "num_enum"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9"
+dependencies = [
+ "num_enum_derive",
+]
+
+[[package]]
+name = "num_enum_derive"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce"
+dependencies = [
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "num_threads"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "objc"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
+dependencies = [
+ "malloc_buf",
+ "objc_exception",
+]
+
+[[package]]
+name = "objc-foundation"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9"
+dependencies = [
+ "block",
+ "objc",
+ "objc_id",
+]
+
+[[package]]
+name = "objc_exception"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "objc_id"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b"
+dependencies = [
+ "objc",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
+
+[[package]]
+name = "open"
+version = "3.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4a3100141f1733ea40b53381b0ae3117330735ef22309a190ac57b9576ea716"
+dependencies = [
+ "pathdiff",
+ "windows-sys 0.36.1",
+]
+
+[[package]]
+name = "openssl"
+version = "0.10.42"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13"
+dependencies = [
+ "bitflags",
+ "cfg-if 1.0.0",
+ "foreign-types",
+ "libc",
+ "once_cell",
+ "openssl-macros",
+ "openssl-sys",
+]
+
+[[package]]
+name = "openssl-macros"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b03b84c3b2d099b81f0953422b4d4ad58761589d0229b5506356afca05a3670a"
+dependencies = [
+ "autocfg",
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "os_info"
+version = "3.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4750134fb6a5d49afc80777394ad5d95b04bc12068c6abb92fae8f43817270f"
+dependencies = [
+ "log",
+ "serde",
+ "winapi",
+]
+
+[[package]]
+name = "os_pipe"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0dceb7e43f59c35ee1548045b2c72945a5a3bb6ce6d6f07cdc13dc8f6bc4930a"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "overload"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+
+[[package]]
+name = "pango"
+version = "0.15.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f"
+dependencies = [
+ "bitflags",
+ "glib",
+ "libc",
+ "once_cell",
+ "pango-sys",
+]
+
+[[package]]
+name = "pango-sys"
+version = "0.15.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "parking_lot"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0"
+dependencies = [
+ "cfg-if 1.0.0",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1"
+
+[[package]]
+name = "pathdiff"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
+
+[[package]]
+name = "percent-encoding"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
+
+[[package]]
+name = "pest"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbc7bc69c062e492337d74d59b120c274fd3d261b6bf6d3207d499b4b379c41a"
+dependencies = [
+ "thiserror",
+ "ucd-trie",
+]
+
+[[package]]
+name = "phf"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12"
+dependencies = [
+ "phf_macros 0.8.0",
+ "phf_shared 0.8.0",
+ "proc-macro-hack",
+]
+
+[[package]]
+name = "phf"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259"
+dependencies = [
+ "phf_macros 0.10.0",
+ "phf_shared 0.10.0",
+ "proc-macro-hack",
+]
+
+[[package]]
+name = "phf_codegen"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815"
+dependencies = [
+ "phf_generator 0.8.0",
+ "phf_shared 0.8.0",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526"
+dependencies = [
+ "phf_shared 0.8.0",
+ "rand 0.7.3",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6"
+dependencies = [
+ "phf_shared 0.10.0",
+ "rand 0.8.5",
+]
+
+[[package]]
+name = "phf_macros"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c"
+dependencies = [
+ "phf_generator 0.8.0",
+ "phf_shared 0.8.0",
+ "proc-macro-hack",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "phf_macros"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0"
+dependencies = [
+ "phf_generator 0.10.0",
+ "phf_shared 0.10.0",
+ "proc-macro-hack",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "pkg-config"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
+
+[[package]]
+name = "plist"
+version = "1.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd39bc6cdc9355ad1dc5eeedefee696bb35c34caf21768741e81826c0bbd7225"
+dependencies = [
+ "base64",
+ "indexmap",
+ "line-wrap",
+ "serde",
+ "time 0.3.15",
+ "xml-rs",
+]
+
+[[package]]
+name = "png"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0b0cabbbd20c2d7f06dbf015e06aad59b6ca3d9ed14848783e98af9aaf19925"
+dependencies = [
+ "bitflags",
+ "deflate",
+ "inflate",
+ "num-iter",
+]
+
+[[package]]
+name = "png"
+version = "0.17.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f0e7f4c94ec26ff209cee506314212639d6c91b80afb82984819fafce9df01c"
+dependencies = [
+ "bitflags",
+ "crc32fast",
+ "flate2",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
+
+[[package]]
+name = "precomputed-hash"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
+
+[[package]]
+name = "proc-macro-crate"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9"
+dependencies = [
+ "once_cell",
+ "thiserror",
+ "toml",
+]
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-hack"
+version = "0.5.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.47"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quick-xml"
+version = "0.23.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "11bafc859c6815fbaffbbbf4229ecb767ac913fecb27f9ad4343662e9ef099ea"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
+dependencies = [
+ "getrandom 0.1.16",
+ "libc",
+ "rand_chacha 0.2.2",
+ "rand_core 0.5.1",
+ "rand_hc",
+ "rand_pcg",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+dependencies = [
+ "getrandom 0.1.16",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom 0.2.8",
+]
+
+[[package]]
+name = "rand_hc"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+dependencies = [
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "rand_pcg"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429"
+dependencies = [
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "raw-window-handle"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a"
+dependencies = [
+ "cty",
+]
+
+[[package]]
+name = "rayon"
+version = "1.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
+dependencies = [
+ "autocfg",
+ "crossbeam-deque",
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-utils",
+ "num_cpus",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
+dependencies = [
+ "getrandom 0.2.8",
+ "redox_syscall",
+ "thiserror",
+]
+
+[[package]]
+name = "regex"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+dependencies = [
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
+
+[[package]]
+name = "remove_dir_all"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "reqwest"
+version = "0.11.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "431949c384f4e2ae07605ccaa56d1d9d2ecdb5cadd4f9577ccfab29f2e5149fc"
+dependencies = [
+ "base64",
+ "bytes",
+ "encoding_rs",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http",
+ "http-body",
+ "hyper",
+ "hyper-tls",
+ "ipnet",
+ "js-sys",
+ "log",
+ "mime",
+ "mime_guess",
+ "native-tls",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "serde",
+ "serde_json",
+ "serde_urlencoded 0.7.1",
+ "tokio",
+ "tokio-native-tls",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "winreg",
+]
+
+[[package]]
+name = "reqwest-middleware"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69539cea4148dce683bec9dc95be3f0397a9bb2c248a49c8296a9d21659a8cdd"
+dependencies = [
+ "anyhow",
+ "async-trait",
+ "futures",
+ "http",
+ "reqwest",
+ "serde",
+ "task-local-extensions",
+ "thiserror",
+]
+
+[[package]]
+name = "reqwest-retry"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce246a729eaa6aff5e215aee42845bf5fed9893cc6cd51aeeb712f34e04dd9f3"
+dependencies = [
+ "anyhow",
+ "async-trait",
+ "chrono",
+ "futures",
+ "http",
+ "hyper",
+ "reqwest",
+ "reqwest-middleware",
+ "retry-policies",
+ "task-local-extensions",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "retry-policies"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47f9e19b18c6cdd796cc70aea8a9ea5ee7b813be611c6589e3624fcdbfd05f9d"
+dependencies = [
+ "anyhow",
+ "chrono",
+ "rand 0.8.5",
+]
+
+[[package]]
+name = "rfd"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0149778bd99b6959285b0933288206090c50e2327f47a9c463bfdbf45c8823ea"
+dependencies = [
+ "block",
+ "dispatch",
+ "glib-sys",
+ "gobject-sys",
+ "gtk-sys",
+ "js-sys",
+ "lazy_static",
+ "log",
+ "objc",
+ "objc-foundation",
+ "objc_id",
+ "raw-window-handle",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "windows 0.37.0",
+]
+
+[[package]]
+name = "rustc_version"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee"
+dependencies = [
+ "semver 0.11.0",
+]
+
+[[package]]
+name = "rustc_version"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+dependencies = [
+ "semver 1.0.14",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8"
+
+[[package]]
+name = "ryu"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
+
+[[package]]
+name = "safemem"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "schannel"
+version = "0.1.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2"
+dependencies = [
+ "lazy_static",
+ "windows-sys 0.36.1",
+]
+
+[[package]]
+name = "scoped-tls"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2"
+
+[[package]]
+name = "scopeguard"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+
+[[package]]
+name = "scratch"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898"
+
+[[package]]
+name = "security-framework"
+version = "2.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "selectors"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe"
+dependencies = [
+ "bitflags",
+ "cssparser",
+ "derive_more",
+ "fxhash",
+ "log",
+ "matches",
+ "phf 0.8.0",
+ "phf_codegen",
+ "precomputed-hash",
+ "servo_arc",
+ "smallvec",
+ "thin-slice",
+]
+
+[[package]]
+name = "semver"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
+dependencies = [
+ "semver-parser",
+]
+
+[[package]]
+name = "semver"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "semver-parser"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7"
+dependencies = [
+ "pest",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.147"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.147"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.87"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45"
+dependencies = [
+ "itoa 1.0.4",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_repr"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fe39d9fbb0ebf5eb2c7cb7e2a47e4f462fad1379f1166b8ae49ad9eae89a7ca"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97"
+dependencies = [
+ "dtoa",
+ "itoa 0.4.8",
+ "serde",
+ "url",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+dependencies = [
+ "form_urlencoded",
+ "itoa 1.0.4",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_with"
+version = "1.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff"
+dependencies = [
+ "serde",
+ "serde_with_macros",
+]
+
+[[package]]
+name = "serde_with_macros"
+version = "1.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serialize-to-javascript"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb"
+dependencies = [
+ "serde",
+ "serde_json",
+ "serialize-to-javascript-impl",
+]
+
+[[package]]
+name = "serialize-to-javascript-impl"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "servo_arc"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432"
+dependencies = [
+ "nodrop",
+ "stable_deref_trait",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0"
+dependencies = [
+ "cfg-if 1.0.0",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "sharded-slab"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "shared_child"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0d94659ad3c2137fef23ae75b03d5241d633f8acded53d672decfa0e6e0caef"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "siphasher"
+version = "0.3.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
+
+[[package]]
+name = "slab"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+
+[[package]]
+name = "socket2"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "soup2"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0"
+dependencies = [
+ "bitflags",
+ "gio",
+ "glib",
+ "libc",
+ "once_cell",
+ "soup2-sys",
+]
+
+[[package]]
+name = "soup2-sys"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf"
+dependencies = [
+ "bitflags",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps 5.0.0",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "state"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b"
+dependencies = [
+ "loom",
+]
+
+[[package]]
+name = "string_cache"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08"
+dependencies = [
+ "new_debug_unreachable",
+ "once_cell",
+ "parking_lot",
+ "phf_shared 0.10.0",
+ "precomputed-hash",
+ "serde",
+]
+
+[[package]]
+name = "string_cache_codegen"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988"
+dependencies = [
+ "phf_generator 0.10.0",
+ "phf_shared 0.10.0",
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
+[[package]]
+name = "strum"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7ac893c7d471c8a21f31cfe213ec4f6d9afeed25537c772e08ef3f005f8729e"
+dependencies = [
+ "strum_macros",
+]
+
+[[package]]
+name = "strum_macros"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "339f799d8b549e3744c7ac7feb216383e4005d94bdb22561b3ab8f3b808ae9fb"
+dependencies = [
+ "heck 0.3.3",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.103"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "sysinfo"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8834e42be61ae4f6338b216fbb69837c7f33c3d4d3a139fb073735b25af4d9e"
+dependencies = [
+ "cfg-if 0.1.10",
+ "doc-comment",
+ "libc",
+ "ntapi",
+ "once_cell",
+ "rayon",
+ "winapi",
+]
+
+[[package]]
+name = "system-deps"
+version = "5.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e"
+dependencies = [
+ "cfg-expr 0.9.1",
+ "heck 0.3.3",
+ "pkg-config",
+ "toml",
+ "version-compare 0.0.11",
+]
+
+[[package]]
+name = "system-deps"
+version = "6.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2955b1fe31e1fa2fbd1976b71cc69a606d7d4da16f6de3333d0c92d51419aeff"
+dependencies = [
+ "cfg-expr 0.11.0",
+ "heck 0.4.0",
+ "pkg-config",
+ "toml",
+ "version-compare 0.1.0",
+]
+
+[[package]]
+name = "tao"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43336f5d1793543ba96e2a1e75f3a5c7dcd592743be06a0ab3a190f4fcb4b934"
+dependencies = [
+ "bitflags",
+ "cairo-rs",
+ "cc",
+ "cocoa",
+ "core-foundation",
+ "core-graphics",
+ "crossbeam-channel",
+ "dispatch",
+ "gdk",
+ "gdk-pixbuf",
+ "gdk-sys",
+ "gdkx11-sys",
+ "gio",
+ "glib",
+ "glib-sys",
+ "gtk",
+ "image",
+ "instant",
+ "jni",
+ "lazy_static",
+ "libc",
+ "log",
+ "ndk",
+ "ndk-context",
+ "ndk-sys",
+ "objc",
+ "once_cell",
+ "parking_lot",
+ "paste",
+ "png 0.17.6",
+ "raw-window-handle",
+ "scopeguard",
+ "serde",
+ "unicode-segmentation",
+ "uuid 1.2.1",
+ "windows 0.39.0",
+ "windows-implement",
+ "x11-dl",
+]
+
+[[package]]
+name = "tar"
+version = "0.4.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6"
+dependencies = [
+ "filetime",
+ "libc",
+ "xattr",
+]
+
+[[package]]
+name = "task-local-extensions"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4167afbec18ae012de40f8cf1b9bf48420abb390678c34821caa07d924941cc4"
+dependencies = [
+ "tokio",
+]
+
+[[package]]
+name = "tauri"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "efbf22abd61d95ca9b2becd77f9db4c093892f73e8a07d21d8b0b2bf71a7bcea"
+dependencies = [
+ "anyhow",
+ "attohttpc 0.22.0",
+ "cocoa",
+ "dirs-next 2.0.0",
+ "embed_plist",
+ "encoding_rs",
+ "flate2",
+ "futures-util",
+ "glib",
+ "glob",
+ "gtk",
+ "heck 0.4.0",
+ "http",
+ "ignore",
+ "notify-rust",
+ "objc",
+ "once_cell",
+ "open",
+ "os_info",
+ "os_pipe",
+ "percent-encoding",
+ "rand 0.8.5",
+ "raw-window-handle",
+ "regex",
+ "rfd",
+ "semver 1.0.14",
+ "serde",
+ "serde_json",
+ "serde_repr",
+ "serialize-to-javascript",
+ "shared_child",
+ "state",
+ "tar",
+ "tauri-macros",
+ "tauri-runtime",
+ "tauri-runtime-wry",
+ "tauri-utils 1.1.1",
+ "tempfile",
+ "thiserror",
+ "tokio",
+ "url",
+ "uuid 1.2.1",
+ "webkit2gtk",
+ "webview2-com",
+ "windows 0.39.0",
+]
+
+[[package]]
+name = "tauri-api"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f33b957c35a7d8363a7c819b38849d174b03bb2eeccf089027c59fcf7f6e02e"
+dependencies = [
+ "anyhow",
+ "attohttpc 0.16.3",
+ "dirs-next 1.0.2",
+ "either",
+ "flate2",
+ "http",
+ "nfd",
+ "once_cell",
+ "rand 0.7.3",
+ "semver 0.11.0",
+ "serde",
+ "serde_json",
+ "serde_repr",
+ "tar",
+ "tauri-dialog",
+ "tauri-utils 0.5.1",
+ "tempfile",
+ "thiserror",
+ "zip",
+]
+
+[[package]]
+name = "tauri-build"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0991fb306849897439dbd4a72e4cbed2413e2eb26cb4b3ba220b94edba8b4b88"
+dependencies = [
+ "anyhow",
+ "cargo_toml",
+ "heck 0.4.0",
+ "json-patch",
+ "semver 1.0.14",
+ "serde_json",
+ "tauri-utils 1.1.1",
+ "winres",
+]
+
+[[package]]
+name = "tauri-codegen"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "356fa253e40ae4d6ff02075011f2f2bb4066f5c9d8c1e16ca6912d7b75903ba6"
+dependencies = [
+ "base64",
+ "brotli",
+ "ico",
+ "json-patch",
+ "plist",
+ "png 0.17.6",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "semver 1.0.14",
+ "serde",
+ "serde_json",
+ "sha2",
+ "tauri-utils 1.1.1",
+ "thiserror",
+ "time 0.3.15",
+ "uuid 1.2.1",
+ "walkdir",
+]
+
+[[package]]
+name = "tauri-dialog"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc74d9511f0aa28b273bf385d1a9283f1c775c2d0ed7a9f325676ba0ef903cea"
+dependencies = [
+ "tauri-dialog-sys",
+]
+
+[[package]]
+name = "tauri-dialog-sys"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d516a2bc034526cb071aa5fb854aa2c55ba13687b3eeae5df83f9c790dcb0ca"
+dependencies = [
+ "cc",
+ "pkg-config",
+]
+
+[[package]]
+name = "tauri-macros"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6051fd6940ddb22af452340d03c66a3e2f5d72e0788d4081d91e31528ccdc4d"
+dependencies = [
+ "heck 0.4.0",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "tauri-codegen",
+ "tauri-utils 1.1.1",
+]
+
+[[package]]
+name = "tauri-runtime"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d49439a5ea47f474572b854972f42eda2e02a470be5ca9609cc83bb66945abe2"
+dependencies = [
+ "gtk",
+ "http",
+ "http-range",
+ "infer",
+ "rand 0.8.5",
+ "raw-window-handle",
+ "serde",
+ "serde_json",
+ "tauri-utils 1.1.1",
+ "thiserror",
+ "uuid 1.2.1",
+ "webview2-com",
+ "windows 0.39.0",
+]
+
+[[package]]
+name = "tauri-runtime-wry"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28dce920995fd49907aa9bea7249ed1771454f11f7611924c920a1f75fb614d4"
+dependencies = [
+ "cocoa",
+ "gtk",
+ "percent-encoding",
+ "rand 0.8.5",
+ "raw-window-handle",
+ "tauri-runtime",
+ "tauri-utils 1.1.1",
+ "uuid 1.2.1",
+ "webkit2gtk",
+ "webview2-com",
+ "windows 0.39.0",
+ "wry",
+]
+
+[[package]]
+name = "tauri-utils"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d8a4b0daeec9b0493cf894a918ba30e6768d6cca1cab757f802a9e78bc0bbfd"
+dependencies = [
+ "anyhow",
+ "sysinfo",
+ "thiserror",
+]
+
+[[package]]
+name = "tauri-utils"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e8fdae6f29cef959809a3c3afef510c5b715a446a597ab8b791497585363f39"
+dependencies = [
+ "brotli",
+ "ctor",
+ "glob",
+ "heck 0.4.0",
+ "html5ever",
+ "json-patch",
+ "kuchiki",
+ "memchr",
+ "phf 0.10.1",
+ "proc-macro2",
+ "quote",
+ "semver 1.0.14",
+ "serde",
+ "serde_json",
+ "serde_with",
+ "thiserror",
+ "url",
+ "walkdir",
+ "windows 0.39.0",
+]
+
+[[package]]
+name = "tauri-winrt-notification"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c58de036c4d2e20717024de2a3c4bf56c301f07b21bc8ef9b57189fce06f1f3b"
+dependencies = [
+ "quick-xml",
+ "strum",
+ "windows 0.39.0",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
+dependencies = [
+ "cfg-if 1.0.0",
+ "fastrand",
+ "libc",
+ "redox_syscall",
+ "remove_dir_all",
+ "winapi",
+]
+
+[[package]]
+name = "tendril"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0"
+dependencies = [
+ "futf",
+ "mac",
+ "utf-8",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "thin-slice"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c"
+
+[[package]]
+name = "thiserror"
+version = "1.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "time"
+version = "0.1.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
+dependencies = [
+ "libc",
+ "wasi 0.10.0+wasi-snapshot-preview1",
+ "winapi",
+]
+
+[[package]]
+name = "time"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d634a985c4d4238ec39cacaed2e7ae552fbd3c476b552c1deac3021b7d7eaf0c"
+dependencies = [
+ "itoa 1.0.4",
+ "libc",
+ "num_threads",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
+
+[[package]]
+name = "tokio"
+version = "1.21.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099"
+dependencies = [
+ "autocfg",
+ "bytes",
+ "libc",
+ "memchr",
+ "mio",
+ "num_cpus",
+ "parking_lot",
+ "pin-project-lite",
+ "signal-hook-registry",
+ "socket2",
+ "tokio-macros",
+ "winapi",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tokio-native-tls"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b"
+dependencies = [
+ "native-tls",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "pin-project-lite",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "toml"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "tower-service"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+
+[[package]]
+name = "tracing"
+version = "0.1.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+dependencies = [
+ "cfg-if 1.0.0",
+ "log",
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"
+dependencies = [
+ "once_cell",
+ "valuable",
+]
+
+[[package]]
+name = "tracing-log"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
+dependencies = [
+ "lazy_static",
+ "log",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.3.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70"
+dependencies = [
+ "matchers",
+ "nu-ansi-term",
+ "once_cell",
+ "regex",
+ "sharded-slab",
+ "smallvec",
+ "thread_local",
+ "tracing",
+ "tracing-core",
+ "tracing-log",
+]
+
+[[package]]
+name = "treediff"
+version = "3.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "761e8d5ad7ce14bb82b7e61ccc0ca961005a275a060b9644a2431aa11553c2ff"
+dependencies = [
+ "serde_json",
+]
+
+[[package]]
+name = "try-lock"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
+
+[[package]]
+name = "typenum"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
+
+[[package]]
+name = "ucd-trie"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81"
+
+[[package]]
+name = "unicase"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+
+[[package]]
+name = "url"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+ "serde",
+]
+
+[[package]]
+name = "utf-8"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
+
+[[package]]
+name = "uuid"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
+
+[[package]]
+name = "uuid"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "feb41e78f93363bb2df8b0e86a2ca30eed7806ea16ea0c790d757cf93f79be83"
+dependencies = [
+ "getrandom 0.2.8",
+]
+
+[[package]]
+name = "valuable"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[package]]
+name = "version-compare"
+version = "0.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b"
+
+[[package]]
+name = "version-compare"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "walkdir"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
+dependencies = [
+ "same-file",
+ "winapi",
+ "winapi-util",
+]
+
+[[package]]
+name = "want"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0"
+dependencies = [
+ "log",
+ "try-lock",
+]
+
+[[package]]
+name = "wasi"
+version = "0.9.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
+
+[[package]]
+name = "wasi"
+version = "0.10.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268"
+dependencies = [
+ "cfg-if 1.0.0",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d"
+dependencies = [
+ "cfg-if 1.0.0",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f"
+
+[[package]]
+name = "web-sys"
+version = "0.3.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "webkit2gtk"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370"
+dependencies = [
+ "bitflags",
+ "cairo-rs",
+ "gdk",
+ "gdk-sys",
+ "gio",
+ "gio-sys",
+ "glib",
+ "glib-sys",
+ "gobject-sys",
+ "gtk",
+ "gtk-sys",
+ "javascriptcore-rs",
+ "libc",
+ "once_cell",
+ "soup2",
+ "webkit2gtk-sys",
+]
+
+[[package]]
+name = "webkit2gtk-sys"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3"
+dependencies = [
+ "atk-sys",
+ "bitflags",
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "gtk-sys",
+ "javascriptcore-rs-sys",
+ "libc",
+ "pango-sys",
+ "pkg-config",
+ "soup2-sys",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "webview2-com"
+version = "0.19.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178"
+dependencies = [
+ "webview2-com-macros",
+ "webview2-com-sys",
+ "windows 0.39.0",
+ "windows-implement",
+]
+
+[[package]]
+name = "webview2-com-macros"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "webview2-com-sys"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7"
+dependencies = [
+ "regex",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "windows 0.39.0",
+ "windows-bindgen",
+ "windows-metadata",
+]
+
+[[package]]
+name = "wildmatch"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f44b95f62d34113cf558c93511ac93027e03e9c29a60dd0fd70e6e025c7270a"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows"
+version = "0.32.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbedf6db9096bc2364adce0ae0aa636dcd89f3c3f2cd67947062aaf0ca2a10ec"
+dependencies = [
+ "windows_aarch64_msvc 0.32.0",
+ "windows_i686_gnu 0.32.0",
+ "windows_i686_msvc 0.32.0",
+ "windows_x86_64_gnu 0.32.0",
+ "windows_x86_64_msvc 0.32.0",
+]
+
+[[package]]
+name = "windows"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647"
+dependencies = [
+ "windows_aarch64_msvc 0.37.0",
+ "windows_i686_gnu 0.37.0",
+ "windows_i686_msvc 0.37.0",
+ "windows_x86_64_gnu 0.37.0",
+ "windows_x86_64_msvc 0.37.0",
+]
+
+[[package]]
+name = "windows"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a"
+dependencies = [
+ "windows-implement",
+ "windows_aarch64_msvc 0.39.0",
+ "windows_i686_gnu 0.39.0",
+ "windows_i686_msvc 0.39.0",
+ "windows_x86_64_gnu 0.39.0",
+ "windows_x86_64_msvc 0.39.0",
+]
+
+[[package]]
+name = "windows-bindgen"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41"
+dependencies = [
+ "windows-metadata",
+ "windows-tokens",
+]
+
+[[package]]
+name = "windows-implement"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7"
+dependencies = [
+ "syn",
+ "windows-tokens",
+]
+
+[[package]]
+name = "windows-metadata"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278"
+
+[[package]]
+name = "windows-sys"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2"
+dependencies = [
+ "windows_aarch64_msvc 0.36.1",
+ "windows_i686_gnu 0.36.1",
+ "windows_i686_msvc 0.36.1",
+ "windows_x86_64_gnu 0.36.1",
+ "windows_x86_64_msvc 0.36.1",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc 0.42.0",
+ "windows_i686_gnu 0.42.0",
+ "windows_i686_msvc 0.42.0",
+ "windows_x86_64_gnu 0.42.0",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc 0.42.0",
+]
+
+[[package]]
+name = "windows-tokens"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.32.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.32.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.32.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.32.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.32.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"
+
+[[package]]
+name = "winreg"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winres"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b68db261ef59e9e52806f688020631e987592bd83619edccda9c47d42cde4f6c"
+dependencies = [
+ "toml",
+]
+
+[[package]]
+name = "wry"
+version = "0.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff5c1352b4266fdf92c63479d2f58ab4cd29dc4e78fbc1b62011ed1227926945"
+dependencies = [
+ "base64",
+ "block",
+ "cocoa",
+ "core-graphics",
+ "crossbeam-channel",
+ "gdk",
+ "gio",
+ "glib",
+ "gtk",
+ "html5ever",
+ "http",
+ "kuchiki",
+ "libc",
+ "log",
+ "objc",
+ "objc_id",
+ "once_cell",
+ "serde",
+ "serde_json",
+ "sha2",
+ "tao",
+ "thiserror",
+ "url",
+ "webkit2gtk",
+ "webkit2gtk-sys",
+ "webview2-com",
+ "windows 0.39.0",
+ "windows-implement",
+]
+
+[[package]]
+name = "x11"
+version = "2.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7ae97874a928d821b061fce3d1fc52f08071dd53c89a6102bc06efcac3b2908"
+dependencies = [
+ "libc",
+ "pkg-config",
+]
+
+[[package]]
+name = "x11-dl"
+version = "2.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c83627bc137605acc00bb399c7b908ef460b621fc37c953db2b09f88c449ea6"
+dependencies = [
+ "lazy_static",
+ "libc",
+ "pkg-config",
+]
+
+[[package]]
+name = "xattr"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "xml-rs"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3"
+
+[[package]]
+name = "zip"
+version = "0.5.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815"
+dependencies = [
+ "byteorder",
+ "bzip2",
+ "crc32fast",
+ "flate2",
+ "thiserror",
+ "time 0.1.44",
+]
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
new file mode 100644
index 00000000..fa49d47f
--- /dev/null
+++ b/src-tauri/Cargo.toml
@@ -0,0 +1,44 @@
+[package]
+name = "app"
+version = "0.1.0"
+description = "A Tauri App"
+authors = ["you"]
+license = ""
+repository = ""
+default-run = "app"
+edition = "2021"
+rust-version = "1.57"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[lib]
+name = "lib"
+path = "lib/src/lib.rs"
+
+[build-dependencies]
+tauri-build = { version = "1.1.1", features = [] }
+
+[dependencies]
+serde_json = "1.0"
+serde = { version = "1.0", features = ["derive"] }
+tauri = { version = "1.1.1", features = ["api-all"] }
+wry = "0.21.1"
+
+tauri-api = "0.7.5"
+strsim = "0.10.0"
+
+csv = "1.1.6"
+tokio = { version = "1.2", features = ["full"] }
+tracing = { version = "0.1", features = ["log"] }
+tracing-subscriber = { version = "0.3", features = ["env-filter"] }
+dotenv = "0.15"
+reqwest = { version = "0.11", features = ["json"] }
+reqwest-retry = "0.1.1"
+
+[features]
+# by default Tauri runs in production mode
+# when `tauri dev` runs it is executed with `cargo run --no-default-features` if `devPath` is an URL
+default = [ "custom-protocol" ]
+# this feature is used for production builds where `devPath` points to the filesystem
+# DO NOT remove this
+custom-protocol = [ "tauri/custom-protocol" ]
diff --git a/src-tauri/build.rs b/src-tauri/build.rs
new file mode 100644
index 00000000..795b9b7c
--- /dev/null
+++ b/src-tauri/build.rs
@@ -0,0 +1,3 @@
+fn main() {
+ tauri_build::build()
+}
diff --git a/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png
new file mode 100644
index 00000000..6be5e50e
Binary files /dev/null and b/src-tauri/icons/128x128.png differ
diff --git a/src-tauri/icons/128x128@2x.png b/src-tauri/icons/128x128@2x.png
new file mode 100644
index 00000000..e81becee
Binary files /dev/null and b/src-tauri/icons/128x128@2x.png differ
diff --git a/src-tauri/icons/32x32.png b/src-tauri/icons/32x32.png
new file mode 100644
index 00000000..a437dd51
Binary files /dev/null and b/src-tauri/icons/32x32.png differ
diff --git a/src-tauri/icons/Square107x107Logo.png b/src-tauri/icons/Square107x107Logo.png
new file mode 100644
index 00000000..0ca4f271
Binary files /dev/null and b/src-tauri/icons/Square107x107Logo.png differ
diff --git a/src-tauri/icons/Square142x142Logo.png b/src-tauri/icons/Square142x142Logo.png
new file mode 100644
index 00000000..b81f8203
Binary files /dev/null and b/src-tauri/icons/Square142x142Logo.png differ
diff --git a/src-tauri/icons/Square150x150Logo.png b/src-tauri/icons/Square150x150Logo.png
new file mode 100644
index 00000000..624c7bfb
Binary files /dev/null and b/src-tauri/icons/Square150x150Logo.png differ
diff --git a/src-tauri/icons/Square284x284Logo.png b/src-tauri/icons/Square284x284Logo.png
new file mode 100644
index 00000000..c021d2ba
Binary files /dev/null and b/src-tauri/icons/Square284x284Logo.png differ
diff --git a/src-tauri/icons/Square30x30Logo.png b/src-tauri/icons/Square30x30Logo.png
new file mode 100644
index 00000000..62197002
Binary files /dev/null and b/src-tauri/icons/Square30x30Logo.png differ
diff --git a/src-tauri/icons/Square310x310Logo.png b/src-tauri/icons/Square310x310Logo.png
new file mode 100644
index 00000000..f9bc0483
Binary files /dev/null and b/src-tauri/icons/Square310x310Logo.png differ
diff --git a/src-tauri/icons/Square44x44Logo.png b/src-tauri/icons/Square44x44Logo.png
new file mode 100644
index 00000000..d5fbfb2a
Binary files /dev/null and b/src-tauri/icons/Square44x44Logo.png differ
diff --git a/src-tauri/icons/Square71x71Logo.png b/src-tauri/icons/Square71x71Logo.png
new file mode 100644
index 00000000..63440d79
Binary files /dev/null and b/src-tauri/icons/Square71x71Logo.png differ
diff --git a/src-tauri/icons/Square89x89Logo.png b/src-tauri/icons/Square89x89Logo.png
new file mode 100644
index 00000000..f3f705af
Binary files /dev/null and b/src-tauri/icons/Square89x89Logo.png differ
diff --git a/src-tauri/icons/StoreLogo.png b/src-tauri/icons/StoreLogo.png
new file mode 100644
index 00000000..45563882
Binary files /dev/null and b/src-tauri/icons/StoreLogo.png differ
diff --git a/src-tauri/icons/icon.icns b/src-tauri/icons/icon.icns
new file mode 100644
index 00000000..87f09b40
Binary files /dev/null and b/src-tauri/icons/icon.icns differ
diff --git a/src-tauri/icons/icon.ico b/src-tauri/icons/icon.ico
new file mode 100644
index 00000000..b3636e4b
Binary files /dev/null and b/src-tauri/icons/icon.ico differ
diff --git a/src-tauri/icons/icon.png b/src-tauri/icons/icon.png
new file mode 100644
index 00000000..e1cd2619
Binary files /dev/null and b/src-tauri/icons/icon.png differ
diff --git a/src-tauri/lib/.gitignore b/src-tauri/lib/.gitignore
new file mode 100644
index 00000000..4fffb2f8
--- /dev/null
+++ b/src-tauri/lib/.gitignore
@@ -0,0 +1,2 @@
+/target
+/Cargo.lock
diff --git a/src-tauri/lib/Cargo.toml b/src-tauri/lib/Cargo.toml
new file mode 100644
index 00000000..7c0906d9
--- /dev/null
+++ b/src-tauri/lib/Cargo.toml
@@ -0,0 +1,18 @@
+[package]
+name = "lib"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+csv = "1.1.6"
+serde = { version = "1.0", features = ["derive"] }
+tokio = { version = "1.2", features = ["full"] }
+tracing = { version = "0.1", features = ["log"] }
+tracing-subscriber = { version = "0.3", features = ["env-filter"] }
+dotenv = "0.15"
+serde_json = "1.0"
+reqwest = { version = "0.11", features = ["json"] }
+reqwest-retry = "0.1.1"
+strsim = "0.10.0"
\ No newline at end of file
diff --git a/src-tauri/lib/src/config/mod.rs b/src-tauri/lib/src/config/mod.rs
new file mode 100644
index 00000000..f41b4160
--- /dev/null
+++ b/src-tauri/lib/src/config/mod.rs
@@ -0,0 +1,2 @@
+mod total_divines_config;
+pub use total_divines_config::TotalDivinesConfig;
diff --git a/src-tauri/lib/src/config/total_divines_config.rs b/src-tauri/lib/src/config/total_divines_config.rs
new file mode 100644
index 00000000..537d272f
--- /dev/null
+++ b/src-tauri/lib/src/config/total_divines_config.rs
@@ -0,0 +1,49 @@
+use crate::error::Error;
+use std::env;
+
+pub struct TotalDivinesConfig {
+ pub card_price: f32,
+ pub divine_price: f32,
+ pub filename: String,
+}
+
+impl TotalDivinesConfig {
+ pub fn new(mut args: core::iter::Skip) -> Result {
+ let card_price: f32 = match args.next() {
+ Some(arg) => match arg.parse() {
+ Ok(arg) => arg,
+ Err(err) => return Err(Error::ParseError("Problem with card price parsing", err)),
+ },
+ None => {
+ return Err(Error::ConfigError(
+ "Didnt get a chaos price(first argument)",
+ ))
+ }
+ };
+
+ let divine_price: f32 = match args.next() {
+ Some(arg) => match arg.parse() {
+ Ok(arg) => arg,
+ Err(err) => {
+ return Err(Error::ParseError("Problem with divine price parsing", err))
+ }
+ },
+ None => {
+ return Err(Error::ConfigError(
+ "Didnt get a divine price(second argument)",
+ ))
+ }
+ };
+
+ let filename = match args.next() {
+ Some(arg) => arg,
+ None => return Err(Error::ConfigError("Didnt get a file name(third argument)")),
+ };
+
+ Ok(TotalDivinesConfig {
+ card_price,
+ divine_price,
+ filename,
+ })
+ }
+}
diff --git a/src-tauri/lib/src/csvm.rs b/src-tauri/lib/src/csvm.rs
new file mode 100644
index 00000000..802f27e8
--- /dev/null
+++ b/src-tauri/lib/src/csvm.rs
@@ -0,0 +1,103 @@
+/*
+pub fn write_sold(initial_path: &str, after_path: &str) -> Result<(), Error> {
+ let initial_vec = get_records_from_csv(initial_path, None)?;
+ let after_vec = get_records_from_csv(after_path, None)?;
+ write_to_csv(&initial_vec, "output_initial.csv")?;
+
+ let mut initial_map = HashMap::::new();
+ let mut after_map = HashMap::::new();
+
+ for record in initial_vec {
+ initial_map.insert(record.name.clone(), record);
+ }
+
+ for record in after_vec {
+ after_map.insert(record.name.clone(), record);
+ }
+
+ let mut sold_vec = Vec::::new();
+ for (name, record) in initial_map {
+ let after_record = after_map.entry(name.clone()).or_insert(Record::default());
+ after_record.name = record.name.clone();
+ after_record.calculated = record.calculated;
+
+ let calculated = match record.calculated {
+ Some(price) => price,
+ None => match &name {
+ _ if record::is_legacy_card(&name) => 0.0,
+ _ => return Err(Error::NoPriceError(name.to_string())),
+ },
+ };
+
+ let stack_size = record.stack_size - after_record.stack_size;
+ let total = calculated * stack_size as f32;
+
+ let sold_record = Record {
+ name: name.clone(),
+ calculated: Some(calculated),
+ stack_size,
+ total: Some(total),
+ };
+
+ sold_vec.push(sold_record);
+ }
+
+ let nullified_after_vector = after_map.values().cloned().collect::>();
+
+ write_to_csv(&nullified_after_vector, "output_after.csv")?;
+ write_to_csv(&sold_vec, "output_sold.csv")?;
+
+ Ok(())
+}
+*/
+
+/*
+pub fn write_add_sold_to_final(final_path: &str, sold_path: &str) -> Result<(), Error> {
+ let final_vec = get_records_from_csv(final_path, None)?;
+ let sold_vec = get_records_from_csv(sold_path, None)?;
+
+ let mut final_map = HashMap::::new();
+ for record in final_vec {
+ final_map.insert(record.name.clone(), record);
+ }
+
+ let mut sold_map = HashMap::::new();
+ for record in sold_vec {
+ sold_map.insert(record.name.clone(), record);
+ }
+
+ let mut summarized_vec: Vec = vec![];
+ for (name, record) in sold_map {
+ let mut final_record = final_map.entry(name.clone()).or_insert(Record::default());
+ final_record.name = name.clone();
+ final_record.calculated = record.calculated;
+
+ let calculated = record.calculated;
+ let stack_size = record.stack_size + final_record.stack_size;
+ let total = calculated * stack_size as f32;
+ let summarized_record = Record {
+ stack_size,
+ name,
+ calculated,
+ total,
+ };
+
+ summarized_vec.push(summarized_record);
+ }
+
+ write_to_csv(&summarized_vec, "output_final_plus_sold.csv")?;
+
+ Ok(())
+}*/
+
+/*
+pub fn add_sold_diff_in_one_function(
+ initial_path: &str,
+ after_path: &str,
+ final_path: &str,
+) -> Result<(), Error> {
+ write_sold(initial_path, after_path)?;
+ write_add_sold_to_final(final_path, "output_sold.csv")?;
+
+ Ok(())
+}*/
diff --git a/src-tauri/lib/src/dev.rs b/src-tauri/lib/src/dev.rs
new file mode 100644
index 00000000..634a35bd
--- /dev/null
+++ b/src-tauri/lib/src/dev.rs
@@ -0,0 +1,15 @@
+use tracing_subscriber::fmt::format::FmtSpan;
+
+pub fn init_tracing() {
+ let log_filter = match std::env::var("RUST_LOG") {
+ Ok(filter) => filter,
+ Err(_) => String::from("app=debug,tauri=debug,lib=debug"),
+ };
+
+ println!("tracing mode: {}", log_filter);
+
+ tracing_subscriber::fmt()
+ .with_env_filter(log_filter)
+ .with_span_events(FmtSpan::CLOSE)
+ .init();
+}
diff --git a/src-tauri/lib/src/error.rs b/src-tauri/lib/src/error.rs
new file mode 100644
index 00000000..e11a61b3
--- /dev/null
+++ b/src-tauri/lib/src/error.rs
@@ -0,0 +1,71 @@
+use serde::Serialize;
+
+#[derive(Debug)]
+pub enum Error {
+ ConfigurationError,
+ ConfigError(&'static str),
+ CSVError(csv::Error),
+ ParseError(&'static str, std::num::ParseFloatError),
+ IOError(&'static str, std::io::Error),
+ NoPriceError(String),
+ NotDivinationCard(String),
+ FromUtf8Error(std::string::FromUtf8Error),
+ ReqwestError(reqwest::Error),
+}
+
+impl std::fmt::Display for Error {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ match &*self {
+ Error::ConfigurationError => write!(f, "Configuration error"),
+ Error::ConfigError(err_str) => write!(f, "No argument: {}. Example usage: ./divcards 5.5 200 data.csv\nWhere 5.5 - minimal card price, 200 - divine price in chaos, data.csv - path to data file", err_str),
+ Error::ParseError(err_str, _) => {
+ write!(f, "Parse error: {}. ", err_str)
+ }
+ Error::CSVError(ref err) => write!(f, "{}", err),
+ Error::IOError(err_str, ref err) => write!(f, "{} : {}", err_str, err),
+ Error::NoPriceError(name) => write!(f, "Divination card has no price. Card name: {}", name),
+ Error::NotDivinationCard(name) => write!(f, "This item is probably not a divination card: {}", name),
+ Error::FromUtf8Error(err) => write!(f, "{}", err),
+ Error::ReqwestError(err) => write!(f, "{}", err),
+ }
+ }
+}
+
+impl Serialize for Error {
+ fn serialize(&self, serializer: S) -> Result
+ where
+ S: serde::Serializer,
+ {
+ serializer.serialize_str(self.to_string().as_ref())
+ }
+}
+
+// impl From for Error {
+// fn from(err: std::num::ParseIntError) -> Self {
+// Error::Parse(err)
+// }
+// }
+
+impl From for Error {
+ fn from(err: std::string::FromUtf8Error) -> Self {
+ Error::FromUtf8Error(err)
+ }
+}
+
+impl From for Error {
+ fn from(err: csv::Error) -> Self {
+ Error::CSVError(err)
+ }
+}
+
+impl From for Error {
+ fn from(err: reqwest::Error) -> Self {
+ Error::ReqwestError(err)
+ }
+}
+
+impl From for Error {
+ fn from(err: std::io::Error) -> Self {
+ Error::IOError("", err)
+ }
+}
diff --git a/src-tauri/lib/src/lib.rs b/src-tauri/lib/src/lib.rs
new file mode 100644
index 00000000..930b910e
--- /dev/null
+++ b/src-tauri/lib/src/lib.rs
@@ -0,0 +1,36 @@
+#![allow(dead_code)]
+
+pub fn add(left: usize, right: usize) -> usize {
+ left + right
+}
+
+pub mod config;
+pub mod dev;
+pub mod error;
+pub mod types;
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn it_works() {
+ let result = add(2, 2);
+ assert_eq!(result, 4);
+
+ // let mut map = std::collections::HashMap::<&str, i32>::new();
+ // map.insert("The Doctor", 4000);
+ // map.insert("The Mayor", 50);
+ // let max = map
+ // .iter()
+ // .max_by(|a, b| {
+ // println!("a: {a:?} , b: {b:?}");
+ // a.1.cmp(&b.1)
+ // })
+ // .map(|(k, _v)| k);
+ // println!("max: {:?}", max);
+
+ let a = strsim::normalized_damerau_levenshtein("The Hook", "The Hook");
+ println!("{a}");
+ }
+}
diff --git a/src-tauri/lib/src/types/card.rs b/src-tauri/lib/src/types/card.rs
new file mode 100644
index 00000000..1a0d0efc
--- /dev/null
+++ b/src-tauri/lib/src/types/card.rs
@@ -0,0 +1,10 @@
+use serde::{Deserialize, Serialize};
+
+#[derive(Debug, Deserialize, Serialize, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct Card {
+ pub name: String,
+ // #[serde(rename = "chaosValue")]
+ // #[serde(rename(serialize = "calculated", deserialize = "chaosValue"))]
+ // pub calculated: f32,
+}
diff --git a/src-tauri/lib/src/types/mod.rs b/src-tauri/lib/src/types/mod.rs
new file mode 100644
index 00000000..60b34092
--- /dev/null
+++ b/src-tauri/lib/src/types/mod.rs
@@ -0,0 +1,3 @@
+pub mod card;
+pub mod record;
+pub mod weighted_record;
diff --git a/src-tauri/lib/src/types/record/csv/file.rs b/src-tauri/lib/src/types/record/csv/file.rs
new file mode 100644
index 00000000..4c075856
--- /dev/null
+++ b/src-tauri/lib/src/types/record/csv/file.rs
@@ -0,0 +1,145 @@
+use std::{collections::HashMap, fs::File};
+
+// use csv::Reader;
+use tracing::instrument;
+
+use crate::error::Error;
+
+use crate::types::record::{self, Record};
+
+#[instrument]
+pub fn read(path: &str, minimum_card_price: Option) -> Result, Error> {
+ let mut reader: csv::Reader = match csv::Reader::from_path(path) {
+ Ok(r) => r,
+ Err(err) => {
+ tracing::event!(tracing::Level::ERROR, "{:?}", err);
+ return Err(Error::CSVError(err));
+ }
+ };
+
+ let price = minimum_card_price;
+
+ let mut records: Vec = vec![];
+ for record in reader.deserialize::() {
+ let record = match record {
+ Ok(r) => r,
+ Err(err) => return Err(Error::CSVError(err)),
+ };
+
+ if record.calculated.unwrap_or_default() >= price.unwrap_or_default() {
+ records.push(record);
+ }
+ }
+
+ Ok(records)
+}
+
+pub fn write(records: &Vec, path: &str) -> Result<(), Error> {
+ let mut writer = match csv::Writer::from_path(path) {
+ Ok(writer) => writer,
+ Err(err) => {
+ tracing::event!(tracing::Level::ERROR, "{:?}", err);
+ return Err(Error::CSVError(err));
+ }
+ };
+
+ for record in records {
+ match writer.serialize(record) {
+ Ok(r) => r,
+ Err(err) => {
+ tracing::event!(tracing::Level::ERROR, "{:?}", err);
+ return Err(Error::CSVError(err));
+ }
+ }
+ }
+
+ Ok(())
+}
+
+// / Merges correct csv divination card files into one.
+// / # Example usage:
+// /
+// / ```rust
+// / merge_n_files(
+// / starter_map,
+// / &[
+// / "ready_files/5k.csv",
+// / "ready_files/6066.csv",
+// / "ready_files/40k.csv",
+// / ],
+// / "ready_files/output.csv",
+// / )?;
+// / ```
+fn merge_n_files(
+ starter_map: HashMap<&'static str, Record>,
+ file_paths: &[&str],
+ output_path: &str,
+) -> Result<(), Error> {
+ let mut vectors: Vec> = vec![];
+ let mut maps: Vec> = vec![];
+ for path in file_paths {
+ let v: Vec = read(path, None)?;
+ vectors.push(v);
+ }
+
+ for vector in vectors {
+ let map: HashMap<&str, Record> = record::vec_to_map(vector, starter_map.clone())?;
+ maps.push(map);
+ }
+
+ let mut new_vec: Vec = vec![];
+ for (name, record) in starter_map {
+ let mut same_name_records: Vec<&Record> = vec![];
+ for map in &maps {
+ let record: &Record = map.get(name).unwrap();
+ same_name_records.push(record);
+ }
+
+ let mut new_record = Record::default();
+ new_record.name = name.to_string();
+
+ let calculated = match record.calculated {
+ Some(price) => price,
+ None => match name {
+ _ if record::is_legacy_card(name) => 0.0,
+ _ => return Err(Error::NoPriceError(name.to_string())),
+ },
+ };
+
+ new_record.calculated = Some(calculated);
+
+ new_record.stack_size = same_name_records.iter().map(|r| r.stack_size).sum();
+ new_record.total = Some(new_record.stack_size as f32 * calculated);
+
+ new_vec.push(new_record);
+ }
+
+ write(&new_vec, output_path)?;
+
+ Ok(())
+}
+
+pub fn write_empty_table(output_path: &str) -> Result<(), Error> {
+ let mut records: Vec = vec![];
+ for name in record::NAMES {
+ let mut new_record = Record::default();
+ new_record.name = name.to_string();
+
+ records.push(new_record);
+ }
+
+ write(&records, output_path)?;
+
+ Ok(())
+}
+
+pub fn read_polish_write(
+ input_path: &str,
+ output_path: &str,
+ starter_map: HashMap<&'static str, Record>,
+) -> Result<(), Error> {
+ let rec = read(input_path, None)?;
+ let rec = record::polish_records(rec, starter_map)?;
+ write(&rec, output_path)?;
+ Ok(())
+}
diff --git a/src-tauri/lib/src/types/record/csv/mod.rs b/src-tauri/lib/src/types/record/csv/mod.rs
new file mode 100644
index 00000000..81265331
--- /dev/null
+++ b/src-tauri/lib/src/types/record/csv/mod.rs
@@ -0,0 +1,10 @@
+pub mod file;
+pub mod string;
+
+// use crate::error::Error;
+
+// pub fn calc_divines_from_csv(config: TotalDivinesConfig) -> Result {
+// let records = record::csv::read(&config.filename, Some(config.card_price))?;
+// let divines = record::total_price_divine(&records, config.divine_price);
+// Ok(divines)
+// }
diff --git a/src-tauri/lib/src/types/record/csv/string.rs b/src-tauri/lib/src/types/record/csv/string.rs
new file mode 100644
index 00000000..c4c99a0a
--- /dev/null
+++ b/src-tauri/lib/src/types/record/csv/string.rs
@@ -0,0 +1,191 @@
+use std::collections::HashMap;
+use std::vec;
+
+use csv::Reader;
+use tracing::instrument;
+// use tracing::instrument;
+
+use crate::error::Error;
+
+use crate::types::record::{self, Record};
+
+pub fn read(content_string: &str, minimum_card_price: Option) -> Result, Error> {
+ let mut reader = Reader::from_reader(content_string.as_bytes());
+
+ let mut records: Vec = vec![];
+ for record in reader.deserialize::() {
+ let record = record?;
+
+ if record.calculated.unwrap_or_default() >= minimum_card_price.unwrap_or_default() {
+ records.push(record);
+ }
+ }
+ Ok(records)
+}
+
+pub fn write(records: &Vec) -> Result {
+ let mut writer = csv::Writer::from_writer(vec![]);
+ for record in records {
+ writer.serialize(record)?;
+ }
+ let content_string = String::from_utf8(writer.into_inner().expect("Error with csv serialize"))?;
+ Ok(content_string)
+}
+
+#[instrument]
+pub fn read_polish_write(
+ content_string: &str,
+ map: HashMap<&'static str, Record>,
+ minimum_card_price: Option,
+) -> Result {
+ let records = read(content_string, minimum_card_price)?;
+ let records = record::polish_records(records, map)?;
+ let output_content_string = write(&records)?;
+ Ok(output_content_string)
+}
+
+pub fn total_chaos(content_string: &str, minimum_card_price: Option) -> Result {
+ let records = read(content_string, minimum_card_price)?;
+ Ok(record::total_price_chaos(&records))
+}
+
+pub fn merge(
+ starter_map: HashMap<&'static str, Record>,
+ csv_file_strings: &[&str],
+) -> Result {
+ let mut vectors: Vec> = vec![];
+ let mut maps: Vec> = vec![];
+
+ for content_string in csv_file_strings {
+ let v = read(content_string, None)?;
+ vectors.push(v);
+ }
+
+ for vector in vectors {
+ let map: HashMap<&str, Record> = record::vec_to_map(vector, starter_map.clone())?;
+ maps.push(map);
+ }
+
+ let mut new_vec: Vec = vec![];
+ for (name, record) in starter_map {
+ let mut same_name_records: Vec<&Record> = vec![];
+ for map in &maps {
+ let record: &Record = map.get(name).unwrap();
+ same_name_records.push(record);
+ }
+
+ let mut new_record = Record::default();
+ new_record.name = name.to_string();
+
+ let calculated = match record.calculated {
+ Some(price) => price,
+ None => match name {
+ _ if record::is_legacy_card(name) => 0.0,
+ _ => return Err(Error::NoPriceError(name.to_string())),
+ },
+ };
+
+ new_record.calculated = Some(calculated);
+
+ new_record.stack_size = same_name_records.iter().map(|r| r.stack_size).sum();
+ new_record.total = Some(new_record.stack_size as f32 * calculated);
+
+ new_vec.push(new_record);
+ }
+
+ Ok(write(&new_vec)?)
+}
+
+mod test {
+ #![allow(unused_variables)]
+
+ use std::collections::HashMap;
+
+ use crate::types::record::Record;
+
+ fn merge() {
+ let doctor_price = 4000.0;
+ let nurse_price = 400.0;
+ let dragonheart_price = 50.0;
+
+ let mut map = HashMap::<&'static str, Record>::new();
+ map.insert(
+ "The Doctor",
+ Record {
+ name: "The Doctor".into(),
+ calculated: Some(doctor_price),
+ ..Default::default()
+ },
+ );
+
+ map.insert(
+ "The Nurse",
+ Record {
+ name: "The Nurse".into(),
+ calculated: Some(nurse_price),
+ ..Default::default()
+ },
+ );
+
+ map.insert(
+ "The Dragon's Heart",
+ Record {
+ name: "The Dragon's Heart".into(),
+ calculated: Some(dragonheart_price),
+ ..Default::default()
+ },
+ );
+
+ let doctor = Record {
+ stack_size: 1,
+ name: "The Doctor".into(),
+ calculated: Some(doctor_price),
+ total: Some(doctor_price),
+ };
+
+ let nurse = Record {
+ stack_size: 2,
+ name: "The Nurse".into(),
+ calculated: Some(nurse_price),
+ total: Some(2 as f32 * nurse_price),
+ };
+
+ let vec1: Vec = vec![doctor.clone(), nurse.clone()];
+
+ let doctor2 = Record {
+ stack_size: 2,
+ name: "The Doctor".into(),
+ calculated: Some(doctor_price),
+ total: Some(2 as f32 * doctor_price),
+ };
+
+ let dragonsheart = Record {
+ stack_size: 1,
+ name: "The Dragon's Heart".into(),
+ calculated: Some(dragonheart_price),
+ total: Some(dragonheart_price),
+ };
+
+ let vec2: Vec = vec![doctor2, dragonsheart];
+
+ todo!();
+ }
+}
+
+// pub fn read_csv_from_string(data: &str) -> Result {
+// let mut reader = Reader::from_reader(data.as_bytes());
+
+// let mut writer = csv::Writer::from_writer(vec![]);
+// let mut records: Vec = vec![];
+// for record in reader.deserialize::() {
+// let record = record?;
+// writer.serialize(record.clone())?;
+// records.push(record);
+// }
+
+// // let serialized = serde_json::to_string(&records)?;
+
+// let data = String::from_utf8(writer.into_inner().unwrap())?;
+
+// Ok(data)
+// }
diff --git a/src-tauri/lib/src/types/record/initial_data.rs b/src-tauri/lib/src/types/record/initial_data.rs
new file mode 100644
index 00000000..b8f21490
--- /dev/null
+++ b/src-tauri/lib/src/types/record/initial_data.rs
@@ -0,0 +1,956 @@
+use serde::Deserialize;
+
+use crate::error::Error;
+
+use super::{NinjaRecord, Record};
+use std::collections::HashMap;
+
+pub const LEGACY_CARDS: [&'static str; 15] = [
+ "Friendship",
+ "Vile Power",
+ "Squandered Prosperity",
+ "Blessing of God",
+ "The Devastator",
+ "The Iron Bard",
+ "Luck of the Vaal",
+ "A Note in the Wind",
+ "The Valley of Steel Boxes",
+ "Akil's Prophecy",
+ "Birth of the Three",
+ "The Mayor",
+ "The Transformation",
+ "The Mad King",
+ "Treasures of the Vaal",
+];
+
+pub const NAMES: [&'static str; 423] = [
+ "A Dab of Ink",
+ "A Familiar Call",
+ "A Fate Worse Than Death",
+ "A Modest Request",
+ "A Mother's Parting Gift",
+ "A Sea of Blue",
+ "A Stone Perfected",
+ "Abandoned Wealth",
+ "Acclimatisation",
+ "Alluring Bounty",
+ "Alone in the Darkness",
+ "Altered Perception",
+ "Ambitious Obsession",
+ "Anarchy's Price",
+ "Arrogance of the Vaal",
+ "Assassin's Favour",
+ "Astral Protection",
+ "Atziri's Arsenal",
+ "Audacity",
+ "Azure Rage",
+ "Azyran's Reward",
+ "Baited Expectations",
+ "Beauty Through Death",
+ "Bijoux",
+ "Birth of the Three",
+ "Blind Venture",
+ "Boon of Justice",
+ "Boon of the First Ones",
+ "Boundless Realms",
+ "Bowyer's Dream",
+ "Broken Promises",
+ "Broken Truce",
+ "Brotherhood in Exile",
+ "Brother's Stash",
+ "Brush, Paint and Palette",
+ "Buried Treasure",
+ "Burning Blood",
+ "Call to the First Ones",
+ "Cameria's Cut",
+ "Cartographer's Delight",
+ "Chaotic Disposition",
+ "Chasing Risk",
+ "Checkmate",
+ "Choking Guilt",
+ "Costly Curio",
+ "Council of Cats",
+ "Coveted Possession",
+ "Cursed Words",
+ "Dark Dreams",
+ "Dark Temptation",
+ "Darker Half",
+ "Deadly Joy",
+ "Death",
+ "Deathly Designs",
+ "Dementophobia",
+ "Demigod's Wager",
+ "Desecrated Virtue",
+ "Desperate Crusade",
+ "Destined to Crumble",
+ "Dialla's Subjugation",
+ "Disdain",
+ "Divine Justice",
+ "Doedre's Madness",
+ "Doryani's Epiphany",
+ "Draped in Dreams",
+ "Duality",
+ "Dying Anguish",
+ "Dying Light",
+ "Earth Drinker",
+ "Echoes of Love",
+ "Emperor of Purity",
+ "Emperor's Luck",
+ "Endless Night",
+ "Etched in Blood",
+ "Eternal Bonds",
+ "Fateful Meeting",
+ "Forbidden Power",
+ "From Bone to Ashes",
+ "Further Invention",
+ "Gemcutter's Mercy",
+ "Gemcutter's Promise",
+ "Gift of Asenath",
+ "Gift of the Gemling Queen",
+ "Glimmer of Hope",
+ "Grave Knowledge",
+ "Guardian's Challenge",
+ "Harmony of Souls",
+ "Haunting Shadows",
+ "Her Mask",
+ "Heterochromia",
+ "Home",
+ "Hope",
+ "House of Mirrors",
+ "Hubris",
+ "Humility",
+ "Hunter's Resolve",
+ "Hunter's Reward",
+ "Immortal Resolve",
+ "Imperfect Memories",
+ "Imperial Legacy",
+ "Jack in the Box",
+ "Judging Voices",
+ "Justified Ambition",
+ "Keeper's Corruption",
+ "Lachrymal Necrosis",
+ "Lantador's Lost Love",
+ "Last Hope",
+ "Left to Fate",
+ "Lethean Temptation",
+ "Light and Truth",
+ "Lingering Remnants",
+ "Lost Worlds",
+ "Love Through Ice",
+ "Loyalty",
+ "Lucky Connections",
+ "Lucky Deck",
+ "Luminous Trove",
+ "Lysah's Respite",
+ "Magnum Opus",
+ "Mawr Blaidd",
+ "Merciless Armament",
+ "Might is Right",
+ "Misery in Darkness",
+ "Mitts",
+ "Monochrome",
+ "More is Never Enough",
+ "No Traces",
+ "Nook's Crown",
+ "Parasitic Passengers",
+ "Peaceful Moments",
+ "Perfection",
+ "Prejudice",
+ "Pride Before the Fall",
+ "Pride of the First Ones",
+ "Prometheus' Armoury",
+ "Prosperity",
+ "Rain of Chaos",
+ "Rain Tempter",
+ "Rats",
+ "Rebirth",
+ "Rebirth and Renewal",
+ "Reckless Ambition",
+ "Remembrance",
+ "Sambodhi's Vow",
+ "Sambodhi's Wisdom",
+ "Scholar of the Seas",
+ "Seven Years Bad Luck",
+ "Shard of Fate",
+ "Silence and Frost",
+ "Society's Remorse",
+ "Something Dark",
+ "Struck by Lightning",
+ "Succor of the Sinless",
+ "Terrible Secret of Space",
+ "The Academic",
+ "The Admirer",
+ "The Adventuring Spirit",
+ "The Aesthete",
+ "The Apothecary",
+ "The Archmage's Right Hand",
+ "The Arena Champion",
+ "The Army of Blood",
+ "The Artist",
+ "The Aspirant",
+ "The Astromancer",
+ "The Avenger",
+ "The Awakened",
+ "The Bargain",
+ "The Battle Born",
+ "The Bear Woman",
+ "The Beast",
+ "The Betrayal",
+ "The Bitter Blossom",
+ "The Blazing Fire",
+ "The Blessing of Moosh",
+ "The Body",
+ "The Bones",
+ "The Brawny Battle Mage",
+ "The Breach",
+ "The Brittle Emperor",
+ "The Cache",
+ "The Cacophony",
+ "The Calling",
+ "The Card Sharp",
+ "The Carrion Crow",
+ "The Cartographer",
+ "The Cataclysm",
+ "The Catalyst",
+ "The Catch",
+ "The Celestial Justicar",
+ "The Celestial Stone",
+ "The Chains that Bind",
+ "The Cheater",
+ "The Chosen",
+ "The Coming Storm",
+ "The Conduit",
+ "The Craving",
+ "The Cursed King",
+ "The Damned",
+ "The Dapper Prodigy",
+ "The Dark Mage",
+ "The Darkest Dream",
+ "The Deal",
+ "The Deceiver",
+ "The Deep Ones",
+ "The Demon",
+ "The Demoness",
+ "The Destination",
+ "The Doctor",
+ "The Doppelganger",
+ "The Dragon",
+ "The Dragon's Heart",
+ "The Dreamer",
+ "The Dreamland",
+ "The Drunken Aristocrat",
+ "The Dungeon Master",
+ "The Easy Stroll",
+ "The Eldritch Decay",
+ "The Emptiness",
+ "The Encroaching Darkness",
+ "The Endless Darkness",
+ "The Endurance",
+ "The Enforcer",
+ "The Enlightened",
+ "The Enthusiasts",
+ "The Escape",
+ "The Eternal War",
+ "The Ethereal",
+ "The Explorer",
+ "The Eye of Terror",
+ "The Eye of the Dragon",
+ "The Fathomless Depths",
+ "The Feast",
+ "The Fiend",
+ "The Fishmonger",
+ "The Fletcher",
+ "The Flora's Gift",
+ "The Fool",
+ "The Forgotten Treasure",
+ "The Formless Sea",
+ "The Forsaken",
+ "The Forward Gaze",
+ "The Fox",
+ "The Fox in the Brambles",
+ "The Gambler",
+ "The Garish Power",
+ "The Gemcutter",
+ "The Gentleman",
+ "The Gladiator",
+ "The Golden Era",
+ "The Greatest Intentions",
+ "The Gulf",
+ "The Hale Heart",
+ "The Harvester",
+ "The Hermit",
+ "The Heroic Shot",
+ "The Hive of Knowledge",
+ "The Hoarder",
+ "The Hook",
+ "The Hunger",
+ "The Immortal",
+ "The Incantation",
+ "The Innocent",
+ "The Inoculated",
+ "The Insatiable",
+ "The Inventor",
+ "The Jester",
+ "The Jeweller's Boon",
+ "The Journalist",
+ "The Journey",
+ "The King's Blade",
+ "The King's Heart",
+ "The Landing",
+ "The Last One Standing",
+ "The Last Supper",
+ "The Leviathan",
+ "The Lich",
+ "The Life Thief",
+ "The Lion",
+ "The Long Con",
+ "The Long Watch",
+ "The Lord in Black",
+ "The Lord of Celebration",
+ "The Lover",
+ "The Lunaris Priestess",
+ "The Magma Crab",
+ "The Master",
+ "The Master Artisan",
+ "The Mercenary",
+ "The Messenger",
+ "The Metalsmith's Gift",
+ "The Mind's Eyes",
+ "The Mountain",
+ "The Nurse",
+ "The Oath",
+ "The Obscured",
+ "The Offering",
+ "The Offspring",
+ "The Old Man",
+ "The One That Got Away",
+ "The One With All",
+ "The Opulent",
+ "The Pack Leader",
+ "The Pact",
+ "The Patient",
+ "The Penitent",
+ "The Poet",
+ "The Polymath",
+ "The Porcupine",
+ "The Price of Devotion",
+ "The Price of Loyalty",
+ "The Price of Prescience",
+ "The Price of Protection",
+ "The Primordial",
+ "The Prince of Darkness",
+ "The Professor",
+ "The Progeny of Lunaris",
+ "The Puzzle",
+ "The Queen",
+ "The Rabbit's Foot",
+ "The Rabid Rhoa",
+ "The Realm",
+ "The Risk",
+ "The Rite of Elements",
+ "The Road to Power",
+ "The Ruthless Ceinture",
+ "The Sacrifice",
+ "The Saint's Treasure",
+ "The Samurai's Eye",
+ "The Scarred Meadow",
+ "The Scavenger",
+ "The Scholar",
+ "The Scout",
+ "The Seeker",
+ "The Sephirot",
+ "The Shepherd's Sandals",
+ "The Shieldbearer",
+ "The Shortcut",
+ "The Side Quest",
+ "The Sigil",
+ "The Siren",
+ "The Skeleton",
+ "The Soul",
+ "The Spark and the Flame",
+ "The Spoiled Prince",
+ "The Standoff",
+ "The Stormcaller",
+ "The Strategist",
+ "The Summoner",
+ "The Sun",
+ "The Surgeon",
+ "The Surveyor",
+ "The Survivalist",
+ "The Sustenance",
+ "The Sword King's Salute",
+ "The Thaumaturgist",
+ "The Throne",
+ "The Tinkerer's Table",
+ "The Tireless Extractor",
+ "The Tower",
+ "The Traitor",
+ "The Trial",
+ "The Tumbleweed",
+ "The Twilight Moon",
+ "The Twins",
+ "The Tyrant",
+ "The Undaunted",
+ "The Undisputed",
+ "The Unexpected Prize",
+ "The Union",
+ "The Valkyrie",
+ "The Vast",
+ "The Visionary",
+ "The Void",
+ "The Warden",
+ "The Warlord",
+ "The Watcher",
+ "The Web",
+ "The White Knight",
+ "The Whiteout",
+ "The Wilted Rose",
+ "The Wind",
+ "The Witch",
+ "The Wolf",
+ "The Wolf's Legacy",
+ "The Wolf's Shadow",
+ "The Wolven King's Bite",
+ "The Wolverine",
+ "The World Eater",
+ "The Wrath",
+ "The Wretched",
+ "Thirst for Knowledge",
+ "Three Faces in the Dark",
+ "Three Voices",
+ "Thunderous Skies",
+ "Time-Lost Relic",
+ "Tranquillity",
+ "Treasure Hunter",
+ "Triskaidekaphobia",
+ "Turn the Other Cheek",
+ "Unchained",
+ "Underground Forest",
+ "Unrequited Love",
+ "Vanity",
+ "Vinia's Token",
+ "Void of the Elements",
+ "Volatile Power",
+ "Wealth and Power",
+ "Winter's Embrace",
+ "Friendship",
+ "Vile Power",
+ "Squandered Prosperity",
+ "Blessing of God",
+ "The Devastator",
+ "The Iron Bard",
+ "Luck of the Vaal",
+ "A Note in the Wind",
+ "The Valley of Steel Boxes",
+ "Akil's Prophecy",
+ "The Mayor",
+ "The Transformation",
+ "The Mad King",
+ "Treasures of the Vaal",
+];
+
+pub const TUP_NAMES_PRICES: &'static [(&str, f32)] = &[
+ ("House of Mirrors", 11608.35),
+ ("The Apothecary", 11251.17),
+ ("The Price of Devotion", 5772.65),
+ ("Unrequited Love", 4464.75),
+ ("The Doctor", 4107.57),
+ ("The Demon", 3393.21),
+ ("The Fiend", 2500.26),
+ ("The Immortal", 1285.85),
+ ("Love Through Ice", 1232.27),
+ ("The Shieldbearer", 571.49),
+ ("The Nurse", 482.19),
+ ("Seven Years Bad Luck", 335.0),
+ ("The Cheater", 267.88),
+ ("Choking Guilt", 267.88),
+ ("Wealth and Power", 196.45),
+ ("The Sephirot", 160.0),
+ ("Succor of the Sinless", 160.0),
+ ("Desecrated Virtue", 129.88),
+ ("Doryani's Epiphany", 122.89),
+ ("The Price of Loyalty", 101.3),
+ ("The Samurai's Eye", 82.75),
+ ("Brother's Stash", 75.77),
+ ("The Dragon's Heart", 75.0),
+ ("Deadly Joy", 60.0),
+ ("The Patient", 59.0),
+ ("A Fate Worse Than Death", 55.0),
+ ("The Enlightened", 50.0),
+ ("The Strategist", 45.0),
+ ("Eternal Bonds", 40.72),
+ ("Broken Promises", 40.0),
+ ("Luminous Trove", 35.27),
+ ("Darker Half", 34.97),
+ ("The Artist", 32.0),
+ ("The Gulf", 29.46),
+ ("The Mind's Eyes", 29.0),
+ ("Home", 27.93),
+ ("The Academic", 27.0),
+ ("Gemcutter's Mercy", 24.87),
+ ("The Destination", 24.0),
+ ("The Sacrifice", 20.0),
+ ("Monochrome", 20.0),
+ ("Imperfect Memories", 20.0),
+ ("Magnum Opus", 19.98),
+ ("The Hook", 17.48),
+ ("Alluring Bounty", 16.15),
+ ("Winter's Embrace", 15.42),
+ ("Altered Perception", 14.77),
+ ("Gift of Asenath", 13.0),
+ ("The Greatest Intentions", 10.0),
+ ("A Modest Request", 10.0),
+ ("The Eternal War", 10.0),
+ ("The Aspirant", 10.0),
+ ("The Astromancer", 9.96),
+ ("Justified Ambition", 9.66),
+ ("Beauty Through Death", 9.5),
+ ("The Fishmonger", 9.18),
+ ("The Damned", 9.0),
+ ("The Eye of Terror", 9.0),
+ ("Fateful Meeting", 9.0),
+ ("Remembrance", 8.24),
+ ("The Leviathan", 8.0),
+ ("The One That Got Away", 7.74),
+ ("Pride of the First Ones", 7.0),
+ ("The Escape", 7.0),
+ ("The Bitter Blossom", 7.0),
+ ("The Rabbit's Foot", 7.0),
+ ("Judging Voices", 7.0),
+ ("The Enforcer", 7.0),
+ ("Nook's Crown", 6.0),
+ ("The Sustenance", 6.0),
+ ("A Familiar Call", 5.96),
+ ("The Scout", 5.9),
+ ("Abandoned Wealth", 5.73),
+ ("Chaotic Disposition", 5.7),
+ ("Something Dark", 5.05),
+ ("Mawr Blaidd", 5.0),
+ ("The Polymath", 5.0),
+ ("The Undisputed", 5.0),
+ ("The Bargain", 5.0),
+ ("Azyran's Reward", 5.0),
+ ("Void of the Elements", 5.0),
+ ("The Old Man", 5.0),
+ ("Underground Forest", 5.0),
+ ("Etched in Blood", 5.0),
+ ("The Eldritch Decay", 5.0),
+ ("The Progeny of Lunaris", 5.0),
+ ("The White Knight", 5.0),
+ ("The Long Con", 5.0),
+ ("Draped in Dreams", 5.0),
+ ("Haunting Shadows", 5.0),
+ ("The Shortcut", 5.0),
+ ("Dementophobia", 5.0),
+ ("The Emptiness", 5.0),
+ ("Bijoux", 5.0),
+ ("Duality", 5.0),
+ ("Lethean Temptation", 5.0),
+ ("The Vast", 4.98),
+ ("Desperate Crusade", 4.89),
+ ("Further Invention", 4.73),
+ ("The Offering", 4.0),
+ ("The Chosen", 4.0),
+ ("Brotherhood in Exile", 4.0),
+ ("Dying Light", 4.0),
+ ("Keeper's Corruption", 4.0),
+ ("Ambitious Obsession", 4.0),
+ ("The Forgotten Treasure", 4.0),
+ ("Chasing Risk", 4.0),
+ ("The Catch", 4.0),
+ ("Rebirth and Renewal", 4.0),
+ ("Peaceful Moments", 3.98),
+ ("The Shepherd's Sandals", 3.87),
+ ("The Price of Prescience", 3.86),
+ ("The Celestial Stone", 3.72),
+ ("Death", 3.0),
+ ("Merciless Armament", 3.0),
+ ("Pride Before the Fall", 3.0),
+ ("The Brittle Emperor", 3.0),
+ ("The Queen", 3.0),
+ ("The Risk", 3.0),
+ ("The Thaumaturgist", 3.0),
+ ("The Void", 3.0),
+ ("Rebirth", 3.0),
+ ("The World Eater", 3.0),
+ ("The Dreamer", 3.0),
+ ("The Hale Heart", 3.0),
+ ("The Professor", 3.0),
+ ("Perfection", 3.0),
+ ("The Undaunted", 3.0),
+ ("Boon of the First Ones", 3.0),
+ ("The Seeker", 3.0),
+ ("Dark Dreams", 3.0),
+ ("The Side Quest", 3.0),
+ ("Council of Cats", 3.0),
+ ("Prometheus' Armoury", 3.0),
+ ("The Tumbleweed", 3.0),
+ ("The Awakened", 3.0),
+ ("The Hive of Knowledge", 3.0),
+ ("Brush, Paint and Palette", 3.0),
+ ("The Enthusiasts", 3.0),
+ ("Lachrymal Necrosis", 3.0),
+ ("Costly Curio", 3.0),
+ ("A Stone Perfected", 3.0),
+ ("Guardian's Challenge", 3.0),
+ ("The Forward Gaze", 3.0),
+ ("Hunter's Reward", 2.99),
+ ("The Twilight Moon", 2.99),
+ ("The Endless Darkness", 2.99),
+ ("Parasitic Passengers", 2.96),
+ ("Silence and Frost", 2.9),
+ ("The Soul", 2.84),
+ ("The Deal", 2.78),
+ ("The Prince of Darkness", 2.75),
+ ("The Dungeon Master", 2.74),
+ ("Terrible Secret of Space", 2.71),
+ ("Divine Justice", 2.63),
+ ("Prejudice", 2.59),
+ ("The Messenger", 2.55),
+ ("Audacity", 2.54),
+ ("The Whiteout", 2.5),
+ ("The Road to Power", 2.42),
+ ("The Avenger", 2.28),
+ ("Misery in Darkness", 2.26),
+ ("The Tyrant", 2.25),
+ ("The Life Thief", 2.17),
+ ("The Brawny Battle Mage", 2.03),
+ ("Bowyer's Dream", 2.0),
+ ("Dying Anguish", 2.0),
+ ("Emperor of Purity", 2.0),
+ ("Light and Truth", 2.0),
+ ("Lucky Deck", 2.0),
+ ("The Body", 2.0),
+ ("The Cartographer", 2.0),
+ ("The Cataclysm", 2.0),
+ ("The Celestial Justicar", 2.0),
+ ("The Drunken Aristocrat", 2.0),
+ ("The Feast", 2.0),
+ ("The Hunger", 2.0),
+ ("The Jester", 2.0),
+ ("The Pact", 2.0),
+ ("The Siren", 2.0),
+ ("The Throne", 2.0),
+ ("The Union", 2.0),
+ ("The Valkyrie", 2.0),
+ ("The Wretched", 2.0),
+ ("The Wolven King's Bite", 2.0),
+ ("The Saint's Treasure", 2.0),
+ ("The Spark and the Flame", 2.0),
+ ("No Traces", 2.0),
+ ("The Obscured", 2.0),
+ ("The Breach", 2.0),
+ ("Immortal Resolve", 2.0),
+ ("The Darkest Dream", 2.0),
+ ("The Innocent", 2.0),
+ ("The Cacophony", 2.0),
+ ("A Dab of Ink", 2.0),
+ ("Sambodhi's Vow", 2.0),
+ ("The Lord of Celebration", 2.0),
+ ("The Landing", 2.0),
+ ("The Journey", 2.0),
+ ("Burning Blood", 2.0),
+ ("The Deep Ones", 2.0),
+ ("Demigod's Wager", 2.0),
+ ("Buried Treasure", 2.0),
+ ("The Primordial", 2.0),
+ ("The Heroic Shot", 2.0),
+ ("Cameria's Cut", 2.0),
+ ("Baited Expectations", 2.0),
+ ("Deathly Designs", 2.0),
+ ("The Easy Stroll", 2.0),
+ ("The Unexpected Prize", 2.0),
+ ("Unchained", 2.0),
+ ("Society's Remorse", 2.0),
+ ("The Bear Woman", 2.0),
+ ("Reckless Ambition", 2.0),
+ ("The Offspring", 2.0),
+ ("Disdain", 2.0),
+ ("The Magma Crab", 2.0),
+ ("Checkmate", 2.0),
+ ("Endless Night", 2.0),
+ ("A Mother's Parting Gift", 1.99),
+ ("The Ethereal", 1.99),
+ ("Echoes of Love", 1.99),
+ ("The Fool", 1.99),
+ ("The Archmage's Right Hand", 1.99),
+ ("Sambodhi's Wisdom", 1.99),
+ ("Dialla's Subjugation", 1.9),
+ ("The King's Heart", 1.89),
+ ("Heterochromia", 1.84),
+ ("The Warlord", 1.75),
+ ("Arrogance of the Vaal", 1.74),
+ ("The Incantation", 1.65),
+ ("The Last One Standing", 1.6),
+ ("Vinia's Token", 1.55),
+ ("The Wind", 1.35),
+ ("Triskaidekaphobia", 1.32),
+ ("Harmony of Souls", 1.31),
+ ("Lucky Connections", 1.19),
+ ("The Dark Mage", 1.17),
+ ("From Bone to Ashes", 1.16),
+ ("More is Never Enough", 1.13),
+ ("The Lord in Black", 1.05),
+ ("The Gentleman", 1.02),
+ ("Anarchy's Price", 1.0),
+ ("Assassin's Favour", 1.0),
+ ("Blind Venture", 1.0),
+ ("Boundless Realms", 1.0),
+ ("Cartographer's Delight", 1.0),
+ ("Coveted Possession", 1.0),
+ ("Destined to Crumble", 1.0),
+ ("Doedre's Madness", 1.0),
+ ("Earth Drinker", 1.0),
+ ("Emperor's Luck", 1.0),
+ ("Gemcutter's Promise", 1.0),
+ ("Gift of the Gemling Queen", 1.0),
+ ("Glimmer of Hope", 1.0),
+ ("Grave Knowledge", 1.0),
+ ("Her Mask", 1.0),
+ ("Hope", 1.0),
+ ("Hubris", 1.0),
+ ("Humility", 1.0),
+ ("Hunter's Resolve", 1.0),
+ ("Jack in the Box", 1.0),
+ ("Lantador's Lost Love", 1.0),
+ ("Last Hope", 1.0),
+ ("Lost Worlds", 1.0),
+ ("Loyalty", 1.0),
+ ("Lysah's Respite", 1.0),
+ ("Prosperity", 1.0),
+ ("Rain of Chaos", 1.0),
+ ("Rain Tempter", 1.0),
+ ("Rats", 1.0),
+ ("Scholar of the Seas", 1.0),
+ ("Shard of Fate", 1.0),
+ ("The Aesthete", 1.0),
+ ("The Arena Champion", 1.0),
+ ("The Battle Born", 1.0),
+ ("The Betrayal", 1.0),
+ ("The Calling", 1.0),
+ ("The Carrion Crow", 1.0),
+ ("The Catalyst", 1.0),
+ ("The Conduit", 1.0),
+ ("The Cursed King", 1.0),
+ ("The Dapper Prodigy", 1.0),
+ ("The Demoness", 1.0),
+ ("The Doppelganger", 1.0),
+ ("The Dragon", 1.0),
+ ("The Encroaching Darkness", 1.0),
+ ("The Endurance", 1.0),
+ ("The Explorer", 1.0),
+ ("The Fletcher", 1.0),
+ ("The Flora's Gift", 1.0),
+ ("The Formless Sea", 1.0),
+ ("The Fox", 1.0),
+ ("The Gambler", 1.0),
+ ("The Gemcutter", 1.0),
+ ("The Gladiator", 1.0),
+ ("The Harvester", 1.0),
+ ("The Hermit", 1.0),
+ ("The Hoarder", 1.0),
+ ("The Inoculated", 1.0),
+ ("The Inventor", 1.0),
+ ("The King's Blade", 1.0),
+ ("The Lich", 1.0),
+ ("The Lion", 1.0),
+ ("The Lover", 1.0),
+ ("The Lunaris Priestess", 1.0),
+ ("The Mercenary", 1.0),
+ ("The Metalsmith's Gift", 1.0),
+ ("The Oath", 1.0),
+ ("The One With All", 1.0),
+ ("The Pack Leader", 1.0),
+ ("The Penitent", 1.0),
+ ("The Poet", 1.0),
+ ("The Rabid Rhoa", 1.0),
+ ("The Scarred Meadow", 1.0),
+ ("The Scavenger", 1.0),
+ ("The Scholar", 1.0),
+ ("The Sigil", 1.0),
+ ("The Spoiled Prince", 1.0),
+ ("The Stormcaller", 1.0),
+ ("The Summoner", 1.0),
+ ("The Sun", 1.0),
+ ("The Surgeon", 1.0),
+ ("The Surveyor", 1.0),
+ ("The Survivalist", 1.0),
+ ("The Tower", 1.0),
+ ("The Traitor", 1.0),
+ ("The Trial", 1.0),
+ ("The Twins", 1.0),
+ ("The Visionary", 1.0),
+ ("The Warden", 1.0),
+ ("The Watcher", 1.0),
+ ("The Web", 1.0),
+ ("The Wolf", 1.0),
+ ("The Wolf's Shadow", 1.0),
+ ("The Wrath", 1.0),
+ ("Three Faces in the Dark", 1.0),
+ ("Thunderous Skies", 1.0),
+ ("Time-Lost Relic", 1.0),
+ ("Tranquillity", 1.0),
+ ("Treasure Hunter", 1.0),
+ ("Turn the Other Cheek", 1.0),
+ ("Volatile Power", 1.0),
+ ("Mitts", 1.0),
+ ("Call to the First Ones", 1.0),
+ ("Lingering Remnants", 1.0),
+ ("The Coming Storm", 1.0),
+ ("The Wolverine", 1.0),
+ ("The Garish Power", 1.0),
+ ("The Standoff", 1.0),
+ ("The Porcupine", 1.0),
+ ("The Forsaken", 1.0),
+ ("Might is Right", 1.0),
+ ("Atziri's Arsenal", 1.0),
+ ("The Opulent", 1.0),
+ ("Struck by Lightning", 1.0),
+ ("The Blazing Fire", 1.0),
+ ("The Ruthless Ceinture", 1.0),
+ ("The Eye of the Dragon", 1.0),
+ ("The Realm", 1.0),
+ ("Left to Fate", 1.0),
+ ("The Deceiver", 1.0),
+ ("The Puzzle", 1.0),
+ ("The Insatiable", 1.0),
+ ("Forbidden Power", 1.0),
+ ("Three Voices", 1.0),
+ ("The Jeweller's Boon", 1.0),
+ ("The Army of Blood", 1.0),
+ ("The Beast", 1.0),
+ ("The Sword King's Salute", 1.0),
+ ("The Master", 1.0),
+ ("The Fathomless Depths", 1.0),
+ ("The Rite of Elements", 1.0),
+ ("The Dreamland", 1.0),
+ ("The Admirer", 1.0),
+ ("The Witch", 1.0),
+ ("The Wilted Rose", 1.0),
+ ("The Price of Protection", 1.0),
+ ("The Master Artisan", 1.0),
+ ("Alone in the Darkness", 1.0),
+ ("Dark Temptation", 1.0),
+ ("The Golden Era", 1.0),
+ ("Boon of Justice", 1.0),
+ ("Vanity", 1.0),
+ ("Thirst for Knowledge", 1.0),
+ ("The Mountain", 1.0),
+ ("The Skeleton", 1.0),
+ ("The Wolf's Legacy", 1.0),
+ ("The Bones", 1.0),
+ ("The Craving", 1.0),
+ ("The Tinkerer's Table", 1.0),
+ ("The Journalist", 1.0),
+ ("The Cache", 1.0),
+ ("Cursed Words", 1.0),
+ ("The Long Watch", 1.0),
+ ("Acclimatisation", 1.0),
+ ("The Adventuring Spirit", 1.0),
+ ("The Card Sharp", 1.0),
+ ("The Last Supper", 1.0),
+ ("A Sea of Blue", 1.0),
+ ("The Blessing of Moosh", 1.0),
+ ("The Fox in the Brambles", 1.0),
+ ("The Tireless Extractor", 1.0),
+ ("Astral Protection", 1.0),
+ ("Azure Rage", 1.0),
+ ("Broken Truce", 1.0),
+ ("The Chains that Bind", 0.98),
+ ("Imperial Legacy", 0.45),
+];
+
+pub fn create_starter_hashmap(
+ tup_names_prices: Vec<(String, f32)>,
+) -> HashMap<&'static str, Record> {
+ let mut map = HashMap::<&'static str, Record>::new();
+
+ for name in NAMES {
+ let mut record = Record::default();
+ record.name = name.to_string();
+ map.insert(name, record);
+
+ map.insert(
+ name,
+ Record {
+ name: name.into(),
+ ..Default::default()
+ },
+ );
+ }
+
+ for (name, price) in tup_names_prices {
+ let mut record = match map.get_mut(&*name) {
+ Some(record) => record,
+ None => {
+ tracing::error!("Could not get record. Name: {}.", name);
+ panic!();
+ }
+ };
+ record.calculated = Some(price);
+ }
+
+ map
+}
+
+pub fn dummy_tup_names_prices() -> Vec<(String, f32)> {
+ let mut v: Vec<(String, f32)> = vec![];
+ for (name, price) in TUP_NAMES_PRICES {
+ v.push((name.to_string(), *price));
+ }
+
+ v
+}
+
+pub fn names_prices_from_json(string_json: &str) -> Vec<(String, f32)> {
+ #[derive(Deserialize)]
+ struct NinjaResponse {
+ lines: Vec,
+ }
+
+ let ninja_response: NinjaResponse = serde_json::from_str(string_json).unwrap();
+ let ninja_records: Vec = ninja_response.lines;
+ let mut tuples_vector: Vec<(String, f32)> = vec![];
+ for record in ninja_records {
+ tuples_vector.push((record.name, record.calculated));
+ }
+
+ tuples_vector
+}
+
+pub async fn fetch_div_prices() -> Result {
+ let client = reqwest::Client::new();
+ let url =
+ "https://poe.ninja/api/data/itemoverview?league=Kalandra&type=DivinationCard&language=en";
+ let json = client.get(url).send().await?.text().await?;
+ Ok(json)
+}
+
+/*
+pub async fn read_json(json_path: &str) -> Result {
+ let json = match std::fs::read_to_string(json_path) {
+ Ok(json) => {
+ // check file age
+ let metadata = match std::fs::metadata(json_path) {
+ Ok(metadata) => metadata,
+ Err(_) => {
+ todo!()
+ }
+ };
+ todo!()
+ }
+ Err(_) => {
+ // download json
+ match download_json().await {
+ Ok(json) => todo!(),
+ Err(err) => todo!(),
+ }
+ }
+ };
+}
+
+*/
+
+pub fn is_legacy_card(s: &str) -> bool {
+ LEGACY_CARDS.contains(&s)
+}
diff --git a/src-tauri/lib/src/types/record/mod.rs b/src-tauri/lib/src/types/record/mod.rs
new file mode 100644
index 00000000..c63af0d9
--- /dev/null
+++ b/src-tauri/lib/src/types/record/mod.rs
@@ -0,0 +1,249 @@
+pub mod csv;
+mod initial_data;
+
+use std::collections::HashMap;
+
+// pub use initial_data::create_starter_hashmap;
+// pub use initial_data::download_json;
+// pub use initial_data::dummy_tup_names_prices;
+// pub use initial_data::is_legacy_card;
+// pub use initial_data::names_prices_from_json;
+// pub use initial_data::LEGACY_CARDS;
+// pub use initial_data::NAMES;
+// pub use initial_data::TUP_NAMES_PRICES;
+pub use initial_data::*;
+
+use serde::{Deserialize, Serialize};
+
+use crate::error::Error;
+
+use super::weighted_record::WeightedRecord;
+
+#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
+#[serde(rename_all = "camelCase")]
+pub struct Record {
+ pub stack_size: i32,
+ pub name: String,
+ pub calculated: Option,
+ pub total: Option,
+}
+
+impl Default for Record {
+ fn default() -> Self {
+ Self {
+ stack_size: 0,
+ name: String::default(),
+ calculated: Some(0.),
+ total: Some(0.),
+ }
+ }
+}
+
+#[derive(Debug, Deserialize, Serialize, Clone, Default, PartialEq)]
+#[serde(rename_all = "camelCase")]
+pub struct NinjaRecord {
+ pub name: String,
+ #[serde(rename(serialize = "calculated", deserialize = "chaosValue"))]
+ pub calculated: f32,
+}
+
+pub fn total_price_chaos(records: &Vec) -> f32 {
+ records
+ .iter()
+ .map(|r| -> f32 { r.calculated.unwrap_or_default() * r.stack_size as f32 })
+ .sum::()
+}
+
+pub fn total_price_divine(records: &Vec, divine_price: f32) -> f32 {
+ total_price_chaos(records) / divine_price
+}
+
+pub fn map_to_vec(map: HashMap<&str, Record>) -> Vec {
+ let mut v: Vec = vec![];
+ for (_, record) in map {
+ v.push(record);
+ }
+ v
+}
+
+pub fn vec_to_map(
+ records: Vec,
+ mut map: HashMap<&'static str, Record>,
+) -> Result, Error> {
+ // let mode = std::env::var("RUST_ENV");
+
+ // let mut map = create_starter_hashmap();
+ for r in records {
+ let name = r.name.as_str();
+ let record_from_map: &mut Record = match map.get_mut(name) {
+ Some(record) => record,
+ None => {
+ // find_most_similar(name, &NAMES);
+
+ tracing::warn!("{}", Error::NotDivinationCard(name.to_string()));
+ continue;
+
+ // tracing::error!("Could not get record from map. Record name: {}", name);
+ // panic!("Could not get Record from map")
+ // return Err(Error::BadRecord(name.to_string()));
+ }
+ };
+ // map.get_mut(r.name.as_str())
+ // .expect("Could not get Record from map");
+
+ record_from_map.stack_size = r.stack_size;
+ record_from_map.total = Some(
+ record_from_map.stack_size as f32 * record_from_map.calculated.unwrap_or_default(),
+ );
+ }
+
+ Ok(map)
+}
+
+pub fn find_most_similar(name: &str, names: &[&str]) -> (String, f64) {
+ let mut similarity_map = HashMap::::new();
+ for initial_name in names {
+ let similarity = strsim::normalized_damerau_levenshtein(name, initial_name);
+ similarity_map.insert(initial_name.to_string(), similarity);
+ }
+
+ let most_similar = similarity_map
+ .iter()
+ .max_by(|a, b| a.1.partial_cmp(b.1).unwrap())
+ .unwrap();
+
+ (most_similar.0.to_owned(), most_similar.1.to_owned())
+
+ // println!("most similar for {name} is {:?}", most_similar);
+}
+
+pub fn fix_record_names(
+ records: &mut Vec,
+ names: &[&str],
+ map: &HashMap<&'static str, Record>,
+) -> (Vec, HashMap) {
+ let mut fixed_names: HashMap = HashMap::new();
+ let records = records
+ .into_iter()
+ .map(|record| {
+ if let None = map.get(&*record.name) {
+ let (similar_name, similar_score) = find_most_similar(&record.name, names);
+ match similar_score >= 0.75 {
+ true => {
+ fixed_names.insert(record.name.clone(), similar_name.clone());
+ record.name = similar_name
+ }
+ false => {
+ let record_name = format!("The {}", record.name);
+ let (similar_name, similar_score) = find_most_similar(&record_name, names);
+ match similar_score >= 0.75 {
+ true => {
+ fixed_names.insert(record.name.clone(), similar_name.clone());
+ record.name = similar_name
+ }
+ false => {
+ tracing::warn!(
+ "Too low similarity score. Name: {}, score: {similar_score}",
+ record.name
+ )
+ }
+ }
+ }
+ }
+ }
+
+ record.clone()
+ })
+ .collect::>();
+
+ println!("Fixed names: {:?}", fixed_names);
+ (records, fixed_names)
+}
+
+pub fn find_not_divination_cards(
+ records: &Vec,
+ map: &HashMap<&'static str, Record>,
+) -> Vec {
+ let mut not_cards: Vec = vec![];
+
+ for r in records {
+ let name = r.name.as_str();
+ if let None = map.get(name) {
+ not_cards.push(name.into());
+ }
+ }
+
+ not_cards
+}
+
+pub fn polish_records(
+ records: Vec,
+ map: HashMap<&'static str, Record>,
+) -> Result, Error> {
+ let records_map = vec_to_map(records, map)?;
+ let records = map_to_vec(records_map);
+ Ok(records)
+}
+
+// #[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
+// #[serde(rename_all = "camelCase")]
+// pub struct WeightedRecord {
+// pub stack_size: i32,
+// pub name: String,
+// pub calculated: Option,
+// pub total: Option,
+// pub real_weight: f32,
+// }
+
+// impl Default for WeightedRecord {
+// fn default() -> Self {
+// Self {
+// real_weight: 0.,
+// stack_size: 0,
+// name: String::default(),
+// calculated: Some(0.),
+// total: Some(0.),
+// }
+// }
+// }
+
+fn calc_record_weight(record: &Record, all_stack_size: i32) -> f32 {
+ record.stack_size as f32 / all_stack_size as f32
+}
+
+fn calc_record_real_weight(
+ record: &Record,
+ real_stacked_summary_weight: f32,
+ condense_factor: f32,
+ all_stack_size: i32,
+) -> f32 {
+ (real_stacked_summary_weight * calc_record_weight(record, all_stack_size))
+ .powf(1.0 / condense_factor)
+}
+
+pub fn weight_records(records: Vec) -> Vec {
+ let all_stack_size: i32 = records.iter().map(|r| r.stack_size).sum();
+ let real_stacked_rain_of_chaos_weight: f32 = 2452.65513;
+ let condense_factor: f32 = 2.0 / 3.0;
+ let rain_of_chaos = records.iter().find(|r| r.name == "Rain of Chaos").unwrap();
+ let weight = rain_of_chaos.stack_size as f32 / all_stack_size as f32;
+ let real_stacked_summary_weight = real_stacked_rain_of_chaos_weight / weight;
+ records
+ .into_iter()
+ .map(|record| {
+ let real_weight = calc_record_real_weight(
+ &record,
+ real_stacked_summary_weight,
+ condense_factor,
+ all_stack_size,
+ );
+ WeightedRecord {
+ stack_size: record.stack_size,
+ name: record.name,
+ calculated: record.calculated,
+ total: record.total,
+ real_weight,
+ }
+ })
+ .collect::>()
+}
diff --git a/src-tauri/lib/src/types/weighted_record/mod.rs b/src-tauri/lib/src/types/weighted_record/mod.rs
new file mode 100644
index 00000000..4dfadbae
--- /dev/null
+++ b/src-tauri/lib/src/types/weighted_record/mod.rs
@@ -0,0 +1,34 @@
+use serde::{Deserialize, Serialize};
+
+use crate::error::Error;
+
+#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
+#[serde(rename_all = "camelCase")]
+pub struct WeightedRecord {
+ pub stack_size: i32,
+ pub name: String,
+ pub calculated: Option,
+ pub total: Option,
+ pub real_weight: f32,
+}
+
+impl Default for WeightedRecord {
+ fn default() -> Self {
+ Self {
+ real_weight: 0.,
+ stack_size: 0,
+ name: String::default(),
+ calculated: Some(0.),
+ total: Some(0.),
+ }
+ }
+}
+
+pub fn write(records: &Vec) -> Result {
+ let mut writer = csv::Writer::from_writer(vec![]);
+ for record in records {
+ writer.serialize(record)?;
+ }
+ let content_string = String::from_utf8(writer.into_inner().expect("Error with csv serialize"))?;
+ Ok(content_string)
+}
diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs
new file mode 100644
index 00000000..c9b2009b
--- /dev/null
+++ b/src-tauri/src/main.rs
@@ -0,0 +1,183 @@
+#![cfg_attr(
+ all(not(debug_assertions), target_os = "windows"),
+ windows_subsystem = "windows"
+)]
+
+use std::collections::HashMap;
+
+use lib::{
+ error::Error,
+ types::{
+ record::{self, find_not_divination_cards, Record},
+ weighted_record::WeightedRecord,
+ },
+};
+
+use serde::Serialize;
+#[cfg(debug_assertions)]
+use tauri::Manager;
+
+#[tokio::main]
+async fn main() {
+ lib::dev::init_tracing();
+ tracing::event!(tracing::Level::DEBUG, "app startup");
+ match update_prices_data().await {
+ Ok(_) => tracing::event!(tracing::Level::DEBUG, "prices updated"),
+ Err(err) => tracing::event!(tracing::Level::ERROR, "could not update prices {:?}", err),
+ };
+
+ tauri::Builder::default()
+ .setup(|app| {
+ #[cfg(debug_assertions)] // only include this code on debug builds
+ {
+ let window = app.get_window("main").unwrap();
+ window.open_devtools();
+ }
+ Ok(())
+ })
+ .invoke_handler(tauri::generate_handler![
+ read_polish_csv,
+ total_chaos,
+ merge_csv,
+ update_prices,
+ give_record,
+ get_hashmap,
+ weight_records_to_csv
+ ])
+ .run(tauri::generate_context!())
+ .expect("error while running tauri application");
+}
+
+#[derive(Serialize)]
+#[serde(rename_all = "camelCase")]
+struct RecordsCsv {
+ csv: String,
+ records: Vec,
+ not_cards: Vec,
+ fixed_names: HashMap,
+}
+
+#[tauri::command]
+async fn read_polish_csv(
+ csv_string: &str,
+ minimum_card_price: Option,
+) -> Result {
+ let map = starter_map().await?;
+
+ let mut records = record::csv::string::read(csv_string, minimum_card_price)?;
+ let (records, fixed_names) = record::fix_record_names(&mut records, &record::NAMES, &map);
+
+ let not_cards = find_not_divination_cards(&records, &map);
+ println!("not cards: {:?}", not_cards);
+
+ let records = record::polish_records(records, map.clone())?;
+ let csv_output = record::csv::string::write(&records)?;
+
+ Ok(RecordsCsv {
+ csv: csv_output,
+ records,
+ not_cards,
+ fixed_names,
+ })
+}
+
+#[tauri::command]
+fn total_chaos(csv_string: &str, minimum_card_price: Option) -> Result {
+ record::csv::string::total_chaos(csv_string, minimum_card_price)
+}
+
+#[tauri::command]
+async fn merge_csv(csv_file_strings: Vec<&str>) -> Result {
+ let starter_map = starter_map().await?;
+ record::csv::string::merge(starter_map, &csv_file_strings[..])
+}
+
+#[tauri::command]
+async fn update_prices() -> Result<(), Error> {
+ Ok(update_prices_data().await?)
+}
+
+// Ok(Record::default())
+#[tauri::command]
+fn give_record() -> Result {
+ Ok(Record {
+ stack_size: 0,
+ name: String::from("test"),
+ calculated: None,
+ total: None,
+ })
+}
+
+#[tauri::command]
+async fn get_hashmap() -> Result, Error> {
+ starter_map().await
+}
+
+#[derive(Serialize)]
+#[serde(rename_all = "camelCase")]
+struct WeightedRecordCsv {
+ csv: String,
+ records: Vec,
+}
+
+#[tauri::command]
+async fn weight_records_to_csv(records: Vec) -> Result {
+ let weighted_records = record::weight_records(records);
+ let csv = lib::types::weighted_record::write(&weighted_records)?;
+ Ok(WeightedRecordCsv {
+ records: weighted_records,
+ csv,
+ })
+}
+
+async fn starter_map() -> Result, Error> {
+ let prices_json = div_prices().await?;
+ let names_prices = record::names_prices_from_json(&prices_json);
+ let starter_map = record::create_starter_hashmap(names_prices);
+ Ok(starter_map)
+}
+
+async fn div_prices() -> Result {
+ let path = prices_path();
+ let json = match std::fs::read_to_string(&path) {
+ Ok(json) => json,
+ Err(_) => {
+ let json = record::fetch_div_prices().await?;
+ std::fs::write(path, &json)?;
+ json
+ }
+ };
+
+ Ok(json)
+}
+
+async fn update_prices_data() -> Result<(), Error> {
+ let path = prices_path();
+
+ let json = record::fetch_div_prices().await?;
+ std::fs::write(path, &json)?;
+ Ok(())
+}
+
+fn get_appdata_dir() -> std::path::PathBuf {
+ let mut path = tauri::api::path::config_dir().unwrap();
+ path.push("divicards");
+
+ if !path.exists() {
+ std::fs::create_dir(&path).expect("Error on appdata dir creation");
+ }
+
+ path
+}
+
+fn prices_path() -> std::path::PathBuf {
+ let mut path = get_appdata_dir();
+ path.push("div-prices.json");
+ path
+}
+
+// const S: &'static str = "stackSize,name,calculated,total
+// 49,The Opulent,1.0,49.0
+// 0,The Price of Devotion,5772.65,0.0
+// 0,Perfection,3.0,0.0
+// 65,Three Faces in the Dark,1.0,65.0";
diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
new file mode 100644
index 00000000..e9b50fff
--- /dev/null
+++ b/src-tauri/tauri.conf.json
@@ -0,0 +1,67 @@
+{
+ "$schema": "../node_modules/@tauri-apps/cli/schema.json",
+ "build": {
+ "beforeBuildCommand": "npm run build",
+ "beforeDevCommand": "npm run dev",
+ "devPath": "http://localhost:5173",
+ "distDir": "../dist"
+ },
+ "package": {
+ "productName": "divicards",
+ "version": "0.1.0"
+ },
+ "tauri": {
+ "allowlist": {
+ "all": true
+ },
+ "bundle": {
+ "active": true,
+ "category": "DeveloperTool",
+ "copyright": "",
+ "deb": {
+ "depends": []
+ },
+ "externalBin": [],
+ "icon": [
+ "icons/32x32.png",
+ "icons/128x128.png",
+ "icons/128x128@2x.png",
+ "icons/icon.icns",
+ "icons/icon.ico"
+ ],
+ "identifier": "divicards",
+ "longDescription": "",
+ "macOS": {
+ "entitlements": null,
+ "exceptionDomain": "",
+ "frameworks": [],
+ "providerShortName": null,
+ "signingIdentity": null
+ },
+ "resources": [],
+ "shortDescription": "",
+ "targets": "all",
+ "windows": {
+ "certificateThumbprint": null,
+ "digestAlgorithm": "sha256",
+ "timestampUrl": ""
+ }
+ },
+ "security": {
+ "csp": null
+ },
+ "updater": {
+ "active": false
+ },
+ "windows": [
+ {
+ "fullscreen": false,
+ "height": 1200,
+ "resizable": true,
+ "title": "Divicards",
+ "width": 1400,
+ "fileDropEnabled": false
+ }
+ ]
+ }
+}
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 00000000..eb197738
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,132 @@
+
+
+
+ e.preventDefault()" @dragover="e => e.preventDefault()" class="drag">
+
Drop files Here!
+
+
+ contents.selected"
+ @minimum-price-updated="p => (contents.price = p)"
+ @delete-me="onDelete"
+ v-model:selected="contents.selected"
+ />
+
+
+
+
+
Select files you want to merge
+
+
+
+
+
+ {
+ mergedContents && (mergedContents.price = p);
+ }
+ "
+ />
+
+
+
+
+
diff --git a/src/assets/vue.svg b/src/assets/vue.svg
new file mode 100644
index 00000000..770e9d33
--- /dev/null
+++ b/src/assets/vue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/components/BasePopup.vue b/src/components/BasePopup.vue
new file mode 100644
index 00000000..6359f932
--- /dev/null
+++ b/src/components/BasePopup.vue
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/DivTable/DivTable copy.vue b/src/components/DivTable/DivTable copy.vue
new file mode 100644
index 00000000..a55ccbf8
--- /dev/null
+++ b/src/components/DivTable/DivTable copy.vue
@@ -0,0 +1,257 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ № |
+
+ Stack Size
+
+ |
+ Name |
+
+ Price
+
+ |
+
+ Total
+
+ |
+
+
+
+
+
+ {{ index + 1 }} |
+ {{ stackSize }} |
+ {{ name }} |
+ {{ nf.format(calculated) }} |
+ {{ nf.format(total) }} |
+
+
+
+
+
+
+
diff --git a/src/components/DivTable/DivTable.story.vue b/src/components/DivTable/DivTable.story.vue
new file mode 100644
index 00000000..337b4663
--- /dev/null
+++ b/src/components/DivTable/DivTable.story.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/DivTable/DivTable.vue b/src/components/DivTable/DivTable.vue
new file mode 100644
index 00000000..87eb1af4
--- /dev/null
+++ b/src/components/DivTable/DivTable.vue
@@ -0,0 +1,224 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ № |
+
+ Stack Size
+
+ |
+
+ Name
+ |
+
+ Price
+
+ |
+
+ Total
+
+ |
+
+ Weight
+ |
+
+
+
+
+
+ {{ index + 1 }} |
+ {{ stackSize }} |
+ {{ name }} |
+ {{ nf.format(calculated) }} |
+ {{ nf.format(total) }} |
+
+ {{
+ // ((70_000 * stackSize) / allStackSize) ** (3 / 2)
+ // nf.format(calcRecordRealWeight({ stackSize, name, calculated, total }))
+ nf.format(realWeight)
+ }}
+ |
+
+
+
+
+
+
+
diff --git a/src/components/DivTable/dummyRecords.ts b/src/components/DivTable/dummyRecords.ts
new file mode 100644
index 00000000..6960437e
--- /dev/null
+++ b/src/components/DivTable/dummyRecords.ts
@@ -0,0 +1,5 @@
+import { CardRecord, WeightedCardRecord } from '../../types';
+
+import records from './records.json' assert { type: 'json' };
+
+export const dummyRecords: WeightedCardRecord[] = records;
diff --git a/src/components/DivTable/orderBy.ts b/src/components/DivTable/orderBy.ts
new file mode 100644
index 00000000..805662ae
--- /dev/null
+++ b/src/components/DivTable/orderBy.ts
@@ -0,0 +1,38 @@
+import { Column, Order, CardRecord } from '../../types';
+
+export const byPrice = (order: Order, records: CardRecord[]) => {
+ return records.sort((a, b) => {
+ if (order === 'asc') return a.calculated - b.calculated;
+ if (order === 'desc') return b.calculated - a.calculated;
+ throw new Error('Invalid order');
+ });
+};
+
+export const byStackSize = (order: Order, records: CardRecord[]) => {
+ return records.sort((a, b) => {
+ if (order === 'asc') return a.stackSize - b.stackSize;
+ if (order === 'desc') return b.stackSize - a.stackSize;
+ throw new Error('invalid order');
+ });
+};
+
+export const byTotal = (order: Order, records: CardRecord[]) => {
+ return records.sort((a, b) => {
+ if (order === 'asc') return a.total - b.total;
+ if (order === 'desc') return b.total - a.total;
+ throw new Error('invalid order');
+ });
+};
+
+export const orderBy = (column: Column, order: Order, records: CardRecord[]): CardRecord[] => {
+ switch (column) {
+ case 'price':
+ return byPrice(order, records);
+ case 'stackSize':
+ return byStackSize(order, records);
+ case 'total':
+ return byTotal(order, records);
+ default:
+ throw new Error('Invalid column name');
+ }
+};
diff --git a/src/components/DivTable/records.json b/src/components/DivTable/records.json
new file mode 100644
index 00000000..f636911c
--- /dev/null
+++ b/src/components/DivTable/records.json
@@ -0,0 +1,1199 @@
+[
+ {
+ "calculated": 5,
+ "name": "The Progeny of Lunaris",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 25
+ },
+ { "calculated": 1, "name": "The Scarred Meadow", "realWeight": 17419.63671875, "stackSize": 377, "total": 377 },
+ { "calculated": 0, "name": "The Transformation", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 1.7100000381469727,
+ "name": "The Breach",
+ "realWeight": 451.12615966796875,
+ "stackSize": 33,
+ "total": 56.43000030517578
+ },
+ { "calculated": 1, "name": "Lost Worlds", "realWeight": 9014.3935546875, "stackSize": 243, "total": 243 },
+ { "calculated": 1, "name": "Lucky Connections", "realWeight": 6630.1728515625, "stackSize": 198, "total": 198 },
+ { "calculated": 1, "name": "The Last Supper", "realWeight": 1998.076416015625, "stackSize": 89, "total": 89 },
+ { "calculated": 1, "name": "The Offering", "realWeight": 492.7528381347656, "stackSize": 35, "total": 35 },
+ { "calculated": 5, "name": "The Rabbit's Foot", "realWeight": 26.606155395507812, "stackSize": 5, "total": 25 },
+ { "calculated": 1, "name": "The Surgeon", "realWeight": 4503.64599609375, "stackSize": 153, "total": 153 },
+ {
+ "calculated": 3.380000114440918,
+ "name": "Lethean Temptation",
+ "realWeight": 64.25262451171875,
+ "stackSize": 9,
+ "total": 30.420001983642578
+ },
+ { "calculated": 5, "name": "The Eye of Terror", "realWeight": 26.606155395507812, "stackSize": 5, "total": 25 },
+ {
+ "calculated": 82.4800033569336,
+ "name": "The One That Got Away",
+ "realWeight": 2.3797266483306885,
+ "stackSize": 1,
+ "total": 82.4800033569336
+ },
+ { "calculated": 0, "name": "Birth of the Three", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 1, "name": "Society's Remorse", "realWeight": 3325.769287109375, "stackSize": 125, "total": 125 },
+ { "calculated": 2695.5, "name": "The Doctor", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 140,
+ "name": "Succor of the Sinless",
+ "realWeight": 19.037813186645508,
+ "stackSize": 4,
+ "total": 560
+ },
+ {
+ "calculated": 1.4500000476837158,
+ "name": "The Lord in Black",
+ "realWeight": 1133.7618408203125,
+ "stackSize": 61,
+ "total": 88.45000457763672
+ },
+ { "calculated": 1, "name": "The Skeleton", "realWeight": 4816.228515625, "stackSize": 160, "total": 160 },
+ { "calculated": 1, "name": "Turn the Other Cheek", "realWeight": 8847.9765625, "stackSize": 240, "total": 240 },
+ {
+ "calculated": 1,
+ "name": "The Lunaris Priestess",
+ "realWeight": 8085.18115234375,
+ "stackSize": 226,
+ "total": 226
+ },
+ { "calculated": 1, "name": "The Admirer", "realWeight": 1576.6942138671875, "stackSize": 76, "total": 76 },
+ { "calculated": 1, "name": "No Traces", "realWeight": 2273.446044921875, "stackSize": 97, "total": 97 },
+ { "calculated": 5.559999942779541, "name": "The Greatest Intentions", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 1.7300000190734863,
+ "name": "The Undisputed",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 8.649999618530273
+ },
+ { "calculated": 4, "name": "Burning Blood", "realWeight": 34.974693298339844, "stackSize": 6, "total": 24 },
+ {
+ "calculated": 2.75,
+ "name": "Lachrymal Necrosis",
+ "realWeight": 451.12615966796875,
+ "stackSize": 33,
+ "total": 90.75
+ },
+ { "calculated": 1, "name": "The Mountain", "realWeight": 4681.40869140625, "stackSize": 157, "total": 157 },
+ {
+ "calculated": 6.289999961853027,
+ "name": "The Fishmonger",
+ "realWeight": 19.037813186645508,
+ "stackSize": 4,
+ "total": 25.15999984741211
+ },
+ { "calculated": 33, "name": "The Patient", "realWeight": 694.5541381835938, "stackSize": 44, "total": 1452 },
+ { "calculated": 2, "name": "The Whiteout", "realWeight": 471.78643798828125, "stackSize": 34, "total": 68 },
+ { "calculated": 3, "name": "Silence and Frost", "realWeight": 315.4911193847656, "stackSize": 26, "total": 78 },
+ {
+ "calculated": 1.399999976158142,
+ "name": "The Brittle Emperor",
+ "realWeight": 111.54295349121094,
+ "stackSize": 13,
+ "total": 18.19999885559082
+ },
+ { "calculated": 1, "name": "Might is Right", "realWeight": 3050.35302734375, "stackSize": 118, "total": 118 },
+ { "calculated": 2, "name": "Haunting Shadows", "realWeight": 297.4658203125, "stackSize": 25, "total": 50 },
+ {
+ "calculated": 3.5999999046325684,
+ "name": "The Shepherd's Sandals",
+ "realWeight": 197.08677673339844,
+ "stackSize": 19,
+ "total": 68.4000015258789
+ },
+ { "calculated": 1, "name": "Tranquillity", "realWeight": 1607.915283203125, "stackSize": 77, "total": 77 },
+ { "calculated": 1, "name": "The Gemcutter", "realWeight": 19900.91015625, "stackSize": 412, "total": 412 },
+ { "calculated": 4, "name": "The Eldritch Decay", "realWeight": 471.78643798828125, "stackSize": 34, "total": 136 },
+ {
+ "calculated": 4.619999885559082,
+ "name": "Mawr Blaidd",
+ "realWeight": 262.4936828613281,
+ "stackSize": 23,
+ "total": 106.25999450683594
+ },
+ {
+ "calculated": 1,
+ "name": "The Adventuring Spirit",
+ "realWeight": 7765.35107421875,
+ "stackSize": 220,
+ "total": 220
+ },
+ { "calculated": 5, "name": "The Escape", "realWeight": 197.08677673339844, "stackSize": 19, "total": 95 },
+ { "calculated": 5, "name": "Chaotic Disposition", "realWeight": 3089.210693359375, "stackSize": 119, "total": 595 },
+ {
+ "calculated": 1.5800000429153442,
+ "name": "Parasitic Passengers",
+ "realWeight": 602.028564453125,
+ "stackSize": 40,
+ "total": 63.20000076293945
+ },
+ { "calculated": 2, "name": "The King's Heart", "realWeight": 371.64141845703125, "stackSize": 29, "total": 58 },
+ {
+ "calculated": 1.1100000143051147,
+ "name": "The Wolven King's Bite",
+ "realWeight": 602.028564453125,
+ "stackSize": 40,
+ "total": 44.400001525878906
+ },
+ {
+ "calculated": 30.709999084472656,
+ "name": "Eternal Bonds",
+ "realWeight": 34.974693298339844,
+ "stackSize": 6,
+ "total": 184.25999450683594
+ },
+ { "calculated": 1, "name": "The Inventor", "realWeight": 5509.14453125, "stackSize": 175, "total": 175 },
+ { "calculated": 3, "name": "The Celestial Stone", "realWeight": 34.974693298339844, "stackSize": 6, "total": 18 },
+ { "calculated": 1, "name": "Grave Knowledge", "realWeight": 3285.93994140625, "stackSize": 124, "total": 124 },
+ {
+ "calculated": 7.360000133514404,
+ "name": "Dying Light",
+ "realWeight": 19.037813186645508,
+ "stackSize": 4,
+ "total": 29.440000534057617
+ },
+ { "calculated": 1, "name": "Disdain", "realWeight": 352.5852355957031, "stackSize": 28, "total": 28 },
+ { "calculated": 1, "name": "Forbidden Power", "realWeight": 1964.4957275390625, "stackSize": 88, "total": 88 },
+ { "calculated": 2, "name": "Death", "realWeight": 1363.95703125, "stackSize": 69, "total": 138 },
+ { "calculated": 2, "name": "Misery in Darkness", "realWeight": 98.92337036132812, "stackSize": 12, "total": 24 },
+ { "calculated": 1, "name": "The Blazing Fire", "realWeight": 11269.3984375, "stackSize": 282, "total": 282 },
+ {
+ "calculated": 5.980000019073486,
+ "name": "The Hive of Knowledge",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 11.960000038146973
+ },
+ { "calculated": 1, "name": "The Messenger", "realWeight": 1051.16064453125, "stackSize": 58, "total": 58 },
+ { "calculated": 1, "name": "The Wolf", "realWeight": 5274.732421875, "stackSize": 170, "total": 170 },
+ { "calculated": 0, "name": "Friendship", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 0, "name": "Squandered Prosperity", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 1, "name": "Cartographer's Delight", "realWeight": 4547.87109375, "stackSize": 154, "total": 154 },
+ { "calculated": 1, "name": "Broken Truce", "realWeight": 1305.08642578125, "stackSize": 67, "total": 67 },
+ { "calculated": 1, "name": "The Beast", "realWeight": 1576.6942138671875, "stackSize": 76, "total": 76 },
+ { "calculated": 3, "name": "The Hale Heart", "realWeight": 34.974693298339844, "stackSize": 6, "total": 18 },
+ { "calculated": 1, "name": "The Dreamland", "realWeight": 1964.4957275390625, "stackSize": 88, "total": 88 },
+ { "calculated": 1, "name": "The Doppelganger", "realWeight": 20483.353515625, "stackSize": 420, "total": 420 },
+ { "calculated": 1, "name": "The Twins", "realWeight": 4371.8369140625, "stackSize": 150, "total": 150 },
+ { "calculated": 5, "name": "Rebirth and Renewal", "realWeight": 86.81926727294922, "stackSize": 11, "total": 55 },
+ { "calculated": 1, "name": "The Dark Mage", "realWeight": 841.3604125976562, "stackSize": 50, "total": 50 },
+ { "calculated": 299.5, "name": "The Nurse", "realWeight": 98.92337036132812, "stackSize": 12, "total": 3594 },
+ { "calculated": 1, "name": "The Warden", "realWeight": 9690.3017578125, "stackSize": 255, "total": 255 },
+ { "calculated": 1, "name": "The Body", "realWeight": 4026.795654296875, "stackSize": 142, "total": 142 },
+ {
+ "calculated": 5,
+ "name": "The Price of Prescience",
+ "realWeight": 111.54295349121094,
+ "stackSize": 13,
+ "total": 65
+ },
+ {
+ "calculated": 1.809999942779541,
+ "name": "Deathly Designs",
+ "realWeight": 391.0290222167969,
+ "stackSize": 30,
+ "total": 54.29999923706055
+ },
+ { "calculated": 0, "name": "The Iron Bard", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 1, "name": "The Tyrant", "realWeight": 297.4658203125, "stackSize": 25, "total": 25 },
+ {
+ "calculated": 1,
+ "name": "The Eye of the Dragon",
+ "realWeight": 3365.75830078125,
+ "stackSize": 126,
+ "total": 126
+ },
+ { "calculated": 1, "name": "The Stormcaller", "realWeight": 5509.14453125, "stackSize": 175, "total": 175 },
+ { "calculated": 1, "name": "Rain Tempter", "realWeight": 11030.4755859375, "stackSize": 278, "total": 278 },
+ { "calculated": 3, "name": "The Cartographer", "realWeight": 6331.095703125, "stackSize": 192, "total": 576 },
+ {
+ "calculated": 58.56999969482422,
+ "name": "The Dragon's Heart",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 292.8500061035156
+ },
+ { "calculated": 1, "name": "The Tireless Extractor", "realWeight": 10675.30859375, "stackSize": 272, "total": 272 },
+ { "calculated": 1, "name": "The Calling", "realWeight": 3774.29150390625, "stackSize": 136, "total": 136 },
+ { "calculated": 0, "name": "Blessing of God", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 1.7400000095367432,
+ "name": "The Obscured",
+ "realWeight": 333.86639404296875,
+ "stackSize": 27,
+ "total": 46.97999954223633
+ },
+ { "calculated": 2, "name": "Sambodhi's Wisdom", "realWeight": 766.7855224609375, "stackSize": 47, "total": 94 },
+ { "calculated": 0, "name": "The Devastator", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 1, "name": "Boundless Realms", "realWeight": 5414.97216796875, "stackSize": 173, "total": 173 },
+ { "calculated": 1, "name": "The Gambler", "realWeight": 4681.40869140625, "stackSize": 157, "total": 157 },
+ { "calculated": 2, "name": "The Magma Crab", "realWeight": 694.5541381835938, "stackSize": 44, "total": 88 },
+ { "calculated": 1, "name": "The Visionary", "realWeight": 8682.595703125, "stackSize": 237, "total": 237 },
+ { "calculated": 0, "name": "The Mayor", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 4.619999885559082,
+ "name": "Audacity",
+ "realWeight": 98.92337036132812,
+ "stackSize": 12,
+ "total": 55.439998626708984
+ },
+ { "calculated": 1, "name": "The Tower", "realWeight": 5891.19921875, "stackSize": 183, "total": 183 },
+ {
+ "calculated": 1,
+ "name": "A Mother's Parting Gift",
+ "realWeight": 2238.38037109375,
+ "stackSize": 96,
+ "total": 96
+ },
+ { "calculated": 10, "name": "Altered Perception", "realWeight": 26.606155395507812, "stackSize": 5, "total": 50 },
+ { "calculated": 30, "name": "Broken Promises", "realWeight": 19.037813186645508, "stackSize": 4, "total": 120 },
+ { "calculated": 1, "name": "Rats", "realWeight": 16254.7705078125, "stackSize": 360, "total": 360 },
+ { "calculated": 1, "name": "Scholar of the Seas", "realWeight": 2379.7265625, "stackSize": 100, "total": 100 },
+ {
+ "calculated": 2.9200000762939453,
+ "name": "Hunter's Reward",
+ "realWeight": 333.86639404296875,
+ "stackSize": 27,
+ "total": 78.84000396728516
+ },
+ {
+ "calculated": 2.930000066757202,
+ "name": "Rebirth",
+ "realWeight": 64.25262451171875,
+ "stackSize": 9,
+ "total": 26.3700008392334
+ },
+ {
+ "calculated": 1,
+ "name": "The Price of Protection",
+ "realWeight": 1161.755126953125,
+ "stackSize": 62,
+ "total": 62
+ },
+ { "calculated": 1, "name": "Boon of Justice", "realWeight": 8354.97265625, "stackSize": 231, "total": 231 },
+ { "calculated": 1, "name": "The Summoner", "realWeight": 6036.65771484375, "stackSize": 186, "total": 186 },
+ { "calculated": 1, "name": "The Warlord", "realWeight": 694.5541381835938, "stackSize": 44, "total": 44 },
+ { "calculated": 1, "name": "Reckless Ambition", "realWeight": 315.4911193847656, "stackSize": 26, "total": 26 },
+ { "calculated": 1, "name": "The Wolf's Legacy", "realWeight": 1514.867431640625, "stackSize": 74, "total": 74 },
+ { "calculated": 20, "name": "The Artist", "realWeight": 53.84706497192383, "stackSize": 8, "total": 160 },
+ { "calculated": 1, "name": "The Gentleman", "realWeight": 1189.9752197265625, "stackSize": 63, "total": 63 },
+ { "calculated": 1, "name": "A Sea of Blue", "realWeight": 7712.4658203125, "stackSize": 219, "total": 219 },
+ { "calculated": 29, "name": "The Strategist", "realWeight": 12.365421295166016, "stackSize": 3, "total": 87 },
+ { "calculated": 1, "name": "The Lover", "realWeight": 66189.8046875, "stackSize": 918, "total": 918 },
+ { "calculated": 5, "name": "A Stone Perfected", "realWeight": 181.73385620117188, "stackSize": 18, "total": 90 },
+ {
+ "calculated": 110,
+ "name": "Doryani's Epiphany",
+ "realWeight": 152.30250549316406,
+ "stackSize": 16,
+ "total": 1760
+ },
+ { "calculated": 20, "name": "The Destination", "realWeight": 19.037813186645508, "stackSize": 4, "total": 80 },
+ { "calculated": 4, "name": "Checkmate", "realWeight": 197.08677673339844, "stackSize": 19, "total": 76 },
+ { "calculated": 5, "name": "Azyran's Reward", "realWeight": 410.74249267578125, "stackSize": 31, "total": 155 },
+ {
+ "calculated": 2.130000114440918,
+ "name": "Etched in Blood",
+ "realWeight": 44.07315444946289,
+ "stackSize": 7,
+ "total": 14.910000801086426
+ },
+ {
+ "calculated": 6.199999809265137,
+ "name": "The Eternal War",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 31
+ },
+ {
+ "calculated": 4.840000152587891,
+ "name": "The Emptiness",
+ "realWeight": 44.07315444946289,
+ "stackSize": 7,
+ "total": 33.880001068115234
+ },
+ { "calculated": 2, "name": "The Soul", "realWeight": 297.4658203125, "stackSize": 25, "total": 50 },
+ { "calculated": 2, "name": "The Wretched", "realWeight": 3365.75830078125, "stackSize": 126, "total": 252 },
+ { "calculated": 1, "name": "The Arena Champion", "realWeight": 11935.1669921875, "stackSize": 293, "total": 293 },
+ { "calculated": 40, "name": "The Enlightened", "realWeight": 44.07315444946289, "stackSize": 7, "total": 280 },
+ { "calculated": 1, "name": "The Siren", "realWeight": 410.74249267578125, "stackSize": 31, "total": 31 },
+ {
+ "calculated": 0.9700000286102295,
+ "name": "The King's Blade",
+ "realWeight": 41640.59765625,
+ "stackSize": 674,
+ "total": 653.780029296875
+ },
+ { "calculated": 5, "name": "Costly Curio", "realWeight": 371.64141845703125, "stackSize": 29, "total": 145 },
+ {
+ "calculated": 1.4500000476837158,
+ "name": "From Bone to Ashes",
+ "realWeight": 124.65770721435547,
+ "stackSize": 14,
+ "total": 20.30000114440918
+ },
+ {
+ "calculated": 2.9600000381469727,
+ "name": "The Celestial Justicar",
+ "realWeight": 602.028564453125,
+ "stackSize": 40,
+ "total": 118.4000015258789
+ },
+ { "calculated": 2, "name": "Baited Expectations", "realWeight": 315.4911193847656, "stackSize": 26, "total": 52 },
+ { "calculated": 15, "name": "The Astromancer", "realWeight": 2.3797266483306885, "stackSize": 1, "total": 15 },
+ {
+ "calculated": 3.0199999809265137,
+ "name": "The Forgotten Treasure",
+ "realWeight": 315.4911193847656,
+ "stackSize": 26,
+ "total": 78.5199966430664
+ },
+ { "calculated": 2, "name": "Heterochromia", "realWeight": 1363.95703125, "stackSize": 69, "total": 138 },
+ {
+ "calculated": 3.2300000190734863,
+ "name": "A Dab of Ink",
+ "realWeight": 451.12615966796875,
+ "stackSize": 33,
+ "total": 106.59000396728516
+ },
+ { "calculated": 1, "name": "The Garish Power", "realWeight": 4771.146484375, "stackSize": 159, "total": 159 },
+ { "calculated": 1, "name": "The Journey", "realWeight": 694.5541381835938, "stackSize": 44, "total": 44 },
+ { "calculated": 8, "name": "The Polymath", "realWeight": 152.30250549316406, "stackSize": 16, "total": 128 },
+ {
+ "calculated": 8.359999656677246,
+ "name": "A Modest Request",
+ "realWeight": 152.30250549316406,
+ "stackSize": 16,
+ "total": 133.75999450683594
+ },
+ {
+ "calculated": 114.04000091552734,
+ "name": "The Price of Loyalty",
+ "realWeight": 19.037813186645508,
+ "stackSize": 4,
+ "total": 456.1600036621094
+ },
+ {
+ "calculated": 1.2999999523162842,
+ "name": "The Conduit",
+ "realWeight": 624.7451782226562,
+ "stackSize": 41,
+ "total": 53.29999923706055
+ },
+ { "calculated": 3, "name": "The Dungeon Master", "realWeight": 352.5852355957031, "stackSize": 28, "total": 84 },
+ {
+ "calculated": 5.039999961853027,
+ "name": "Duality",
+ "realWeight": 19.037813186645508,
+ "stackSize": 4,
+ "total": 20.15999984741211
+ },
+ { "calculated": 1, "name": "The Fox", "realWeight": 1702.7939453125, "stackSize": 80, "total": 80 },
+ { "calculated": 1, "name": "The Innocent", "realWeight": 1545.677734375, "stackSize": 75, "total": 75 },
+ {
+ "calculated": 1.3899999856948853,
+ "name": "The Ethereal",
+ "realWeight": 557.445556640625,
+ "stackSize": 38,
+ "total": 52.81999969482422
+ },
+ {
+ "calculated": 3,
+ "name": "The Prince of Darkness",
+ "realWeight": 124.65770721435547,
+ "stackSize": 14,
+ "total": 42
+ },
+ {
+ "calculated": 1.090000033378601,
+ "name": "The Craving",
+ "realWeight": 333.86639404296875,
+ "stackSize": 27,
+ "total": 29.43000030517578
+ },
+ { "calculated": 1, "name": "The Dragon", "realWeight": 6232.43017578125, "stackSize": 190, "total": 190 },
+ { "calculated": 1, "name": "The Coming Storm", "realWeight": 1998.076416015625, "stackSize": 89, "total": 89 },
+ { "calculated": 1, "name": "The Last One Standing", "realWeight": 892.3436279296875, "stackSize": 52, "total": 52 },
+ { "calculated": 5, "name": "Desperate Crusade", "realWeight": 75.25357055664062, "stackSize": 10, "total": 50 },
+ { "calculated": 1, "name": "The Valkyrie", "realWeight": 3405.90576171875, "stackSize": 127, "total": 127 },
+ { "calculated": 1, "name": "The Watcher", "realWeight": 3167.416015625, "stackSize": 121, "total": 121 },
+ { "calculated": 1, "name": "The Witch", "realWeight": 14395.7451171875, "stackSize": 332, "total": 332 },
+ { "calculated": 1, "name": "Vinia's Token", "realWeight": 11209.5078125, "stackSize": 281, "total": 281 },
+ { "calculated": 1, "name": "Lucky Deck", "realWeight": 197.08677673339844, "stackSize": 19, "total": 19 },
+ { "calculated": 0, "name": "Vile Power", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 3, "name": "The Heroic Shot", "realWeight": 1218.4200439453125, "stackSize": 64, "total": 192 },
+ {
+ "calculated": 1,
+ "name": "The Sword King's Salute",
+ "realWeight": 14136.3701171875,
+ "stackSize": 328,
+ "total": 328
+ },
+ { "calculated": 1, "name": "The Wolf's Shadow", "realWeight": 4284.69189453125, "stackSize": 148, "total": 148 },
+ {
+ "calculated": 1.9299999475479126,
+ "name": "Triskaidekaphobia",
+ "realWeight": 1218.4200439453125,
+ "stackSize": 64,
+ "total": 123.5199966430664
+ },
+ { "calculated": 20, "name": "Home", "realWeight": 64.25262451171875, "stackSize": 9, "total": 180 },
+ { "calculated": 1, "name": "Blind Venture", "realWeight": 2708.113037109375, "stackSize": 109, "total": 109 },
+ { "calculated": 1, "name": "Prejudice", "realWeight": 1702.7939453125, "stackSize": 80, "total": 80 },
+ { "calculated": 2, "name": "Emperor of Purity", "realWeight": 1423.687255859375, "stackSize": 71, "total": 142 },
+ { "calculated": 1, "name": "Lysah's Respite", "realWeight": 1576.6942138671875, "stackSize": 76, "total": 76 },
+ {
+ "calculated": 4.150000095367432,
+ "name": "The Bargain",
+ "realWeight": 229.01080322265625,
+ "stackSize": 21,
+ "total": 87.1500015258789
+ },
+ { "calculated": 1, "name": "Immortal Resolve", "realWeight": 694.5541381835938, "stackSize": 44, "total": 44 },
+ { "calculated": 898.5, "name": "Love Through Ice", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 1, "name": "Glimmer of Hope", "realWeight": 9919.201171875, "stackSize": 259, "total": 259 },
+ {
+ "calculated": 1.0499999523162842,
+ "name": "More is Never Enough",
+ "realWeight": 535.5864868164062,
+ "stackSize": 37,
+ "total": 38.849998474121094
+ },
+ {
+ "calculated": 2,
+ "name": "The Archmage's Right Hand",
+ "realWeight": 1423.687255859375,
+ "stackSize": 71,
+ "total": 142
+ },
+ { "calculated": 1, "name": "The Fathomless Depths", "realWeight": 1334.41357421875, "stackSize": 68, "total": 68 },
+ { "calculated": 1, "name": "The Forsaken", "realWeight": 2134.28076171875, "stackSize": 93, "total": 93 },
+ { "calculated": 10, "name": "Monochrome", "realWeight": 391.0290222167969, "stackSize": 30, "total": 300 },
+ { "calculated": 1, "name": "The Harvester", "realWeight": 16052.0078125, "stackSize": 357, "total": 357 },
+ { "calculated": 1, "name": "The Master Artisan", "realWeight": 7345.66064453125, "stackSize": 212, "total": 212 },
+ { "calculated": 1, "name": "The Opulent", "realWeight": 11752.33203125, "stackSize": 290, "total": 290 },
+ {
+ "calculated": 1.409999966621399,
+ "name": "The Road to Power",
+ "realWeight": 152.30250549316406,
+ "stackSize": 16,
+ "total": 22.559999465942383
+ },
+ { "calculated": 3, "name": "The Catch", "realWeight": 34.974693298339844, "stackSize": 6, "total": 18 },
+ { "calculated": 1, "name": "Cameria's Cut", "realWeight": 694.5541381835938, "stackSize": 44, "total": 44 },
+ { "calculated": 9, "name": "The Scout", "realWeight": 138.2496337890625, "stackSize": 15, "total": 135 },
+ { "calculated": 1, "name": "Hunter's Resolve", "realWeight": 8031.578125, "stackSize": 225, "total": 225 },
+ {
+ "calculated": 4.650000095367432,
+ "name": "Chasing Risk",
+ "realWeight": 297.4658203125,
+ "stackSize": 25,
+ "total": 116.25
+ },
+ {
+ "calculated": 956.0800170898438,
+ "name": "The Shieldbearer",
+ "realWeight": 12.365421295166016,
+ "stackSize": 3,
+ "total": 2868.239990234375
+ },
+ { "calculated": 1, "name": "The Standoff", "realWeight": 6781.4287109375, "stackSize": 201, "total": 201 },
+ {
+ "calculated": 7.949999809265137,
+ "name": "The Vast",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 15.899999618530273
+ },
+ { "calculated": 1, "name": "The Explorer", "realWeight": 7449.853515625, "stackSize": 214, "total": 214 },
+ { "calculated": 2, "name": "The Saint's Treasure", "realWeight": 1078.462646484375, "stackSize": 59, "total": 118 },
+ {
+ "calculated": 6.449999809265137,
+ "name": "A Familiar Call",
+ "realWeight": 2.3797266483306885,
+ "stackSize": 1,
+ "total": 6.449999809265137
+ },
+ {
+ "calculated": 9.779999732971191,
+ "name": "The Chosen",
+ "realWeight": 229.01080322265625,
+ "stackSize": 21,
+ "total": 205.37998962402344
+ },
+ {
+ "calculated": 1.090000033378601,
+ "name": "The Unexpected Prize",
+ "realWeight": 471.78643798828125,
+ "stackSize": 34,
+ "total": 37.060001373291016
+ },
+ { "calculated": 4, "name": "The Seeker", "realWeight": 371.64141845703125, "stackSize": 29, "total": 116 },
+ { "calculated": 1, "name": "The Wind", "realWeight": 410.74249267578125, "stackSize": 31, "total": 31 },
+ {
+ "calculated": 1,
+ "name": "Three Faces in the Dark",
+ "realWeight": 22414.517578125,
+ "stackSize": 446,
+ "total": 446
+ },
+ {
+ "calculated": 4.440000057220459,
+ "name": "Underground Forest",
+ "realWeight": 1670.966552734375,
+ "stackSize": 79,
+ "total": 350.760009765625
+ },
+ {
+ "calculated": 0.41999998688697815,
+ "name": "Imperial Legacy",
+ "realWeight": 10440.69140625,
+ "stackSize": 268,
+ "total": 112.55999755859375
+ },
+ { "calculated": 1, "name": "Lingering Remnants", "realWeight": 1734.8209228515625, "stackSize": 81, "total": 81 },
+ { "calculated": 1, "name": "Mitts", "realWeight": 6331.095703125, "stackSize": 192, "total": 192 },
+ { "calculated": 1, "name": "Left to Fate", "realWeight": 2670.93115234375, "stackSize": 108, "total": 108 },
+ {
+ "calculated": 359.3999938964844,
+ "name": "Seven Years Bad Luck",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 1797
+ },
+ { "calculated": 1, "name": "The Spoiled Prince", "realWeight": 410.74249267578125, "stackSize": 31, "total": 31 },
+ { "calculated": 1, "name": "The Poet", "realWeight": 1453.870849609375, "stackSize": 72, "total": 72 },
+ { "calculated": 4, "name": "Brotherhood in Exile", "realWeight": 212.8492431640625, "stackSize": 20, "total": 80 },
+ { "calculated": 5, "name": "The Thaumaturgist", "realWeight": 166.80169677734375, "stackSize": 17, "total": 85 },
+ { "calculated": 1, "name": "The Golden Era", "realWeight": 997.2616577148438, "stackSize": 56, "total": 56 },
+ { "calculated": 1, "name": "The Deceiver", "realWeight": 1702.7939453125, "stackSize": 80, "total": 80 },
+ {
+ "calculated": 0.7300000190734863,
+ "name": "Lantador's Lost Love",
+ "realWeight": 16731.1640625,
+ "stackSize": 367,
+ "total": 267.9100036621094
+ },
+ { "calculated": 1, "name": "The Fletcher", "realWeight": 1702.7939453125, "stackSize": 80, "total": 80 },
+ { "calculated": 5, "name": "Keeper's Corruption", "realWeight": 12.365421295166016, "stackSize": 3, "total": 15 },
+ { "calculated": 5, "name": "The Shortcut", "realWeight": 98.92337036132812, "stackSize": 12, "total": 60 },
+ { "calculated": 30, "name": "Deadly Joy", "realWeight": 19.037813186645508, "stackSize": 4, "total": 120 },
+ { "calculated": 1, "name": "Doedre's Madness", "realWeight": 11996.3212890625, "stackSize": 294, "total": 294 },
+ { "calculated": 7, "name": "Something Dark", "realWeight": 315.4911193847656, "stackSize": 26, "total": 182 },
+ {
+ "calculated": 1.6699999570846558,
+ "name": "Sambodhi's Vow",
+ "realWeight": 4112.16796875,
+ "stackSize": 144,
+ "total": 240.47999572753906
+ },
+ { "calculated": 5, "name": "Abandoned Wealth", "realWeight": 430.7765197753906, "stackSize": 32, "total": 160 },
+ { "calculated": 1, "name": "The Army of Blood", "realWeight": 7607.05712890625, "stackSize": 217, "total": 217 },
+ { "calculated": 1, "name": "The Formless Sea", "realWeight": 2065.804443359375, "stackSize": 91, "total": 91 },
+ { "calculated": 5, "name": "Bijoux", "realWeight": 152.30250549316406, "stackSize": 16, "total": 80 },
+ { "calculated": 1, "name": "Jack in the Box", "realWeight": 4371.8369140625, "stackSize": 150, "total": 150 },
+ { "calculated": 10482.490234375, "name": "The Apothecary", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 1, "name": "The Carrion Crow", "realWeight": 19973.40625, "stackSize": 413, "total": 413 },
+ {
+ "calculated": 2.180000066757202,
+ "name": "The Deep Ones",
+ "realWeight": 152.30250549316406,
+ "stackSize": 16,
+ "total": 34.880001068115234
+ },
+ { "calculated": 35, "name": "The Hook", "realWeight": 12.365421295166016, "stackSize": 3, "total": 105 },
+ { "calculated": 1, "name": "The Jeweller's Boon", "realWeight": 3167.416015625, "stackSize": 121, "total": 121 },
+ {
+ "calculated": 1.7400000095367432,
+ "name": "The Primordial",
+ "realWeight": 816.2462158203125,
+ "stackSize": 49,
+ "total": 85.26000213623047
+ },
+ { "calculated": 5, "name": "Judging Voices", "realWeight": 181.73385620117188, "stackSize": 18, "total": 90 },
+ { "calculated": 1, "name": "The Sun", "realWeight": 11510.021484375, "stackSize": 286, "total": 286 },
+ { "calculated": 1, "name": "Three Voices", "realWeight": 9690.3017578125, "stackSize": 255, "total": 255 },
+ { "calculated": 1, "name": "Dialla's Subjugation", "realWeight": 1514.867431640625, "stackSize": 74, "total": 74 },
+ { "calculated": 3, "name": "The Bitter Blossom", "realWeight": 98.92337036132812, "stackSize": 12, "total": 36 },
+ { "calculated": 1, "name": "Demigod's Wager", "realWeight": 718.3661499023438, "stackSize": 45, "total": 45 },
+ { "calculated": 1, "name": "Humility", "realWeight": 10911.65625, "stackSize": 276, "total": 276 },
+ { "calculated": 2, "name": "The Blessing of Moosh", "realWeight": 2379.7265625, "stackSize": 100, "total": 200 },
+ { "calculated": 4, "name": "Perfection", "realWeight": 12.365421295166016, "stackSize": 3, "total": 12 },
+ {
+ "calculated": 3.109999895095825,
+ "name": "The Avenger",
+ "realWeight": 181.73385620117188,
+ "stackSize": 18,
+ "total": 55.97999954223633
+ },
+ {
+ "calculated": 0.9599999785423279,
+ "name": "The Chains that Bind",
+ "realWeight": 8518.259765625,
+ "stackSize": 234,
+ "total": 224.63999938964844
+ },
+ { "calculated": 1, "name": "The Deal", "realWeight": 997.2616577148438, "stackSize": 56, "total": 56 },
+ {
+ "calculated": 1347.75,
+ "name": "The Immortal",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 6738.75
+ },
+ { "calculated": 1, "name": "The Cache", "realWeight": 6580.00830078125, "stackSize": 197, "total": 197 },
+ {
+ "calculated": 0.36000001430511475,
+ "name": "Further Invention",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 0.7200000286102295
+ },
+ { "calculated": 1, "name": "The Rabid Rhoa", "realWeight": 5043.744140625, "stackSize": 165, "total": 165 },
+ {
+ "calculated": 3.390000104904175,
+ "name": "Prometheus' Armoury",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 6.78000020980835
+ },
+ {
+ "calculated": 5.989999771118164,
+ "name": "Remembrance",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 29.94999885559082
+ },
+ { "calculated": 1, "name": "The Penitent", "realWeight": 5414.97216796875, "stackSize": 173, "total": 173 },
+ { "calculated": 1, "name": "The Pack Leader", "realWeight": 1607.915283203125, "stackSize": 77, "total": 77 },
+ { "calculated": 1, "name": "The Card Sharp", "realWeight": 866.72705078125, "stackSize": 51, "total": 51 },
+ { "calculated": 1, "name": "Last Hope", "realWeight": 5321.3427734375, "stackSize": 171, "total": 171 },
+ { "calculated": 1, "name": "The Bear Woman", "realWeight": 535.5864868164062, "stackSize": 37, "total": 37 },
+ { "calculated": 2, "name": "Merciless Armament", "realWeight": 166.80169677734375, "stackSize": 17, "total": 34 },
+ {
+ "calculated": 2.2699999809265137,
+ "name": "The Brawny Battle Mage",
+ "realWeight": 166.80169677734375,
+ "stackSize": 17,
+ "total": 38.59000015258789
+ },
+ { "calculated": 127, "name": "The Sephirot", "realWeight": 297.4658203125, "stackSize": 25, "total": 3175 },
+ { "calculated": 3, "name": "The Forward Gaze", "realWeight": 718.3661499023438, "stackSize": 45, "total": 135 },
+ { "calculated": 1, "name": "The Cataclysm", "realWeight": 1964.4957275390625, "stackSize": 88, "total": 88 },
+ { "calculated": 20, "name": "Imperfect Memories", "realWeight": 19.037813186645508, "stackSize": 4, "total": 80 },
+ {
+ "calculated": 1,
+ "name": "Alone in the Darkness",
+ "realWeight": 6036.65771484375,
+ "stackSize": 186,
+ "total": 186
+ },
+ { "calculated": 1, "name": "The Hermit", "realWeight": 14330.7548828125, "stackSize": 331, "total": 331 },
+ { "calculated": 1, "name": "The Long Watch", "realWeight": 1334.41357421875, "stackSize": 68, "total": 68 },
+ { "calculated": 1, "name": "Call to the First Ones", "realWeight": 1334.41357421875, "stackSize": 68, "total": 68 },
+ {
+ "calculated": 4.570000171661377,
+ "name": "The Dreamer",
+ "realWeight": 124.65770721435547,
+ "stackSize": 14,
+ "total": 63.980003356933594
+ },
+ { "calculated": 1, "name": "The Inoculated", "realWeight": 7087.3291015625, "stackSize": 207, "total": 207 },
+ { "calculated": 17, "name": "Gemcutter's Mercy", "realWeight": 111.54295349121094, "stackSize": 13, "total": 221 },
+ { "calculated": 2, "name": "The Bones", "realWeight": 514.02099609375, "stackSize": 36, "total": 72 },
+ {
+ "calculated": 2.309999942779541,
+ "name": "The Jester",
+ "realWeight": 333.86639404296875,
+ "stackSize": 27,
+ "total": 62.369998931884766
+ },
+ {
+ "calculated": 1.1399999856948853,
+ "name": "The Lich",
+ "realWeight": 3984.333984375,
+ "stackSize": 141,
+ "total": 160.74000549316406
+ },
+ { "calculated": 1, "name": "Astral Protection", "realWeight": 492.7528381347656, "stackSize": 35, "total": 35 },
+ {
+ "calculated": 6.349999904632568,
+ "name": "Fateful Meeting",
+ "realWeight": 12.365421295166016,
+ "stackSize": 3,
+ "total": 19.049999237060547
+ },
+ { "calculated": 50, "name": "The Samurai's Eye", "realWeight": 86.81926727294922, "stackSize": 11, "total": 550 },
+ {
+ "calculated": 1.909999966621399,
+ "name": "The Spark and the Flame",
+ "realWeight": 579.5941772460938,
+ "stackSize": 39,
+ "total": 74.48999786376953
+ },
+ { "calculated": 1, "name": "Destined to Crumble", "realWeight": 49172.19140625, "stackSize": 753, "total": 753 },
+ { "calculated": 25, "name": "Beauty Through Death", "realWeight": 12.365421295166016, "stackSize": 3, "total": 75 },
+ { "calculated": 1, "name": "The Survivalist", "realWeight": 5274.732421875, "stackSize": 170, "total": 170 },
+ {
+ "calculated": 4.139999866485596,
+ "name": "The Throne",
+ "realWeight": 111.54295349121094,
+ "stackSize": 13,
+ "total": 53.81999969482422
+ },
+ {
+ "calculated": 1.0299999713897705,
+ "name": "Endless Night",
+ "realWeight": 297.4658203125,
+ "stackSize": 25,
+ "total": 25.75
+ },
+ { "calculated": 2, "name": "Azure Rage", "realWeight": 2670.93115234375, "stackSize": 108, "total": 216 },
+ { "calculated": 1, "name": "The Undaunted", "realWeight": 892.3436279296875, "stackSize": 52, "total": 52 },
+ { "calculated": 1, "name": "Thunderous Skies", "realWeight": 9576.5224609375, "stackSize": 253, "total": 253 },
+ {
+ "calculated": 4.099999904632568,
+ "name": "The World Eater",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 20.5
+ },
+ { "calculated": 1, "name": "The Scholar", "realWeight": 44262.1796875, "stackSize": 702, "total": 702 },
+ {
+ "calculated": 1.2899999618530273,
+ "name": "The Traitor",
+ "realWeight": 866.72705078125,
+ "stackSize": 51,
+ "total": 65.79000091552734
+ },
+ { "calculated": 3, "name": "The Void", "realWeight": 9633.3564453125, "stackSize": 254, "total": 762 },
+ { "calculated": 4, "name": "The Cursed King", "realWeight": 471.78643798828125, "stackSize": 34, "total": 136 },
+ { "calculated": 1, "name": "The Puzzle", "realWeight": 5414.97216796875, "stackSize": 173, "total": 173 },
+ { "calculated": 1, "name": "The Realm", "realWeight": 333.86639404296875, "stackSize": 27, "total": 27 },
+ { "calculated": 1, "name": "Dark Temptation", "realWeight": 9463.193359375, "stackSize": 251, "total": 251 },
+ { "calculated": 15, "name": "Magnum Opus", "realWeight": 64.25262451171875, "stackSize": 9, "total": 135 },
+ {
+ "calculated": 1.690000057220459,
+ "name": "The Twilight Moon",
+ "realWeight": 333.86639404296875,
+ "stackSize": 27,
+ "total": 45.630001068115234
+ },
+ { "calculated": 45, "name": "Luminous Trove", "realWeight": 34.974693298339844, "stackSize": 6, "total": 270 },
+ {
+ "calculated": 1.0099999904632568,
+ "name": "The Landing",
+ "realWeight": 742.4442749023438,
+ "stackSize": 46,
+ "total": 46.459999084472656
+ },
+ { "calculated": 1, "name": "The Ruthless Ceinture", "realWeight": 2415.51171875, "stackSize": 101, "total": 101 },
+ {
+ "calculated": 1.9500000476837158,
+ "name": "Acclimatisation",
+ "realWeight": 3167.416015625,
+ "stackSize": 121,
+ "total": 235.95001220703125
+ },
+ { "calculated": 10, "name": "Alluring Bounty", "realWeight": 111.54295349121094, "stackSize": 13, "total": 130 },
+ { "calculated": 1, "name": "The Surveyor", "realWeight": 3089.210693359375, "stackSize": 119, "total": 119 },
+ { "calculated": 1, "name": "The Web", "realWeight": 8031.578125, "stackSize": 225, "total": 225 },
+ { "calculated": 3, "name": "The Insatiable", "realWeight": 944.3167114257812, "stackSize": 54, "total": 162 },
+ { "calculated": 0, "name": "Luck of the Vaal", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 7.110000133514404,
+ "name": "Nook's Crown",
+ "realWeight": 2.3797266483306885,
+ "stackSize": 1,
+ "total": 7.110000133514404
+ },
+ {
+ "calculated": 0.9900000095367432,
+ "name": "The Flora's Gift",
+ "realWeight": 28708.181640625,
+ "stackSize": 526,
+ "total": 520.739990234375
+ },
+ {
+ "calculated": 1,
+ "name": "The Drunken Aristocrat",
+ "realWeight": 2273.446044921875,
+ "stackSize": 97,
+ "total": 97
+ },
+ { "calculated": 1, "name": "Coveted Possession", "realWeight": 3365.75830078125, "stackSize": 126, "total": 126 },
+ { "calculated": 1, "name": "Loyalty", "realWeight": 31874.671875, "stackSize": 564, "total": 564 },
+ {
+ "calculated": 2822.47998046875,
+ "name": "The Demon",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 5644.9599609375
+ },
+ {
+ "calculated": 14.789999961853027,
+ "name": "The Leviathan",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 29.579999923706055
+ },
+ { "calculated": 10, "name": "The Mind's Eyes", "realWeight": 197.08677673339844, "stackSize": 19, "total": 190 },
+ {
+ "calculated": 2.009999990463257,
+ "name": "The Offspring",
+ "realWeight": 262.4936828613281,
+ "stackSize": 23,
+ "total": 46.22999954223633
+ },
+ {
+ "calculated": 5658.89990234375,
+ "name": "Unrequited Love",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 11317.7998046875
+ },
+ { "calculated": 1, "name": "Prosperity", "realWeight": 11874.1162109375, "stackSize": 292, "total": 292 },
+ { "calculated": 1, "name": "Shard of Fate", "realWeight": 5603.85595703125, "stackSize": 177, "total": 177 },
+ { "calculated": 1, "name": "Treasure Hunter", "realWeight": 816.2462158203125, "stackSize": 49, "total": 49 },
+ {
+ "calculated": 17.920000076293945,
+ "name": "The Old Man",
+ "realWeight": 2.3797266483306885,
+ "stackSize": 1,
+ "total": 17.920000076293945
+ },
+ {
+ "calculated": 7.960000038146973,
+ "name": "Draped in Dreams",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 39.79999923706055
+ },
+ {
+ "calculated": 1.6100000143051147,
+ "name": "The Wilted Rose",
+ "realWeight": 2415.51171875,
+ "stackSize": 101,
+ "total": 162.61000061035156
+ },
+ { "calculated": 1, "name": "The Battle Born", "realWeight": 5043.744140625, "stackSize": 165, "total": 165 },
+ { "calculated": 1, "name": "Rain of Chaos", "realWeight": 121465.9921875, "stackSize": 1376, "total": 1376 },
+ { "calculated": 3.25, "name": "Dying Anguish", "realWeight": 1305.08642578125, "stackSize": 67, "total": 217.75 },
+ { "calculated": 3, "name": "Peaceful Moments", "realWeight": 197.08677673339844, "stackSize": 19, "total": 57 },
+ {
+ "calculated": 3.7300000190734863,
+ "name": "The Life Thief",
+ "realWeight": 75.25357055664062,
+ "stackSize": 10,
+ "total": 37.29999923706055
+ },
+ {
+ "calculated": 1.0299999713897705,
+ "name": "Echoes of Love",
+ "realWeight": 492.7528381347656,
+ "stackSize": 35,
+ "total": 36.04999923706055
+ },
+ {
+ "calculated": 2.2799999713897705,
+ "name": "Terrible Secret of Space",
+ "realWeight": 212.8492431640625,
+ "stackSize": 20,
+ "total": 45.599998474121094
+ },
+ {
+ "calculated": 1.8300000429153442,
+ "name": "The Incantation",
+ "realWeight": 1189.9752197265625,
+ "stackSize": 63,
+ "total": 115.29000091552734
+ },
+ { "calculated": 1, "name": "The Rite of Elements", "realWeight": 1305.08642578125, "stackSize": 67, "total": 67 },
+ { "calculated": 1, "name": "The Darkest Dream", "realWeight": 297.4658203125, "stackSize": 25, "total": 25 },
+ { "calculated": 1, "name": "The Scavenger", "realWeight": 2203.496826171875, "stackSize": 95, "total": 95 },
+ { "calculated": 1, "name": "Harmony of Souls", "realWeight": 138.2496337890625, "stackSize": 15, "total": 15 },
+ {
+ "calculated": 4.579999923706055,
+ "name": "The Enforcer",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 22.899999618530273
+ },
+ {
+ "calculated": 2.759999990463257,
+ "name": "Arrogance of the Vaal",
+ "realWeight": 694.5541381835938,
+ "stackSize": 44,
+ "total": 121.44000244140625
+ },
+ {
+ "calculated": 4.190000057220459,
+ "name": "The Pact",
+ "realWeight": 297.4658203125,
+ "stackSize": 25,
+ "total": 104.75
+ },
+ { "calculated": 1, "name": "The Wrath", "realWeight": 8085.18115234375, "stackSize": 226, "total": 226 },
+ { "calculated": 0, "name": "The Mad King", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 9,
+ "name": "Pride of the First Ones",
+ "realWeight": 138.2496337890625,
+ "stackSize": 15,
+ "total": 135
+ },
+ { "calculated": 1, "name": "Cursed Words", "realWeight": 3206.7626953125, "stackSize": 122, "total": 122 },
+ { "calculated": 2, "name": "The Dapper Prodigy", "realWeight": 2238.38037109375, "stackSize": 96, "total": 192 },
+ {
+ "calculated": 2.7899999618530273,
+ "name": "Dark Dreams",
+ "realWeight": 44.07315444946289,
+ "stackSize": 7,
+ "total": 19.529998779296875
+ },
+ {
+ "calculated": 3.9800000190734863,
+ "name": "Dementophobia",
+ "realWeight": 64.25262451171875,
+ "stackSize": 9,
+ "total": 35.81999969482422
+ },
+ {
+ "calculated": 1,
+ "name": "The Fox in the Brambles",
+ "realWeight": 557.445556640625,
+ "stackSize": 38,
+ "total": 38
+ },
+ {
+ "calculated": 1.600000023841858,
+ "name": "The Hunger",
+ "realWeight": 514.02099609375,
+ "stackSize": 36,
+ "total": 57.60000228881836
+ },
+ { "calculated": 1, "name": "The Oath", "realWeight": 1607.915283203125, "stackSize": 77, "total": 77 },
+ { "calculated": 1, "name": "The Porcupine", "realWeight": 3609.00927734375, "stackSize": 132, "total": 132 },
+ { "calculated": 1, "name": "Vanity", "realWeight": 2523.928955078125, "stackSize": 104, "total": 104 },
+ {
+ "calculated": 117.26000213623047,
+ "name": "Desecrated Virtue",
+ "realWeight": 44.07315444946289,
+ "stackSize": 7,
+ "total": 820.8200073242188
+ },
+ {
+ "calculated": 22.979999542236328,
+ "name": "Darker Half",
+ "realWeight": 44.07315444946289,
+ "stackSize": 7,
+ "total": 160.86000061035156
+ },
+ { "calculated": 1, "name": "The Journalist", "realWeight": 11935.1669921875, "stackSize": 293, "total": 293 },
+ { "calculated": 1, "name": "The Risk", "realWeight": 5509.14453125, "stackSize": 175, "total": 175 },
+ { "calculated": 0, "name": "A Note in the Wind", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 1, "name": "Anarchy's Price", "realWeight": 742.4442749023438, "stackSize": 46, "total": 46 },
+ { "calculated": 13178, "name": "House of Mirrors", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 0, "name": "Akil's Prophecy", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 2,
+ "name": "Pride Before the Fall",
+ "realWeight": 124.65770721435547,
+ "stackSize": 14,
+ "total": 28
+ },
+ { "calculated": 13, "name": "The Aspirant", "realWeight": 19.037813186645508, "stackSize": 4, "total": 52 },
+ { "calculated": 1, "name": "Earth Drinker", "realWeight": 1189.9752197265625, "stackSize": 63, "total": 63 },
+ {
+ "calculated": 1.9199999570846558,
+ "name": "The Queen",
+ "realWeight": 86.81926727294922,
+ "stackSize": 11,
+ "total": 21.119998931884766
+ },
+ { "calculated": 1, "name": "The Master", "realWeight": 816.2462158203125, "stackSize": 49, "total": 49 },
+ {
+ "calculated": 518.6099853515625,
+ "name": "Choking Guilt",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 1037.219970703125
+ },
+ {
+ "calculated": 15.319999694824219,
+ "name": "The Academic",
+ "realWeight": 197.08677673339844,
+ "stackSize": 19,
+ "total": 291.0799865722656
+ },
+ { "calculated": 15, "name": "Winter's Embrace", "realWeight": 26.606155395507812, "stackSize": 5, "total": 75 },
+ { "calculated": 1, "name": "The Hoarder", "realWeight": 2560.419189453125, "stackSize": 105, "total": 105 },
+ { "calculated": 1, "name": "Gemcutter's Promise", "realWeight": 6480.0595703125, "stackSize": 195, "total": 195 },
+ { "calculated": 1, "name": "The Tinkerer's Table", "realWeight": 245.5619659423828, "stackSize": 22, "total": 22 },
+ { "calculated": 2.380000114440918, "name": "The Awakened", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 64.62000274658203,
+ "name": "Brother's Stash",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 323.1000061035156
+ },
+ {
+ "calculated": 1.4500000476837158,
+ "name": "Light and Truth",
+ "realWeight": 451.12615966796875,
+ "stackSize": 33,
+ "total": 47.85000228881836
+ },
+ { "calculated": 1, "name": "Time-Lost Relic", "realWeight": 6232.43017578125, "stackSize": 190, "total": 190 },
+ { "calculated": 2, "name": "Boon of the First Ones", "realWeight": 557.445556640625, "stackSize": 38, "total": 76 },
+ { "calculated": 1, "name": "The Catalyst", "realWeight": 22716.732421875, "stackSize": 450, "total": 450 },
+ { "calculated": 1, "name": "Thirst for Knowledge", "realWeight": 6529.9697265625, "stackSize": 196, "total": 196 },
+ {
+ "calculated": 5.840000152587891,
+ "name": "Void of the Elements",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 11.680000305175781
+ },
+ { "calculated": 1, "name": "Her Mask", "realWeight": 8792.7333984375, "stackSize": 239, "total": 239 },
+ { "calculated": 5, "name": "The Tumbleweed", "realWeight": 75.25357055664062, "stackSize": 10, "total": 50 },
+ { "calculated": 3, "name": "Council of Cats", "realWeight": 152.30250549316406, "stackSize": 16, "total": 48 },
+ {
+ "calculated": 1.9600000381469727,
+ "name": "The Enthusiasts",
+ "realWeight": 371.64141845703125,
+ "stackSize": 29,
+ "total": 56.84000015258789
+ },
+ { "calculated": 1, "name": "The Gladiator", "realWeight": 5414.97216796875, "stackSize": 173, "total": 173 },
+ { "calculated": 3, "name": "Divine Justice", "realWeight": 229.01080322265625, "stackSize": 21, "total": 63 },
+ {
+ "calculated": 44,
+ "name": "A Fate Worse Than Death",
+ "realWeight": 44.07315444946289,
+ "stackSize": 7,
+ "total": 308
+ },
+ { "calculated": 16, "name": "The Damned", "realWeight": 26.606155395507812, "stackSize": 5, "total": 80 },
+ { "calculated": 1, "name": "The Trial", "realWeight": 5842.97705078125, "stackSize": 182, "total": 182 },
+ { "calculated": 9, "name": "The Long Con", "realWeight": 86.81926727294922, "stackSize": 11, "total": 99 },
+ { "calculated": 3, "name": "Justified Ambition", "realWeight": 471.78643798828125, "stackSize": 34, "total": 102 },
+ { "calculated": 0, "name": "The Valley of Steel Boxes", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 1, "name": "The Endurance", "realWeight": 6036.65771484375, "stackSize": 186, "total": 186 },
+ { "calculated": 0, "name": "Treasures of the Vaal", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 2, "name": "Unchained", "realWeight": 352.5852355957031, "stackSize": 28, "total": 56 },
+ {
+ "calculated": 1,
+ "name": "Gift of the Gemling Queen",
+ "realWeight": 1702.7939453125,
+ "stackSize": 80,
+ "total": 80
+ },
+ { "calculated": 1, "name": "Hubris", "realWeight": 5368.08935546875, "stackSize": 172, "total": 172 },
+ { "calculated": 1, "name": "The Feast", "realWeight": 2415.51171875, "stackSize": 101, "total": 101 },
+ { "calculated": 1, "name": "Volatile Power", "realWeight": 5891.19921875, "stackSize": 183, "total": 183 },
+ { "calculated": 1, "name": "Emperor's Luck", "realWeight": 45306.58984375, "stackSize": 713, "total": 713 },
+ { "calculated": 1, "name": "Struck by Lightning", "realWeight": 4816.228515625, "stackSize": 160, "total": 160 },
+ { "calculated": 1, "name": "The Mercenary", "realWeight": 1832.08642578125, "stackSize": 84, "total": 84 },
+ { "calculated": 1, "name": "The Wolverine", "realWeight": 1484.2645263671875, "stackSize": 73, "total": 73 },
+ { "calculated": 1, "name": "Hope", "realWeight": 2065.804443359375, "stackSize": 91, "total": 91 },
+ {
+ "calculated": 1,
+ "name": "The Encroaching Darkness",
+ "realWeight": 892.3436279296875,
+ "stackSize": 52,
+ "total": 52
+ },
+ { "calculated": 3, "name": "Guardian's Challenge", "realWeight": 816.2462158203125, "stackSize": 49, "total": 147 },
+ { "calculated": 1, "name": "The Aesthete", "realWeight": 6430.2763671875, "stackSize": 194, "total": 194 },
+ { "calculated": 2, "name": "The Easy Stroll", "realWeight": 1702.7939453125, "stackSize": 80, "total": 160 },
+ { "calculated": 2, "name": "The Endless Darkness", "realWeight": 64.25262451171875, "stackSize": 9, "total": 18 },
+ { "calculated": 1347.75, "name": "The Fiend", "realWeight": 6.7308831214904785, "stackSize": 2, "total": 2695.5 },
+ {
+ "calculated": 1.8600000143051147,
+ "name": "The Lord of Celebration",
+ "realWeight": 579.5941772460938,
+ "stackSize": 39,
+ "total": 72.54000091552734
+ },
+ { "calculated": 1, "name": "The Lion", "realWeight": 4503.64599609375, "stackSize": 153, "total": 153 },
+ { "calculated": 10, "name": "The Sacrifice", "realWeight": 34.974693298339844, "stackSize": 6, "total": 60 },
+ {
+ "calculated": 3.119999885559082,
+ "name": "The Side Quest",
+ "realWeight": 624.7451782226562,
+ "stackSize": 41,
+ "total": 127.91999816894531
+ },
+ { "calculated": 1, "name": "The Sigil", "realWeight": 7241.958984375, "stackSize": 210, "total": 210 },
+ { "calculated": 1, "name": "The Betrayal", "realWeight": 2820.681884765625, "stackSize": 112, "total": 112 },
+ { "calculated": 5.75, "name": "The Sustenance", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 1, "name": "The Union", "realWeight": 4198.13427734375, "stackSize": 146, "total": 146 },
+ { "calculated": 1, "name": "The One With All", "realWeight": 2415.51171875, "stackSize": 101, "total": 101 },
+ { "calculated": 5, "name": "The White Knight", "realWeight": 26.606155395507812, "stackSize": 5, "total": 25 },
+ {
+ "calculated": 2.190000057220459,
+ "name": "Bowyer's Dream",
+ "realWeight": 111.54295349121094,
+ "stackSize": 13,
+ "total": 28.470001220703125
+ },
+ { "calculated": 1, "name": "The Demoness", "realWeight": 8682.595703125, "stackSize": 237, "total": 237 },
+ { "calculated": 1, "name": "Buried Treasure", "realWeight": 1024.0928955078125, "stackSize": 57, "total": 57 },
+ { "calculated": 10, "name": "Gift of Asenath", "realWeight": 98.92337036132812, "stackSize": 12, "total": 120 },
+ { "calculated": 5870.2001953125, "name": "The Price of Devotion", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 149.6999969482422,
+ "name": "Wealth and Power",
+ "realWeight": 12.365421295166016,
+ "stackSize": 3,
+ "total": 449.0999755859375
+ },
+ { "calculated": 4, "name": "Ambitious Obsession", "realWeight": 53.84706497192383, "stackSize": 8, "total": 32 },
+ {
+ "calculated": 2.9800000190734863,
+ "name": "The Cacophony",
+ "realWeight": 197.08677673339844,
+ "stackSize": 19,
+ "total": 56.619998931884766
+ },
+ {
+ "calculated": 2.6500000953674316,
+ "name": "Atziri's Arsenal",
+ "realWeight": 1423.687255859375,
+ "stackSize": 71,
+ "total": 188.15000915527344
+ },
+ { "calculated": 1, "name": "Assassin's Favour", "realWeight": 8246.7021484375, "stackSize": 229, "total": 229 },
+ {
+ "calculated": 222.86000061035156,
+ "name": "The Cheater",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 445.7200012207031
+ },
+ {
+ "calculated": 3,
+ "name": "Brush, Paint and Palette",
+ "realWeight": 410.74249267578125,
+ "stackSize": 31,
+ "total": 93
+ },
+ { "calculated": 3, "name": "The Professor", "realWeight": 352.5852355957031, "stackSize": 28, "total": 84 },
+ { "calculated": 1, "name": "The Fool", "realWeight": 2451.474365234375, "stackSize": 102, "total": 102 },
+ { "calculated": 1, "name": "The Metalsmith's Gift", "realWeight": 31536.181640625, "stackSize": 560, "total": 560 },
+ {
+ "calculated": 34.349998474121094,
+ "name": "The Gulf",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 171.75
+ }
+]
diff --git a/src/components/FileCard/FileCard.story.vue b/src/components/FileCard/FileCard.story.vue
new file mode 100644
index 00000000..460bbf1f
--- /dev/null
+++ b/src/components/FileCard/FileCard.story.vue
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/FileCard/FileCard.vue b/src/components/FileCard/FileCard.vue
new file mode 100644
index 00000000..add2ed46
--- /dev/null
+++ b/src/components/FileCard/FileCard.vue
@@ -0,0 +1,191 @@
+
+
+
+ {{ notCards }}
+
+
+
+
+
{{ fileContent.filename }}
+
+
+
+
{{ nf.format(price) }}
+
+
+
Download
+
+
$emit('update:selected', (e.target as HTMLInputElement).checked)"
+ />
+
+
+
+
+
+
+
+ {{ error }}
+
+
+
+
+
diff --git a/src/components/FileCard/FixedIcon.vue b/src/components/FileCard/FixedIcon.vue
new file mode 100644
index 00000000..725a250c
--- /dev/null
+++ b/src/components/FileCard/FixedIcon.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/src/components/FileCard/dummy.ts b/src/components/FileCard/dummy.ts
new file mode 100644
index 00000000..3ac63b48
--- /dev/null
+++ b/src/components/FileCard/dummy.ts
@@ -0,0 +1,5 @@
+import { Contents } from '../../types';
+
+import fileCardPropsJson from './fileCardProps.json' assert { type: 'json' };
+
+export const fileCardProps: Contents = fileCardPropsJson;
diff --git a/src/components/FileCard/fileCardProps.json b/src/components/FileCard/fileCardProps.json
new file mode 100644
index 00000000..6bf75a60
--- /dev/null
+++ b/src/components/FileCard/fileCardProps.json
@@ -0,0 +1,1543 @@
+{
+ "fixedNames": {},
+ "notCards": [],
+ "id": "b703a5bf-9a01-40f2-91b5-41498847aeea",
+ "fileContent": {
+ "text": "stackSize,name,calculated,total\n17,Merciless Armament,1.99,33.83\n173,The Penitent,1.0,173.0\n36,The Bones,1.0,36.0\n29,The Enthusiasts,2.0,58.0\n0,The Greatest Intentions,12.44,0.0\n6,The Sacrifice,20.0,120.0\n15,Pride of the First Ones,8.0,120.0\n51,The Traitor,2.0,102.0\n132,The Porcupine,1.88,248.16\n3,Beauty Through Death,13.61,40.829998\n21,Divine Justice,2.0,42.0\n16,The Road to Power,3.0,48.0\n153,The Surgeon,1.0,153.0\n91,The Formless Sea,1.26,114.659996\n293,The Journalist,1.0,293.0\n165,The Rabid Rhoa,1.0,165.0\n47,Sambodhi's Wisdom,1.0,47.0\n5,The Progeny of Lunaris,5.0,25.0\n2,Choking Guilt,428.09,856.18\n4,The Aspirant,10.0,40.0\n5,The Eternal War,6.22,31.099998\n88,Forbidden Power,1.0,88.0\n1376,Rain of Chaos,1.0,1376.0\n108,Azure Rage,1.0,108.0\n31,The Spoiled Prince,1.37,42.47\n450,The Catalyst,1.0,450.0\n212,The Master Artisan,1.0,212.0\n69,Death,2.0,138.0\n281,Vinia's Token,1.37,384.97\n19,Peaceful Moments,3.0,57.0\n46,The Landing,2.0,92.0\n49,The Primordial,1.0,49.0\n0,The Sustenance,6.0,0.0\n254,The Void,2.0,508.0\n56,The Deal,2.0,112.0\n127,The Valkyrie,2.0,254.0\n5,Altered Perception,10.0,50.0\n186,The Endurance,1.0,186.0\n121,The Jeweller's Boon,1.0,121.0\n220,The Adventuring Spirit,1.0,220.0\n1,A Familiar Call,7.0,7.0\n25,Haunting Shadows,4.28,107.00001\n237,The Demoness,1.0,237.0\n77,The Oath,1.0,77.0\n31,The Siren,2.0,62.0\n39,The Spark and the Flame,1.61,62.79\n51,The Card Sharp,2.0,102.0\n5,The White Knight,3.99,19.95\n2,Unrequited Love,5307.75,10615.5\n195,Gemcutter's Promise,1.0,195.0\n0,Love Through Ice,933.76,0.0\n146,The Union,1.0,146.0\n219,A Sea of Blue,2.0,438.0\n69,Heterochromia,1.0,69.0\n172,Hubris,1.0,172.0\n0,The Awakened,5.0,0.0\n121,The Watcher,1.0,121.0\n170,The Wolf,1.0,170.0\n2,The Fiend,1743.98,3487.96\n3,Wealth and Power,181.98,545.94\n1,The Astromancer,15.0,15.0\n35,Echoes of Love,2.0,70.0\n5,The Rabbit's Foot,7.0,35.0\n33,Lachrymal Necrosis,2.69,88.770004\n17,The Thaumaturgist,5.0,85.0\n31,The Wind,1.0,31.0\n9,Rebirth,3.0,27.0\n4,Succor of the Sinless,150.0,600.0\n13,Gemcutter's Mercy,17.24,224.12\n13,The Throne,4.0,52.0\n5,Draped in Dreams,5.0,25.0\n674,The King's Blade,1.0,674.0\n19,The Shepherd's Sandals,3.0,57.0\n30,Deathly Designs,3.0,90.0\n3,The Shieldbearer,758.25,2274.75\n268,Imperial Legacy,0.44,117.92\n293,The Arena Champion,1.0,293.0\n76,The Admirer,1.0,76.0\n27,The Jester,2.0,54.0\n32,Abandoned Wealth,5.0,160.0\n109,Blind Venture,1.0,109.0\n31,Azyran's Reward,4.0,124.0\n57,Buried Treasure,1.0,57.0\n234,The Chains that Bind,1.0,234.0\n10,The Life Thief,1.2,12.0\n183,The Tower,1.0,183.0\n80,The Easy Stroll,2.0,160.0\n52,The Encroaching Darkness,1.0,52.0\n0,The Apothecary,9553.95,0.0\n5,Remembrance,10.0,50.0\n331,The Hermit,1.0,331.0\n229,Assassin's Favour,1.0,229.0\n148,The Wolf's Shadow,1.0,148.0\n39,The Lord of Celebration,2.0,78.0\n2,The Demon,2858.14,5716.28\n16,Bijoux,5.0,80.0\n67,Dying Anguish,1.0,67.0\n27,The Craving,2.0,54.0\n28,Disdain,2.0,56.0\n9,Lethean Temptation,5.0,45.0\n15,Harmony of Souls,2.09,31.349998\n328,The Sword King's Salute,1.0,328.0\n446,Three Faces in the Dark,1.0,446.0\n0,The Iron Bard,0.0,0.0\n136,The Calling,1.0,136.0\n27,The Realm,1.0,27.0\n231,Boon of Justice,1.0,231.0\n5,Winter's Embrace,15.0,75.0\n278,Rain Tempter,1.0,278.0\n7,Dark Dreams,3.0,21.0\n0,Vile Power,0.0,0.0\n2,The Vast,9.25,18.5\n80,The Fox,1.0,80.0\n26,Baited Expectations,1.03,26.779999\n5,The Eye of Terror,8.0,40.0\n41,The Conduit,3.78,154.98\n33,Light and Truth,1.97,65.01\n28,The Professor,3.0,84.0\n125,Society's Remorse,1.0,125.0\n210,The Sigil,1.0,210.0\n255,The Warden,1.0,255.0\n412,The Gemcutter,1.0,412.0\n13,Bowyer's Dream,2.0,26.0\n16,Doryani's Epiphany,107.97,1727.52\n198,Lucky Connections,1.0,198.0\n5,The Gulf,25.0,125.0\n240,Turn the Other Cheek,1.0,240.0\n5,The World Eater,3.73,18.65\n0,Friendship,0.0,0.0\n80,The Deceiver,1.0,80.0\n11,The Queen,2.0,22.0\n165,The Battle Born,1.0,165.0\n175,The Inventor,1.97,344.75\n7,A Fate Worse Than Death,45.0,315.0\n101,The One With All,1.0,101.0\n101,The Wilted Rose,1.96,197.96\n95,The Scavenger,1.0,95.0\n14,Pride Before the Fall,2.0,28.0\n253,Thunderous Skies,1.0,253.0\n190,Time-Lost Relic,1.0,190.0\n276,Humility,1.0,276.0\n112,The Betrayal,1.17,131.04\n19,The Cacophony,2.0,38.0\n126,Coveted Possession,1.0,126.0\n108,Left to Fate,1.65,178.2\n25,Chasing Risk,4.0,100.0\n292,Prosperity,1.0,292.0\n49,Treasure Hunter,1.0,49.0\n40,The Celestial Justicar,1.13,45.2\n81,Lingering Remnants,1.0,81.0\n16,A Modest Request,10.0,160.0\n2,Prometheus' Armoury,3.0,6.0\n64,The Heroic Shot,2.0,128.0\n29,The King's Heart,2.0,58.0\n29,The Seeker,4.0,116.0\n122,Cursed Words,1.0,122.0\n21,The Chosen,10.0,210.0\n702,The Scholar,1.0,702.0\n226,The Wrath,1.0,226.0\n0,A Note in the Wind,0.0,0.0\n54,The Insatiable,1.0,54.0\n154,Cartographer's Delight,1.0,154.0\n40,The Wolven King's Bite,2.0,80.0\n18,The Avenger,2.97,53.46\n44,The Journey,2.0,88.0\n0,The Price of Devotion,5583.04,0.0\n1,Nook's Crown,7.92,7.92\n5,The Immortal,1137.38,5686.9\n2,The Leviathan,10.0,20.0\n104,Vanity,1.0,104.0\n0,The Valley of Steel Boxes,0.0,0.0\n33,A Dab of Ink,2.0,66.0\n9,The Endless Darkness,2.0,18.0\n286,The Sun,1.0,286.0\n12,Gift of Asenath,13.79,165.48\n225,The Web,1.0,225.0\n77,Tranquillity,1.0,77.0\n197,The Cache,1.0,197.0\n44,Cameria's Cut,1.0,44.0\n182,The Trial,1.0,182.0\n5,The Dragon's Heart,50.0,250.0\n126,The Eye of the Dragon,1.0,126.0\n3,The Strategist,30.0,90.0\n16,Council of Cats,3.0,48.0\n0,House of Mirrors,11373.75,0.0\n239,Her Mask,1.0,239.0\n564,Loyalty,1.0,564.0\n45,Demigod's Wager,2.0,90.0\n190,The Dragon,1.0,190.0\n80,The Fletcher,1.0,80.0\n159,The Garish Power,1.6,254.40001\n1,The One That Got Away,17.99,17.99\n173,The Gladiator,1.0,173.0\n290,The Opulent,1.0,290.0\n20,Brotherhood in Exile,3.74,74.8\n88,The Cataclysm,1.0,88.0\n17,The Brawny Battle Mage,2.48,42.16\n294,Doedre's Madness,1.0,294.0\n97,The Drunken Aristocrat,1.07,103.79001\n20,Terrible Secret of Space,3.0,60.0\n177,Shard of Fate,1.0,177.0\n105,The Hoarder,1.0,105.0\n77,The Pack Leader,1.0,77.0\n96,A Mother's Parting Gift,1.0,96.0\n713,Emperor's Luck,1.0,713.0\n2,Further Invention,5.0,10.0\n6,The Catch,5.0,30.0\n67,Broken Truce,1.0,67.0\n4,Dying Light,5.95,23.8\n8,Ambitious Obsession,3.0,24.0\n38,The Fox in the Brambles,1.11,42.18\n63,The Incantation,2.0,126.0\n41,The Side Quest,2.0,82.0\n28,The Dungeon Master,3.0,84.0\n25,The Soul,2.0,50.0\n100,The Blessing of Moosh,1.0,100.0\n11,Rebirth and Renewal,3.91,43.010002\n272,The Tireless Extractor,1.0,272.0\n124,Grave Knowledge,1.0,124.0\n37,The Bear Woman,2.0,74.0\n21,The Bargain,5.0,105.0\n10,The Tumbleweed,5.0,50.0\n160,The Skeleton,1.0,160.0\n237,The Visionary,1.0,237.0\n63,The Gentleman,1.0,63.0\n0,The Devastator,0.0,0.0\n4,Imperfect Memories,20.0,80.0\n3,Fateful Meeting,10.0,30.0\n52,The Last One Standing,1.19,61.880005\n119,Chaotic Disposition,5.0,595.0\n357,The Harvester,1.0,357.0\n5,The Undisputed,5.0,25.0\n72,The Poet,1.0,72.0\n0,Birth of the Three,0.0,0.0\n214,The Explorer,1.0,214.0\n918,The Lover,1.0,918.0\n142,The Body,1.0,142.0\n22,The Tinkerer's Table,1.58,34.760002\n19,The Academic,19.0,361.0\n56,The Golden Era,2.0,112.0\n74,The Wolf's Legacy,1.0,74.0\n28,Unchained,2.0,56.0\n0,Luck of the Vaal,0.0,0.0\n26,Something Dark,7.0,182.0\n175,The Stormcaller,1.0,175.0\n0,The Mad King,0.0,0.0\n35,The Offering,2.0,70.0\n3,The Hook,28.92,86.76\n68,Call to the First Ones,1.17,79.56\n63,Earth Drinker,1.0,63.0\n74,Dialla's Subjugation,2.0,148.0\n84,The Mercenary,1.0,84.0\n8,The Artist,28.0,224.0\n59,The Saint's Treasure,2.0,118.0\n19,Checkmate,2.97,56.43\n25,The Sephirot,130.0,3250.0\n186,The Summoner,1.0,186.0\n2,Void of the Elements,5.0,10.0\n101,The Ruthless Ceinture,1.0,101.0\n121,Acclimatisation,1.89,228.69\n25,The Pact,2.0,50.0\n7,Etched in Blood,4.77,33.39\n753,Destined to Crumble,1.0,753.0\n0,The Transformation,0.0,0.0\n255,Three Voices,1.0,255.0\n71,Atziri's Arsenal,2.0,142.0\n0,The Doctor,3033.0,0.0\n183,Volatile Power,1.0,183.0\n141,The Lich,1.0,141.0\n377,The Scarred Meadow,1.0,377.0\n12,Audacity,1.0,12.0\n23,Mawr Blaidd,5.0,115.0\n71,Emperor of Purity,2.0,142.0\n14,From Bone to Ashes,2.0,28.0\n44,The Magma Crab,2.0,88.0\n45,The Forward Gaze,2.18,98.100006\n16,The Polymath,5.0,80.0\n12,The Bitter Blossom,5.0,60.0\n170,The Survivalist,1.0,170.0\n49,Guardian's Challenge,2.0,98.0\n97,No Traces,1.0,97.0\n44,Immortal Resolve,2.0,88.0\n360,Rats,1.0,360.0\n44,Arrogance of the Vaal,2.98,131.12\n259,Glimmer of Hope,1.0,259.0\n150,Jack in the Box,1.0,150.0\n12,Misery in Darkness,3.0,36.0\n194,The Aesthete,1.0,194.0\n5,The Enforcer,7.0,35.0\n118,Might is Right,1.0,118.0\n192,Mitts,1.0,192.0\n282,The Blazing Fire,1.0,282.0\n37,More is Never Enough,1.99,73.63\n34,The Cursed King,1.0,34.0\n192,The Cartographer,1.12,215.04001\n6,Luminous Trove,45.0,270.0\n3,Perfection,3.28,9.84\n9,Home,20.0,180.0\n367,Lantador's Lost Love,1.0,367.0\n19,The Escape,5.0,95.0\n102,The Fool,2.0,204.0\n93,The Forsaken,1.0,93.0\n207,The Inoculated,2.0,414.0\n67,The Rite of Elements,1.0,67.0\n201,The Standoff,1.0,201.0\n119,The Surveyor,1.0,119.0\n6,The Hale Heart,3.0,18.0\n38,Boon of the First Ones,1.0,38.0\n5,Seven Years Bad Luck,348.8,1744.0\n68,The Fathomless Depths,1.0,68.0\n1,The Old Man,5.0,5.0\n27,The Twilight Moon,2.0,54.0\n16,The Deep Ones,2.0,32.0\n26,The Forgotten Treasure,5.0,130.0\n19,The Mind's Eyes,9.0,171.0\n332,The Witch,1.0,332.0\n46,Anarchy's Price,1.37,63.02\n126,The Wretched,2.0,252.0\n0,Blessing of God,0.0,0.0\n0,Treasures of the Vaal,0.0,0.0\n6,Burning Blood,3.31,19.86\n76,The Beast,1.0,76.0\n14,The Dreamer,3.0,42.0\n171,Last Hope,1.0,171.0\n9,Magnum Opus,20.0,180.0\n31,\"Brush, Paint and Palette\",4.05,125.55\n38,The Ethereal,2.0,76.0\n6,Eternal Bonds,40.0,240.0\n89,The Last Supper,1.0,89.0\n68,The Long Watch,1.0,68.0\n173,The Puzzle,2.0,346.0\n15,The Scout,5.0,75.0\n13,Alluring Bounty,10.0,130.0\n7,Darker Half,50.0,350.0\n33,The Breach,2.0,66.0\n251,Dark Temptation,1.0,251.0\n18,A Stone Perfected,5.0,90.0\n186,Alone in the Darkness,1.0,186.0\n10,Desperate Crusade,5.0,50.0\n44,The Patient,42.0,1848.0\n150,The Twins,1.0,150.0\n526,The Flora's Gift,1.0,526.0\n73,The Wolverine,1.73,126.29\n9,Dementophobia,5.0,45.0\n26,Reckless Ambition,1.47,38.22\n50,The Dark Mage,1.0,50.0\n88,The Dreamland,1.0,88.0\n7,The Enlightened,35.0,245.0\n35,Astral Protection,1.95,68.25\n157,The Mountain,1.0,157.0\n36,The Hunger,2.0,72.0\n64,Triskaidekaphobia,2.0,128.0\n560,The Metalsmith's Gift,1.0,560.0\n7,The Emptiness,3.0,21.0\n27,Hunter's Reward,2.0,54.0\n160,Struck by Lightning,1.0,160.0\n30,Monochrome,15.0,450.0\n34,The Eldritch Decay,4.0,136.0\n7,Desecrated Virtue,116.69,816.83\n34,The Whiteout,2.0,68.0\n91,Hope,1.67,151.97\n26,Silence and Frost,3.0,78.0\n153,The Lion,1.0,153.0\n4,Duality,7.0,28.0\n75,The Innocent,2.0,150.0\n71,The Archmage's Right Hand,2.0,142.0\n100,Scholar of the Seas,1.0,100.0\n226,The Lunaris Priestess,1.0,226.0\n34,The Unexpected Prize,2.0,68.0\n0,The Mayor,0.0,0.0\n4,The Fishmonger,4.59,18.36\n0,Akil's Prophecy,0.0,0.0\n217,The Army of Blood,1.0,217.0\n25,The Darkest Dream,2.0,50.0\n5,The Damned,15.0,75.0\n23,The Offspring,1.41,32.43\n3,Keeper's Corruption,4.0,12.0\n40,Parasitic Passengers,2.0,80.0\n19,Lucky Deck,2.0,38.0\n173,Boundless Realms,1.0,173.0\n61,The Lord in Black,2.0,122.0\n0,Squandered Prosperity,0.0,0.0\n144,Sambodhi's Vow,2.0,288.0\n80,Gift of the Gemling Queen,1.0,80.0\n4,The Price of Loyalty,100.0,400.0\n11,The Samurai's Eye,55.0,605.0\n4,The Destination,20.0,80.0\n175,The Risk,3.0,525.0\n11,The Long Con,8.0,88.0\n27,The Obscured,1.0,27.0\n5,Brother's Stash,55.5,277.5\n413,The Carrion Crow,1.0,413.0\n58,The Messenger,1.24,71.92\n12,The Nurse,363.96,4367.52\n25,Endless Night,2.0,50.0\n420,The Doppelganger,1.0,420.0\n79,Underground Forest,4.0,316.0\n80,Prejudice,2.0,160.0\n2,The Cheater,251.19,502.38\n89,The Coming Storm,1.0,89.0\n225,Hunter's Resolve,1.0,225.0\n13,The Price of Prescience,4.58,59.54\n101,The Feast,1.0,101.0\n62,The Price of Protection,2.0,124.0\n76,Lysah's Respite,1.0,76.0\n52,The Undaunted,3.0,156.0\n4,Deadly Joy,44.14,176.56\n18,Judging Voices,6.0,108.0\n96,The Dapper Prodigy,2.0,192.0\n2,The Hive of Knowledge,5.0,10.0\n4,Broken Promises,30.0,120.0\n25,The Tyrant,2.0,50.0\n196,Thirst for Knowledge,1.0,196.0\n44,The Warlord,2.0,88.0\n243,Lost Worlds,1.0,243.0\n6,The Celestial Stone,4.19,25.14\n29,Costly Curio,4.0,116.0\n12,The Shortcut,5.0,60.0\n13,The Brittle Emperor,2.0,26.0\n49,The Master,1.0,49.0\n157,The Gambler,1.0,157.0\n14,The Prince of Darkness,3.0,42.0\n34,Justified Ambition,5.65,192.1\n",
+ "filename": "krolya_input.csv",
+ "href": "blob:http://localhost:5173/79f4d016-a174-457d-b0a1-05645692dd92"
+ },
+ "error": null,
+ "price": 44074.2578125,
+ "records": [
+ {
+ "calculated": 5,
+ "name": "The Progeny of Lunaris",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 25
+ },
+ { "calculated": 1, "name": "The Scarred Meadow", "realWeight": 17419.63671875, "stackSize": 377, "total": 377 },
+ { "calculated": 0, "name": "The Transformation", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 1.7100000381469727,
+ "name": "The Breach",
+ "realWeight": 451.12615966796875,
+ "stackSize": 33,
+ "total": 56.43000030517578
+ },
+ { "calculated": 1, "name": "Lost Worlds", "realWeight": 9014.3935546875, "stackSize": 243, "total": 243 },
+ { "calculated": 1, "name": "Lucky Connections", "realWeight": 6630.1728515625, "stackSize": 198, "total": 198 },
+ { "calculated": 1, "name": "The Last Supper", "realWeight": 1998.076416015625, "stackSize": 89, "total": 89 },
+ { "calculated": 1, "name": "The Offering", "realWeight": 492.7528381347656, "stackSize": 35, "total": 35 },
+ { "calculated": 5, "name": "The Rabbit's Foot", "realWeight": 26.606155395507812, "stackSize": 5, "total": 25 },
+ { "calculated": 1, "name": "The Surgeon", "realWeight": 4503.64599609375, "stackSize": 153, "total": 153 },
+ {
+ "calculated": 3.380000114440918,
+ "name": "Lethean Temptation",
+ "realWeight": 64.25262451171875,
+ "stackSize": 9,
+ "total": 30.420001983642578
+ },
+ { "calculated": 5, "name": "The Eye of Terror", "realWeight": 26.606155395507812, "stackSize": 5, "total": 25 },
+ {
+ "calculated": 82.4800033569336,
+ "name": "The One That Got Away",
+ "realWeight": 2.3797266483306885,
+ "stackSize": 1,
+ "total": 82.4800033569336
+ },
+ { "calculated": 0, "name": "Birth of the Three", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 1,
+ "name": "Society's Remorse",
+ "realWeight": 3325.769287109375,
+ "stackSize": 125,
+ "total": 125
+ },
+ { "calculated": 2695.5, "name": "The Doctor", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 140,
+ "name": "Succor of the Sinless",
+ "realWeight": 19.037813186645508,
+ "stackSize": 4,
+ "total": 560
+ },
+ {
+ "calculated": 1.4500000476837158,
+ "name": "The Lord in Black",
+ "realWeight": 1133.7618408203125,
+ "stackSize": 61,
+ "total": 88.45000457763672
+ },
+ { "calculated": 1, "name": "The Skeleton", "realWeight": 4816.228515625, "stackSize": 160, "total": 160 },
+ { "calculated": 1, "name": "Turn the Other Cheek", "realWeight": 8847.9765625, "stackSize": 240, "total": 240 },
+ {
+ "calculated": 1,
+ "name": "The Lunaris Priestess",
+ "realWeight": 8085.18115234375,
+ "stackSize": 226,
+ "total": 226
+ },
+ { "calculated": 1, "name": "The Admirer", "realWeight": 1576.6942138671875, "stackSize": 76, "total": 76 },
+ { "calculated": 1, "name": "No Traces", "realWeight": 2273.446044921875, "stackSize": 97, "total": 97 },
+ {
+ "calculated": 5.559999942779541,
+ "name": "The Greatest Intentions",
+ "realWeight": 0,
+ "stackSize": 0,
+ "total": 0
+ },
+ {
+ "calculated": 1.7300000190734863,
+ "name": "The Undisputed",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 8.649999618530273
+ },
+ { "calculated": 4, "name": "Burning Blood", "realWeight": 34.974693298339844, "stackSize": 6, "total": 24 },
+ {
+ "calculated": 2.75,
+ "name": "Lachrymal Necrosis",
+ "realWeight": 451.12615966796875,
+ "stackSize": 33,
+ "total": 90.75
+ },
+ { "calculated": 1, "name": "The Mountain", "realWeight": 4681.40869140625, "stackSize": 157, "total": 157 },
+ {
+ "calculated": 6.289999961853027,
+ "name": "The Fishmonger",
+ "realWeight": 19.037813186645508,
+ "stackSize": 4,
+ "total": 25.15999984741211
+ },
+ { "calculated": 33, "name": "The Patient", "realWeight": 694.5541381835938, "stackSize": 44, "total": 1452 },
+ { "calculated": 2, "name": "The Whiteout", "realWeight": 471.78643798828125, "stackSize": 34, "total": 68 },
+ { "calculated": 3, "name": "Silence and Frost", "realWeight": 315.4911193847656, "stackSize": 26, "total": 78 },
+ {
+ "calculated": 1.399999976158142,
+ "name": "The Brittle Emperor",
+ "realWeight": 111.54295349121094,
+ "stackSize": 13,
+ "total": 18.19999885559082
+ },
+ { "calculated": 1, "name": "Might is Right", "realWeight": 3050.35302734375, "stackSize": 118, "total": 118 },
+ { "calculated": 2, "name": "Haunting Shadows", "realWeight": 297.4658203125, "stackSize": 25, "total": 50 },
+ {
+ "calculated": 3.5999999046325684,
+ "name": "The Shepherd's Sandals",
+ "realWeight": 197.08677673339844,
+ "stackSize": 19,
+ "total": 68.4000015258789
+ },
+ { "calculated": 1, "name": "Tranquillity", "realWeight": 1607.915283203125, "stackSize": 77, "total": 77 },
+ { "calculated": 1, "name": "The Gemcutter", "realWeight": 19900.91015625, "stackSize": 412, "total": 412 },
+ {
+ "calculated": 4,
+ "name": "The Eldritch Decay",
+ "realWeight": 471.78643798828125,
+ "stackSize": 34,
+ "total": 136
+ },
+ {
+ "calculated": 4.619999885559082,
+ "name": "Mawr Blaidd",
+ "realWeight": 262.4936828613281,
+ "stackSize": 23,
+ "total": 106.25999450683594
+ },
+ {
+ "calculated": 1,
+ "name": "The Adventuring Spirit",
+ "realWeight": 7765.35107421875,
+ "stackSize": 220,
+ "total": 220
+ },
+ { "calculated": 5, "name": "The Escape", "realWeight": 197.08677673339844, "stackSize": 19, "total": 95 },
+ {
+ "calculated": 5,
+ "name": "Chaotic Disposition",
+ "realWeight": 3089.210693359375,
+ "stackSize": 119,
+ "total": 595
+ },
+ {
+ "calculated": 1.5800000429153442,
+ "name": "Parasitic Passengers",
+ "realWeight": 602.028564453125,
+ "stackSize": 40,
+ "total": 63.20000076293945
+ },
+ { "calculated": 2, "name": "The King's Heart", "realWeight": 371.64141845703125, "stackSize": 29, "total": 58 },
+ {
+ "calculated": 1.1100000143051147,
+ "name": "The Wolven King's Bite",
+ "realWeight": 602.028564453125,
+ "stackSize": 40,
+ "total": 44.400001525878906
+ },
+ {
+ "calculated": 30.709999084472656,
+ "name": "Eternal Bonds",
+ "realWeight": 34.974693298339844,
+ "stackSize": 6,
+ "total": 184.25999450683594
+ },
+ { "calculated": 1, "name": "The Inventor", "realWeight": 5509.14453125, "stackSize": 175, "total": 175 },
+ {
+ "calculated": 3,
+ "name": "The Celestial Stone",
+ "realWeight": 34.974693298339844,
+ "stackSize": 6,
+ "total": 18
+ },
+ { "calculated": 1, "name": "Grave Knowledge", "realWeight": 3285.93994140625, "stackSize": 124, "total": 124 },
+ {
+ "calculated": 7.360000133514404,
+ "name": "Dying Light",
+ "realWeight": 19.037813186645508,
+ "stackSize": 4,
+ "total": 29.440000534057617
+ },
+ { "calculated": 1, "name": "Disdain", "realWeight": 352.5852355957031, "stackSize": 28, "total": 28 },
+ { "calculated": 1, "name": "Forbidden Power", "realWeight": 1964.4957275390625, "stackSize": 88, "total": 88 },
+ { "calculated": 2, "name": "Death", "realWeight": 1363.95703125, "stackSize": 69, "total": 138 },
+ {
+ "calculated": 2,
+ "name": "Misery in Darkness",
+ "realWeight": 98.92337036132812,
+ "stackSize": 12,
+ "total": 24
+ },
+ { "calculated": 1, "name": "The Blazing Fire", "realWeight": 11269.3984375, "stackSize": 282, "total": 282 },
+ {
+ "calculated": 5.980000019073486,
+ "name": "The Hive of Knowledge",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 11.960000038146973
+ },
+ { "calculated": 1, "name": "The Messenger", "realWeight": 1051.16064453125, "stackSize": 58, "total": 58 },
+ { "calculated": 1, "name": "The Wolf", "realWeight": 5274.732421875, "stackSize": 170, "total": 170 },
+ { "calculated": 0, "name": "Friendship", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 0, "name": "Squandered Prosperity", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 1,
+ "name": "Cartographer's Delight",
+ "realWeight": 4547.87109375,
+ "stackSize": 154,
+ "total": 154
+ },
+ { "calculated": 1, "name": "Broken Truce", "realWeight": 1305.08642578125, "stackSize": 67, "total": 67 },
+ { "calculated": 1, "name": "The Beast", "realWeight": 1576.6942138671875, "stackSize": 76, "total": 76 },
+ { "calculated": 3, "name": "The Hale Heart", "realWeight": 34.974693298339844, "stackSize": 6, "total": 18 },
+ { "calculated": 1, "name": "The Dreamland", "realWeight": 1964.4957275390625, "stackSize": 88, "total": 88 },
+ { "calculated": 1, "name": "The Doppelganger", "realWeight": 20483.353515625, "stackSize": 420, "total": 420 },
+ { "calculated": 1, "name": "The Twins", "realWeight": 4371.8369140625, "stackSize": 150, "total": 150 },
+ {
+ "calculated": 5,
+ "name": "Rebirth and Renewal",
+ "realWeight": 86.81926727294922,
+ "stackSize": 11,
+ "total": 55
+ },
+ { "calculated": 1, "name": "The Dark Mage", "realWeight": 841.3604125976562, "stackSize": 50, "total": 50 },
+ { "calculated": 299.5, "name": "The Nurse", "realWeight": 98.92337036132812, "stackSize": 12, "total": 3594 },
+ { "calculated": 1, "name": "The Warden", "realWeight": 9690.3017578125, "stackSize": 255, "total": 255 },
+ { "calculated": 1, "name": "The Body", "realWeight": 4026.795654296875, "stackSize": 142, "total": 142 },
+ {
+ "calculated": 5,
+ "name": "The Price of Prescience",
+ "realWeight": 111.54295349121094,
+ "stackSize": 13,
+ "total": 65
+ },
+ {
+ "calculated": 1.809999942779541,
+ "name": "Deathly Designs",
+ "realWeight": 391.0290222167969,
+ "stackSize": 30,
+ "total": 54.29999923706055
+ },
+ { "calculated": 0, "name": "The Iron Bard", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 1, "name": "The Tyrant", "realWeight": 297.4658203125, "stackSize": 25, "total": 25 },
+ {
+ "calculated": 1,
+ "name": "The Eye of the Dragon",
+ "realWeight": 3365.75830078125,
+ "stackSize": 126,
+ "total": 126
+ },
+ { "calculated": 1, "name": "The Stormcaller", "realWeight": 5509.14453125, "stackSize": 175, "total": 175 },
+ { "calculated": 1, "name": "Rain Tempter", "realWeight": 11030.4755859375, "stackSize": 278, "total": 278 },
+ { "calculated": 3, "name": "The Cartographer", "realWeight": 6331.095703125, "stackSize": 192, "total": 576 },
+ {
+ "calculated": 58.56999969482422,
+ "name": "The Dragon's Heart",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 292.8500061035156
+ },
+ {
+ "calculated": 1,
+ "name": "The Tireless Extractor",
+ "realWeight": 10675.30859375,
+ "stackSize": 272,
+ "total": 272
+ },
+ { "calculated": 1, "name": "The Calling", "realWeight": 3774.29150390625, "stackSize": 136, "total": 136 },
+ { "calculated": 0, "name": "Blessing of God", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 1.7400000095367432,
+ "name": "The Obscured",
+ "realWeight": 333.86639404296875,
+ "stackSize": 27,
+ "total": 46.97999954223633
+ },
+ { "calculated": 2, "name": "Sambodhi's Wisdom", "realWeight": 766.7855224609375, "stackSize": 47, "total": 94 },
+ { "calculated": 0, "name": "The Devastator", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 1, "name": "Boundless Realms", "realWeight": 5414.97216796875, "stackSize": 173, "total": 173 },
+ { "calculated": 1, "name": "The Gambler", "realWeight": 4681.40869140625, "stackSize": 157, "total": 157 },
+ { "calculated": 2, "name": "The Magma Crab", "realWeight": 694.5541381835938, "stackSize": 44, "total": 88 },
+ { "calculated": 1, "name": "The Visionary", "realWeight": 8682.595703125, "stackSize": 237, "total": 237 },
+ { "calculated": 0, "name": "The Mayor", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 4.619999885559082,
+ "name": "Audacity",
+ "realWeight": 98.92337036132812,
+ "stackSize": 12,
+ "total": 55.439998626708984
+ },
+ { "calculated": 1, "name": "The Tower", "realWeight": 5891.19921875, "stackSize": 183, "total": 183 },
+ {
+ "calculated": 1,
+ "name": "A Mother's Parting Gift",
+ "realWeight": 2238.38037109375,
+ "stackSize": 96,
+ "total": 96
+ },
+ {
+ "calculated": 10,
+ "name": "Altered Perception",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 50
+ },
+ { "calculated": 30, "name": "Broken Promises", "realWeight": 19.037813186645508, "stackSize": 4, "total": 120 },
+ { "calculated": 1, "name": "Rats", "realWeight": 16254.7705078125, "stackSize": 360, "total": 360 },
+ { "calculated": 1, "name": "Scholar of the Seas", "realWeight": 2379.7265625, "stackSize": 100, "total": 100 },
+ {
+ "calculated": 2.9200000762939453,
+ "name": "Hunter's Reward",
+ "realWeight": 333.86639404296875,
+ "stackSize": 27,
+ "total": 78.84000396728516
+ },
+ {
+ "calculated": 2.930000066757202,
+ "name": "Rebirth",
+ "realWeight": 64.25262451171875,
+ "stackSize": 9,
+ "total": 26.3700008392334
+ },
+ {
+ "calculated": 1,
+ "name": "The Price of Protection",
+ "realWeight": 1161.755126953125,
+ "stackSize": 62,
+ "total": 62
+ },
+ { "calculated": 1, "name": "Boon of Justice", "realWeight": 8354.97265625, "stackSize": 231, "total": 231 },
+ { "calculated": 1, "name": "The Summoner", "realWeight": 6036.65771484375, "stackSize": 186, "total": 186 },
+ { "calculated": 1, "name": "The Warlord", "realWeight": 694.5541381835938, "stackSize": 44, "total": 44 },
+ { "calculated": 1, "name": "Reckless Ambition", "realWeight": 315.4911193847656, "stackSize": 26, "total": 26 },
+ { "calculated": 1, "name": "The Wolf's Legacy", "realWeight": 1514.867431640625, "stackSize": 74, "total": 74 },
+ { "calculated": 20, "name": "The Artist", "realWeight": 53.84706497192383, "stackSize": 8, "total": 160 },
+ { "calculated": 1, "name": "The Gentleman", "realWeight": 1189.9752197265625, "stackSize": 63, "total": 63 },
+ { "calculated": 1, "name": "A Sea of Blue", "realWeight": 7712.4658203125, "stackSize": 219, "total": 219 },
+ { "calculated": 29, "name": "The Strategist", "realWeight": 12.365421295166016, "stackSize": 3, "total": 87 },
+ { "calculated": 1, "name": "The Lover", "realWeight": 66189.8046875, "stackSize": 918, "total": 918 },
+ {
+ "calculated": 5,
+ "name": "A Stone Perfected",
+ "realWeight": 181.73385620117188,
+ "stackSize": 18,
+ "total": 90
+ },
+ {
+ "calculated": 110,
+ "name": "Doryani's Epiphany",
+ "realWeight": 152.30250549316406,
+ "stackSize": 16,
+ "total": 1760
+ },
+ { "calculated": 20, "name": "The Destination", "realWeight": 19.037813186645508, "stackSize": 4, "total": 80 },
+ { "calculated": 4, "name": "Checkmate", "realWeight": 197.08677673339844, "stackSize": 19, "total": 76 },
+ { "calculated": 5, "name": "Azyran's Reward", "realWeight": 410.74249267578125, "stackSize": 31, "total": 155 },
+ {
+ "calculated": 2.130000114440918,
+ "name": "Etched in Blood",
+ "realWeight": 44.07315444946289,
+ "stackSize": 7,
+ "total": 14.910000801086426
+ },
+ {
+ "calculated": 6.199999809265137,
+ "name": "The Eternal War",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 31
+ },
+ {
+ "calculated": 4.840000152587891,
+ "name": "The Emptiness",
+ "realWeight": 44.07315444946289,
+ "stackSize": 7,
+ "total": 33.880001068115234
+ },
+ { "calculated": 2, "name": "The Soul", "realWeight": 297.4658203125, "stackSize": 25, "total": 50 },
+ { "calculated": 2, "name": "The Wretched", "realWeight": 3365.75830078125, "stackSize": 126, "total": 252 },
+ {
+ "calculated": 1,
+ "name": "The Arena Champion",
+ "realWeight": 11935.1669921875,
+ "stackSize": 293,
+ "total": 293
+ },
+ { "calculated": 40, "name": "The Enlightened", "realWeight": 44.07315444946289, "stackSize": 7, "total": 280 },
+ { "calculated": 1, "name": "The Siren", "realWeight": 410.74249267578125, "stackSize": 31, "total": 31 },
+ {
+ "calculated": 0.9700000286102295,
+ "name": "The King's Blade",
+ "realWeight": 41640.59765625,
+ "stackSize": 674,
+ "total": 653.780029296875
+ },
+ { "calculated": 5, "name": "Costly Curio", "realWeight": 371.64141845703125, "stackSize": 29, "total": 145 },
+ {
+ "calculated": 1.4500000476837158,
+ "name": "From Bone to Ashes",
+ "realWeight": 124.65770721435547,
+ "stackSize": 14,
+ "total": 20.30000114440918
+ },
+ {
+ "calculated": 2.9600000381469727,
+ "name": "The Celestial Justicar",
+ "realWeight": 602.028564453125,
+ "stackSize": 40,
+ "total": 118.4000015258789
+ },
+ {
+ "calculated": 2,
+ "name": "Baited Expectations",
+ "realWeight": 315.4911193847656,
+ "stackSize": 26,
+ "total": 52
+ },
+ { "calculated": 15, "name": "The Astromancer", "realWeight": 2.3797266483306885, "stackSize": 1, "total": 15 },
+ {
+ "calculated": 3.0199999809265137,
+ "name": "The Forgotten Treasure",
+ "realWeight": 315.4911193847656,
+ "stackSize": 26,
+ "total": 78.5199966430664
+ },
+ { "calculated": 2, "name": "Heterochromia", "realWeight": 1363.95703125, "stackSize": 69, "total": 138 },
+ {
+ "calculated": 3.2300000190734863,
+ "name": "A Dab of Ink",
+ "realWeight": 451.12615966796875,
+ "stackSize": 33,
+ "total": 106.59000396728516
+ },
+ { "calculated": 1, "name": "The Garish Power", "realWeight": 4771.146484375, "stackSize": 159, "total": 159 },
+ { "calculated": 1, "name": "The Journey", "realWeight": 694.5541381835938, "stackSize": 44, "total": 44 },
+ { "calculated": 8, "name": "The Polymath", "realWeight": 152.30250549316406, "stackSize": 16, "total": 128 },
+ {
+ "calculated": 8.359999656677246,
+ "name": "A Modest Request",
+ "realWeight": 152.30250549316406,
+ "stackSize": 16,
+ "total": 133.75999450683594
+ },
+ {
+ "calculated": 114.04000091552734,
+ "name": "The Price of Loyalty",
+ "realWeight": 19.037813186645508,
+ "stackSize": 4,
+ "total": 456.1600036621094
+ },
+ {
+ "calculated": 1.2999999523162842,
+ "name": "The Conduit",
+ "realWeight": 624.7451782226562,
+ "stackSize": 41,
+ "total": 53.29999923706055
+ },
+ {
+ "calculated": 3,
+ "name": "The Dungeon Master",
+ "realWeight": 352.5852355957031,
+ "stackSize": 28,
+ "total": 84
+ },
+ {
+ "calculated": 5.039999961853027,
+ "name": "Duality",
+ "realWeight": 19.037813186645508,
+ "stackSize": 4,
+ "total": 20.15999984741211
+ },
+ { "calculated": 1, "name": "The Fox", "realWeight": 1702.7939453125, "stackSize": 80, "total": 80 },
+ { "calculated": 1, "name": "The Innocent", "realWeight": 1545.677734375, "stackSize": 75, "total": 75 },
+ {
+ "calculated": 1.3899999856948853,
+ "name": "The Ethereal",
+ "realWeight": 557.445556640625,
+ "stackSize": 38,
+ "total": 52.81999969482422
+ },
+ {
+ "calculated": 3,
+ "name": "The Prince of Darkness",
+ "realWeight": 124.65770721435547,
+ "stackSize": 14,
+ "total": 42
+ },
+ {
+ "calculated": 1.090000033378601,
+ "name": "The Craving",
+ "realWeight": 333.86639404296875,
+ "stackSize": 27,
+ "total": 29.43000030517578
+ },
+ { "calculated": 1, "name": "The Dragon", "realWeight": 6232.43017578125, "stackSize": 190, "total": 190 },
+ { "calculated": 1, "name": "The Coming Storm", "realWeight": 1998.076416015625, "stackSize": 89, "total": 89 },
+ {
+ "calculated": 1,
+ "name": "The Last One Standing",
+ "realWeight": 892.3436279296875,
+ "stackSize": 52,
+ "total": 52
+ },
+ { "calculated": 5, "name": "Desperate Crusade", "realWeight": 75.25357055664062, "stackSize": 10, "total": 50 },
+ { "calculated": 1, "name": "The Valkyrie", "realWeight": 3405.90576171875, "stackSize": 127, "total": 127 },
+ { "calculated": 1, "name": "The Watcher", "realWeight": 3167.416015625, "stackSize": 121, "total": 121 },
+ { "calculated": 1, "name": "The Witch", "realWeight": 14395.7451171875, "stackSize": 332, "total": 332 },
+ { "calculated": 1, "name": "Vinia's Token", "realWeight": 11209.5078125, "stackSize": 281, "total": 281 },
+ { "calculated": 1, "name": "Lucky Deck", "realWeight": 197.08677673339844, "stackSize": 19, "total": 19 },
+ { "calculated": 0, "name": "Vile Power", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 3, "name": "The Heroic Shot", "realWeight": 1218.4200439453125, "stackSize": 64, "total": 192 },
+ {
+ "calculated": 1,
+ "name": "The Sword King's Salute",
+ "realWeight": 14136.3701171875,
+ "stackSize": 328,
+ "total": 328
+ },
+ {
+ "calculated": 1,
+ "name": "The Wolf's Shadow",
+ "realWeight": 4284.69189453125,
+ "stackSize": 148,
+ "total": 148
+ },
+ {
+ "calculated": 1.9299999475479126,
+ "name": "Triskaidekaphobia",
+ "realWeight": 1218.4200439453125,
+ "stackSize": 64,
+ "total": 123.5199966430664
+ },
+ { "calculated": 20, "name": "Home", "realWeight": 64.25262451171875, "stackSize": 9, "total": 180 },
+ { "calculated": 1, "name": "Blind Venture", "realWeight": 2708.113037109375, "stackSize": 109, "total": 109 },
+ { "calculated": 1, "name": "Prejudice", "realWeight": 1702.7939453125, "stackSize": 80, "total": 80 },
+ {
+ "calculated": 2,
+ "name": "Emperor of Purity",
+ "realWeight": 1423.687255859375,
+ "stackSize": 71,
+ "total": 142
+ },
+ { "calculated": 1, "name": "Lysah's Respite", "realWeight": 1576.6942138671875, "stackSize": 76, "total": 76 },
+ {
+ "calculated": 4.150000095367432,
+ "name": "The Bargain",
+ "realWeight": 229.01080322265625,
+ "stackSize": 21,
+ "total": 87.1500015258789
+ },
+ { "calculated": 1, "name": "Immortal Resolve", "realWeight": 694.5541381835938, "stackSize": 44, "total": 44 },
+ { "calculated": 898.5, "name": "Love Through Ice", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 1, "name": "Glimmer of Hope", "realWeight": 9919.201171875, "stackSize": 259, "total": 259 },
+ {
+ "calculated": 1.0499999523162842,
+ "name": "More is Never Enough",
+ "realWeight": 535.5864868164062,
+ "stackSize": 37,
+ "total": 38.849998474121094
+ },
+ {
+ "calculated": 2,
+ "name": "The Archmage's Right Hand",
+ "realWeight": 1423.687255859375,
+ "stackSize": 71,
+ "total": 142
+ },
+ {
+ "calculated": 1,
+ "name": "The Fathomless Depths",
+ "realWeight": 1334.41357421875,
+ "stackSize": 68,
+ "total": 68
+ },
+ { "calculated": 1, "name": "The Forsaken", "realWeight": 2134.28076171875, "stackSize": 93, "total": 93 },
+ { "calculated": 10, "name": "Monochrome", "realWeight": 391.0290222167969, "stackSize": 30, "total": 300 },
+ { "calculated": 1, "name": "The Harvester", "realWeight": 16052.0078125, "stackSize": 357, "total": 357 },
+ {
+ "calculated": 1,
+ "name": "The Master Artisan",
+ "realWeight": 7345.66064453125,
+ "stackSize": 212,
+ "total": 212
+ },
+ { "calculated": 1, "name": "The Opulent", "realWeight": 11752.33203125, "stackSize": 290, "total": 290 },
+ {
+ "calculated": 1.409999966621399,
+ "name": "The Road to Power",
+ "realWeight": 152.30250549316406,
+ "stackSize": 16,
+ "total": 22.559999465942383
+ },
+ { "calculated": 3, "name": "The Catch", "realWeight": 34.974693298339844, "stackSize": 6, "total": 18 },
+ { "calculated": 1, "name": "Cameria's Cut", "realWeight": 694.5541381835938, "stackSize": 44, "total": 44 },
+ { "calculated": 9, "name": "The Scout", "realWeight": 138.2496337890625, "stackSize": 15, "total": 135 },
+ { "calculated": 1, "name": "Hunter's Resolve", "realWeight": 8031.578125, "stackSize": 225, "total": 225 },
+ {
+ "calculated": 4.650000095367432,
+ "name": "Chasing Risk",
+ "realWeight": 297.4658203125,
+ "stackSize": 25,
+ "total": 116.25
+ },
+ {
+ "calculated": 956.0800170898438,
+ "name": "The Shieldbearer",
+ "realWeight": 12.365421295166016,
+ "stackSize": 3,
+ "total": 2868.239990234375
+ },
+ { "calculated": 1, "name": "The Standoff", "realWeight": 6781.4287109375, "stackSize": 201, "total": 201 },
+ {
+ "calculated": 7.949999809265137,
+ "name": "The Vast",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 15.899999618530273
+ },
+ { "calculated": 1, "name": "The Explorer", "realWeight": 7449.853515625, "stackSize": 214, "total": 214 },
+ {
+ "calculated": 2,
+ "name": "The Saint's Treasure",
+ "realWeight": 1078.462646484375,
+ "stackSize": 59,
+ "total": 118
+ },
+ {
+ "calculated": 6.449999809265137,
+ "name": "A Familiar Call",
+ "realWeight": 2.3797266483306885,
+ "stackSize": 1,
+ "total": 6.449999809265137
+ },
+ {
+ "calculated": 9.779999732971191,
+ "name": "The Chosen",
+ "realWeight": 229.01080322265625,
+ "stackSize": 21,
+ "total": 205.37998962402344
+ },
+ {
+ "calculated": 1.090000033378601,
+ "name": "The Unexpected Prize",
+ "realWeight": 471.78643798828125,
+ "stackSize": 34,
+ "total": 37.060001373291016
+ },
+ { "calculated": 4, "name": "The Seeker", "realWeight": 371.64141845703125, "stackSize": 29, "total": 116 },
+ { "calculated": 1, "name": "The Wind", "realWeight": 410.74249267578125, "stackSize": 31, "total": 31 },
+ {
+ "calculated": 1,
+ "name": "Three Faces in the Dark",
+ "realWeight": 22414.517578125,
+ "stackSize": 446,
+ "total": 446
+ },
+ {
+ "calculated": 4.440000057220459,
+ "name": "Underground Forest",
+ "realWeight": 1670.966552734375,
+ "stackSize": 79,
+ "total": 350.760009765625
+ },
+ {
+ "calculated": 0.41999998688697815,
+ "name": "Imperial Legacy",
+ "realWeight": 10440.69140625,
+ "stackSize": 268,
+ "total": 112.55999755859375
+ },
+ {
+ "calculated": 1,
+ "name": "Lingering Remnants",
+ "realWeight": 1734.8209228515625,
+ "stackSize": 81,
+ "total": 81
+ },
+ { "calculated": 1, "name": "Mitts", "realWeight": 6331.095703125, "stackSize": 192, "total": 192 },
+ { "calculated": 1, "name": "Left to Fate", "realWeight": 2670.93115234375, "stackSize": 108, "total": 108 },
+ {
+ "calculated": 359.3999938964844,
+ "name": "Seven Years Bad Luck",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 1797
+ },
+ {
+ "calculated": 1,
+ "name": "The Spoiled Prince",
+ "realWeight": 410.74249267578125,
+ "stackSize": 31,
+ "total": 31
+ },
+ { "calculated": 1, "name": "The Poet", "realWeight": 1453.870849609375, "stackSize": 72, "total": 72 },
+ {
+ "calculated": 4,
+ "name": "Brotherhood in Exile",
+ "realWeight": 212.8492431640625,
+ "stackSize": 20,
+ "total": 80
+ },
+ {
+ "calculated": 5,
+ "name": "The Thaumaturgist",
+ "realWeight": 166.80169677734375,
+ "stackSize": 17,
+ "total": 85
+ },
+ { "calculated": 1, "name": "The Golden Era", "realWeight": 997.2616577148438, "stackSize": 56, "total": 56 },
+ { "calculated": 1, "name": "The Deceiver", "realWeight": 1702.7939453125, "stackSize": 80, "total": 80 },
+ {
+ "calculated": 0.7300000190734863,
+ "name": "Lantador's Lost Love",
+ "realWeight": 16731.1640625,
+ "stackSize": 367,
+ "total": 267.9100036621094
+ },
+ { "calculated": 1, "name": "The Fletcher", "realWeight": 1702.7939453125, "stackSize": 80, "total": 80 },
+ {
+ "calculated": 5,
+ "name": "Keeper's Corruption",
+ "realWeight": 12.365421295166016,
+ "stackSize": 3,
+ "total": 15
+ },
+ { "calculated": 5, "name": "The Shortcut", "realWeight": 98.92337036132812, "stackSize": 12, "total": 60 },
+ { "calculated": 30, "name": "Deadly Joy", "realWeight": 19.037813186645508, "stackSize": 4, "total": 120 },
+ { "calculated": 1, "name": "Doedre's Madness", "realWeight": 11996.3212890625, "stackSize": 294, "total": 294 },
+ { "calculated": 7, "name": "Something Dark", "realWeight": 315.4911193847656, "stackSize": 26, "total": 182 },
+ {
+ "calculated": 1.6699999570846558,
+ "name": "Sambodhi's Vow",
+ "realWeight": 4112.16796875,
+ "stackSize": 144,
+ "total": 240.47999572753906
+ },
+ { "calculated": 5, "name": "Abandoned Wealth", "realWeight": 430.7765197753906, "stackSize": 32, "total": 160 },
+ {
+ "calculated": 1,
+ "name": "The Army of Blood",
+ "realWeight": 7607.05712890625,
+ "stackSize": 217,
+ "total": 217
+ },
+ { "calculated": 1, "name": "The Formless Sea", "realWeight": 2065.804443359375, "stackSize": 91, "total": 91 },
+ { "calculated": 5, "name": "Bijoux", "realWeight": 152.30250549316406, "stackSize": 16, "total": 80 },
+ { "calculated": 1, "name": "Jack in the Box", "realWeight": 4371.8369140625, "stackSize": 150, "total": 150 },
+ { "calculated": 10482.490234375, "name": "The Apothecary", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 1, "name": "The Carrion Crow", "realWeight": 19973.40625, "stackSize": 413, "total": 413 },
+ {
+ "calculated": 2.180000066757202,
+ "name": "The Deep Ones",
+ "realWeight": 152.30250549316406,
+ "stackSize": 16,
+ "total": 34.880001068115234
+ },
+ { "calculated": 35, "name": "The Hook", "realWeight": 12.365421295166016, "stackSize": 3, "total": 105 },
+ {
+ "calculated": 1,
+ "name": "The Jeweller's Boon",
+ "realWeight": 3167.416015625,
+ "stackSize": 121,
+ "total": 121
+ },
+ {
+ "calculated": 1.7400000095367432,
+ "name": "The Primordial",
+ "realWeight": 816.2462158203125,
+ "stackSize": 49,
+ "total": 85.26000213623047
+ },
+ { "calculated": 5, "name": "Judging Voices", "realWeight": 181.73385620117188, "stackSize": 18, "total": 90 },
+ { "calculated": 1, "name": "The Sun", "realWeight": 11510.021484375, "stackSize": 286, "total": 286 },
+ { "calculated": 1, "name": "Three Voices", "realWeight": 9690.3017578125, "stackSize": 255, "total": 255 },
+ {
+ "calculated": 1,
+ "name": "Dialla's Subjugation",
+ "realWeight": 1514.867431640625,
+ "stackSize": 74,
+ "total": 74
+ },
+ {
+ "calculated": 3,
+ "name": "The Bitter Blossom",
+ "realWeight": 98.92337036132812,
+ "stackSize": 12,
+ "total": 36
+ },
+ { "calculated": 1, "name": "Demigod's Wager", "realWeight": 718.3661499023438, "stackSize": 45, "total": 45 },
+ { "calculated": 1, "name": "Humility", "realWeight": 10911.65625, "stackSize": 276, "total": 276 },
+ {
+ "calculated": 2,
+ "name": "The Blessing of Moosh",
+ "realWeight": 2379.7265625,
+ "stackSize": 100,
+ "total": 200
+ },
+ { "calculated": 4, "name": "Perfection", "realWeight": 12.365421295166016, "stackSize": 3, "total": 12 },
+ {
+ "calculated": 3.109999895095825,
+ "name": "The Avenger",
+ "realWeight": 181.73385620117188,
+ "stackSize": 18,
+ "total": 55.97999954223633
+ },
+ {
+ "calculated": 0.9599999785423279,
+ "name": "The Chains that Bind",
+ "realWeight": 8518.259765625,
+ "stackSize": 234,
+ "total": 224.63999938964844
+ },
+ { "calculated": 1, "name": "The Deal", "realWeight": 997.2616577148438, "stackSize": 56, "total": 56 },
+ {
+ "calculated": 1347.75,
+ "name": "The Immortal",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 6738.75
+ },
+ { "calculated": 1, "name": "The Cache", "realWeight": 6580.00830078125, "stackSize": 197, "total": 197 },
+ {
+ "calculated": 0.36000001430511475,
+ "name": "Further Invention",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 0.7200000286102295
+ },
+ { "calculated": 1, "name": "The Rabid Rhoa", "realWeight": 5043.744140625, "stackSize": 165, "total": 165 },
+ {
+ "calculated": 3.390000104904175,
+ "name": "Prometheus' Armoury",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 6.78000020980835
+ },
+ {
+ "calculated": 5.989999771118164,
+ "name": "Remembrance",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 29.94999885559082
+ },
+ { "calculated": 1, "name": "The Penitent", "realWeight": 5414.97216796875, "stackSize": 173, "total": 173 },
+ { "calculated": 1, "name": "The Pack Leader", "realWeight": 1607.915283203125, "stackSize": 77, "total": 77 },
+ { "calculated": 1, "name": "The Card Sharp", "realWeight": 866.72705078125, "stackSize": 51, "total": 51 },
+ { "calculated": 1, "name": "Last Hope", "realWeight": 5321.3427734375, "stackSize": 171, "total": 171 },
+ { "calculated": 1, "name": "The Bear Woman", "realWeight": 535.5864868164062, "stackSize": 37, "total": 37 },
+ {
+ "calculated": 2,
+ "name": "Merciless Armament",
+ "realWeight": 166.80169677734375,
+ "stackSize": 17,
+ "total": 34
+ },
+ {
+ "calculated": 2.2699999809265137,
+ "name": "The Brawny Battle Mage",
+ "realWeight": 166.80169677734375,
+ "stackSize": 17,
+ "total": 38.59000015258789
+ },
+ { "calculated": 127, "name": "The Sephirot", "realWeight": 297.4658203125, "stackSize": 25, "total": 3175 },
+ { "calculated": 3, "name": "The Forward Gaze", "realWeight": 718.3661499023438, "stackSize": 45, "total": 135 },
+ { "calculated": 1, "name": "The Cataclysm", "realWeight": 1964.4957275390625, "stackSize": 88, "total": 88 },
+ {
+ "calculated": 20,
+ "name": "Imperfect Memories",
+ "realWeight": 19.037813186645508,
+ "stackSize": 4,
+ "total": 80
+ },
+ {
+ "calculated": 1,
+ "name": "Alone in the Darkness",
+ "realWeight": 6036.65771484375,
+ "stackSize": 186,
+ "total": 186
+ },
+ { "calculated": 1, "name": "The Hermit", "realWeight": 14330.7548828125, "stackSize": 331, "total": 331 },
+ { "calculated": 1, "name": "The Long Watch", "realWeight": 1334.41357421875, "stackSize": 68, "total": 68 },
+ {
+ "calculated": 1,
+ "name": "Call to the First Ones",
+ "realWeight": 1334.41357421875,
+ "stackSize": 68,
+ "total": 68
+ },
+ {
+ "calculated": 4.570000171661377,
+ "name": "The Dreamer",
+ "realWeight": 124.65770721435547,
+ "stackSize": 14,
+ "total": 63.980003356933594
+ },
+ { "calculated": 1, "name": "The Inoculated", "realWeight": 7087.3291015625, "stackSize": 207, "total": 207 },
+ {
+ "calculated": 17,
+ "name": "Gemcutter's Mercy",
+ "realWeight": 111.54295349121094,
+ "stackSize": 13,
+ "total": 221
+ },
+ { "calculated": 2, "name": "The Bones", "realWeight": 514.02099609375, "stackSize": 36, "total": 72 },
+ {
+ "calculated": 2.309999942779541,
+ "name": "The Jester",
+ "realWeight": 333.86639404296875,
+ "stackSize": 27,
+ "total": 62.369998931884766
+ },
+ {
+ "calculated": 1.1399999856948853,
+ "name": "The Lich",
+ "realWeight": 3984.333984375,
+ "stackSize": 141,
+ "total": 160.74000549316406
+ },
+ { "calculated": 1, "name": "Astral Protection", "realWeight": 492.7528381347656, "stackSize": 35, "total": 35 },
+ {
+ "calculated": 6.349999904632568,
+ "name": "Fateful Meeting",
+ "realWeight": 12.365421295166016,
+ "stackSize": 3,
+ "total": 19.049999237060547
+ },
+ {
+ "calculated": 50,
+ "name": "The Samurai's Eye",
+ "realWeight": 86.81926727294922,
+ "stackSize": 11,
+ "total": 550
+ },
+ {
+ "calculated": 1.909999966621399,
+ "name": "The Spark and the Flame",
+ "realWeight": 579.5941772460938,
+ "stackSize": 39,
+ "total": 74.48999786376953
+ },
+ {
+ "calculated": 1,
+ "name": "Destined to Crumble",
+ "realWeight": 49172.19140625,
+ "stackSize": 753,
+ "total": 753
+ },
+ {
+ "calculated": 25,
+ "name": "Beauty Through Death",
+ "realWeight": 12.365421295166016,
+ "stackSize": 3,
+ "total": 75
+ },
+ { "calculated": 1, "name": "The Survivalist", "realWeight": 5274.732421875, "stackSize": 170, "total": 170 },
+ {
+ "calculated": 4.139999866485596,
+ "name": "The Throne",
+ "realWeight": 111.54295349121094,
+ "stackSize": 13,
+ "total": 53.81999969482422
+ },
+ {
+ "calculated": 1.0299999713897705,
+ "name": "Endless Night",
+ "realWeight": 297.4658203125,
+ "stackSize": 25,
+ "total": 25.75
+ },
+ { "calculated": 2, "name": "Azure Rage", "realWeight": 2670.93115234375, "stackSize": 108, "total": 216 },
+ { "calculated": 1, "name": "The Undaunted", "realWeight": 892.3436279296875, "stackSize": 52, "total": 52 },
+ { "calculated": 1, "name": "Thunderous Skies", "realWeight": 9576.5224609375, "stackSize": 253, "total": 253 },
+ {
+ "calculated": 4.099999904632568,
+ "name": "The World Eater",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 20.5
+ },
+ { "calculated": 1, "name": "The Scholar", "realWeight": 44262.1796875, "stackSize": 702, "total": 702 },
+ {
+ "calculated": 1.2899999618530273,
+ "name": "The Traitor",
+ "realWeight": 866.72705078125,
+ "stackSize": 51,
+ "total": 65.79000091552734
+ },
+ { "calculated": 3, "name": "The Void", "realWeight": 9633.3564453125, "stackSize": 254, "total": 762 },
+ { "calculated": 4, "name": "The Cursed King", "realWeight": 471.78643798828125, "stackSize": 34, "total": 136 },
+ { "calculated": 1, "name": "The Puzzle", "realWeight": 5414.97216796875, "stackSize": 173, "total": 173 },
+ { "calculated": 1, "name": "The Realm", "realWeight": 333.86639404296875, "stackSize": 27, "total": 27 },
+ { "calculated": 1, "name": "Dark Temptation", "realWeight": 9463.193359375, "stackSize": 251, "total": 251 },
+ { "calculated": 15, "name": "Magnum Opus", "realWeight": 64.25262451171875, "stackSize": 9, "total": 135 },
+ {
+ "calculated": 1.690000057220459,
+ "name": "The Twilight Moon",
+ "realWeight": 333.86639404296875,
+ "stackSize": 27,
+ "total": 45.630001068115234
+ },
+ { "calculated": 45, "name": "Luminous Trove", "realWeight": 34.974693298339844, "stackSize": 6, "total": 270 },
+ {
+ "calculated": 1.0099999904632568,
+ "name": "The Landing",
+ "realWeight": 742.4442749023438,
+ "stackSize": 46,
+ "total": 46.459999084472656
+ },
+ {
+ "calculated": 1,
+ "name": "The Ruthless Ceinture",
+ "realWeight": 2415.51171875,
+ "stackSize": 101,
+ "total": 101
+ },
+ {
+ "calculated": 1.9500000476837158,
+ "name": "Acclimatisation",
+ "realWeight": 3167.416015625,
+ "stackSize": 121,
+ "total": 235.95001220703125
+ },
+ {
+ "calculated": 10,
+ "name": "Alluring Bounty",
+ "realWeight": 111.54295349121094,
+ "stackSize": 13,
+ "total": 130
+ },
+ { "calculated": 1, "name": "The Surveyor", "realWeight": 3089.210693359375, "stackSize": 119, "total": 119 },
+ { "calculated": 1, "name": "The Web", "realWeight": 8031.578125, "stackSize": 225, "total": 225 },
+ { "calculated": 3, "name": "The Insatiable", "realWeight": 944.3167114257812, "stackSize": 54, "total": 162 },
+ { "calculated": 0, "name": "Luck of the Vaal", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 7.110000133514404,
+ "name": "Nook's Crown",
+ "realWeight": 2.3797266483306885,
+ "stackSize": 1,
+ "total": 7.110000133514404
+ },
+ {
+ "calculated": 0.9900000095367432,
+ "name": "The Flora's Gift",
+ "realWeight": 28708.181640625,
+ "stackSize": 526,
+ "total": 520.739990234375
+ },
+ {
+ "calculated": 1,
+ "name": "The Drunken Aristocrat",
+ "realWeight": 2273.446044921875,
+ "stackSize": 97,
+ "total": 97
+ },
+ {
+ "calculated": 1,
+ "name": "Coveted Possession",
+ "realWeight": 3365.75830078125,
+ "stackSize": 126,
+ "total": 126
+ },
+ { "calculated": 1, "name": "Loyalty", "realWeight": 31874.671875, "stackSize": 564, "total": 564 },
+ {
+ "calculated": 2822.47998046875,
+ "name": "The Demon",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 5644.9599609375
+ },
+ {
+ "calculated": 14.789999961853027,
+ "name": "The Leviathan",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 29.579999923706055
+ },
+ {
+ "calculated": 10,
+ "name": "The Mind's Eyes",
+ "realWeight": 197.08677673339844,
+ "stackSize": 19,
+ "total": 190
+ },
+ {
+ "calculated": 2.009999990463257,
+ "name": "The Offspring",
+ "realWeight": 262.4936828613281,
+ "stackSize": 23,
+ "total": 46.22999954223633
+ },
+ {
+ "calculated": 5658.89990234375,
+ "name": "Unrequited Love",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 11317.7998046875
+ },
+ { "calculated": 1, "name": "Prosperity", "realWeight": 11874.1162109375, "stackSize": 292, "total": 292 },
+ { "calculated": 1, "name": "Shard of Fate", "realWeight": 5603.85595703125, "stackSize": 177, "total": 177 },
+ { "calculated": 1, "name": "Treasure Hunter", "realWeight": 816.2462158203125, "stackSize": 49, "total": 49 },
+ {
+ "calculated": 17.920000076293945,
+ "name": "The Old Man",
+ "realWeight": 2.3797266483306885,
+ "stackSize": 1,
+ "total": 17.920000076293945
+ },
+ {
+ "calculated": 7.960000038146973,
+ "name": "Draped in Dreams",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 39.79999923706055
+ },
+ {
+ "calculated": 1.6100000143051147,
+ "name": "The Wilted Rose",
+ "realWeight": 2415.51171875,
+ "stackSize": 101,
+ "total": 162.61000061035156
+ },
+ { "calculated": 1, "name": "The Battle Born", "realWeight": 5043.744140625, "stackSize": 165, "total": 165 },
+ { "calculated": 1, "name": "Rain of Chaos", "realWeight": 121465.9921875, "stackSize": 1376, "total": 1376 },
+ {
+ "calculated": 3.25,
+ "name": "Dying Anguish",
+ "realWeight": 1305.08642578125,
+ "stackSize": 67,
+ "total": 217.75
+ },
+ { "calculated": 3, "name": "Peaceful Moments", "realWeight": 197.08677673339844, "stackSize": 19, "total": 57 },
+ {
+ "calculated": 3.7300000190734863,
+ "name": "The Life Thief",
+ "realWeight": 75.25357055664062,
+ "stackSize": 10,
+ "total": 37.29999923706055
+ },
+ {
+ "calculated": 1.0299999713897705,
+ "name": "Echoes of Love",
+ "realWeight": 492.7528381347656,
+ "stackSize": 35,
+ "total": 36.04999923706055
+ },
+ {
+ "calculated": 2.2799999713897705,
+ "name": "Terrible Secret of Space",
+ "realWeight": 212.8492431640625,
+ "stackSize": 20,
+ "total": 45.599998474121094
+ },
+ {
+ "calculated": 1.8300000429153442,
+ "name": "The Incantation",
+ "realWeight": 1189.9752197265625,
+ "stackSize": 63,
+ "total": 115.29000091552734
+ },
+ {
+ "calculated": 1,
+ "name": "The Rite of Elements",
+ "realWeight": 1305.08642578125,
+ "stackSize": 67,
+ "total": 67
+ },
+ { "calculated": 1, "name": "The Darkest Dream", "realWeight": 297.4658203125, "stackSize": 25, "total": 25 },
+ { "calculated": 1, "name": "The Scavenger", "realWeight": 2203.496826171875, "stackSize": 95, "total": 95 },
+ { "calculated": 1, "name": "Harmony of Souls", "realWeight": 138.2496337890625, "stackSize": 15, "total": 15 },
+ {
+ "calculated": 4.579999923706055,
+ "name": "The Enforcer",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 22.899999618530273
+ },
+ {
+ "calculated": 2.759999990463257,
+ "name": "Arrogance of the Vaal",
+ "realWeight": 694.5541381835938,
+ "stackSize": 44,
+ "total": 121.44000244140625
+ },
+ {
+ "calculated": 4.190000057220459,
+ "name": "The Pact",
+ "realWeight": 297.4658203125,
+ "stackSize": 25,
+ "total": 104.75
+ },
+ { "calculated": 1, "name": "The Wrath", "realWeight": 8085.18115234375, "stackSize": 226, "total": 226 },
+ { "calculated": 0, "name": "The Mad King", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 9,
+ "name": "Pride of the First Ones",
+ "realWeight": 138.2496337890625,
+ "stackSize": 15,
+ "total": 135
+ },
+ { "calculated": 1, "name": "Cursed Words", "realWeight": 3206.7626953125, "stackSize": 122, "total": 122 },
+ {
+ "calculated": 2,
+ "name": "The Dapper Prodigy",
+ "realWeight": 2238.38037109375,
+ "stackSize": 96,
+ "total": 192
+ },
+ {
+ "calculated": 2.7899999618530273,
+ "name": "Dark Dreams",
+ "realWeight": 44.07315444946289,
+ "stackSize": 7,
+ "total": 19.529998779296875
+ },
+ {
+ "calculated": 3.9800000190734863,
+ "name": "Dementophobia",
+ "realWeight": 64.25262451171875,
+ "stackSize": 9,
+ "total": 35.81999969482422
+ },
+ {
+ "calculated": 1,
+ "name": "The Fox in the Brambles",
+ "realWeight": 557.445556640625,
+ "stackSize": 38,
+ "total": 38
+ },
+ {
+ "calculated": 1.600000023841858,
+ "name": "The Hunger",
+ "realWeight": 514.02099609375,
+ "stackSize": 36,
+ "total": 57.60000228881836
+ },
+ { "calculated": 1, "name": "The Oath", "realWeight": 1607.915283203125, "stackSize": 77, "total": 77 },
+ { "calculated": 1, "name": "The Porcupine", "realWeight": 3609.00927734375, "stackSize": 132, "total": 132 },
+ { "calculated": 1, "name": "Vanity", "realWeight": 2523.928955078125, "stackSize": 104, "total": 104 },
+ {
+ "calculated": 117.26000213623047,
+ "name": "Desecrated Virtue",
+ "realWeight": 44.07315444946289,
+ "stackSize": 7,
+ "total": 820.8200073242188
+ },
+ {
+ "calculated": 22.979999542236328,
+ "name": "Darker Half",
+ "realWeight": 44.07315444946289,
+ "stackSize": 7,
+ "total": 160.86000061035156
+ },
+ { "calculated": 1, "name": "The Journalist", "realWeight": 11935.1669921875, "stackSize": 293, "total": 293 },
+ { "calculated": 1, "name": "The Risk", "realWeight": 5509.14453125, "stackSize": 175, "total": 175 },
+ { "calculated": 0, "name": "A Note in the Wind", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 1, "name": "Anarchy's Price", "realWeight": 742.4442749023438, "stackSize": 46, "total": 46 },
+ { "calculated": 13178, "name": "House of Mirrors", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 0, "name": "Akil's Prophecy", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 2,
+ "name": "Pride Before the Fall",
+ "realWeight": 124.65770721435547,
+ "stackSize": 14,
+ "total": 28
+ },
+ { "calculated": 13, "name": "The Aspirant", "realWeight": 19.037813186645508, "stackSize": 4, "total": 52 },
+ { "calculated": 1, "name": "Earth Drinker", "realWeight": 1189.9752197265625, "stackSize": 63, "total": 63 },
+ {
+ "calculated": 1.9199999570846558,
+ "name": "The Queen",
+ "realWeight": 86.81926727294922,
+ "stackSize": 11,
+ "total": 21.119998931884766
+ },
+ { "calculated": 1, "name": "The Master", "realWeight": 816.2462158203125, "stackSize": 49, "total": 49 },
+ {
+ "calculated": 518.6099853515625,
+ "name": "Choking Guilt",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 1037.219970703125
+ },
+ {
+ "calculated": 15.319999694824219,
+ "name": "The Academic",
+ "realWeight": 197.08677673339844,
+ "stackSize": 19,
+ "total": 291.0799865722656
+ },
+ { "calculated": 15, "name": "Winter's Embrace", "realWeight": 26.606155395507812, "stackSize": 5, "total": 75 },
+ { "calculated": 1, "name": "The Hoarder", "realWeight": 2560.419189453125, "stackSize": 105, "total": 105 },
+ {
+ "calculated": 1,
+ "name": "Gemcutter's Promise",
+ "realWeight": 6480.0595703125,
+ "stackSize": 195,
+ "total": 195
+ },
+ {
+ "calculated": 1,
+ "name": "The Tinkerer's Table",
+ "realWeight": 245.5619659423828,
+ "stackSize": 22,
+ "total": 22
+ },
+ { "calculated": 2.380000114440918, "name": "The Awakened", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 64.62000274658203,
+ "name": "Brother's Stash",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 323.1000061035156
+ },
+ {
+ "calculated": 1.4500000476837158,
+ "name": "Light and Truth",
+ "realWeight": 451.12615966796875,
+ "stackSize": 33,
+ "total": 47.85000228881836
+ },
+ { "calculated": 1, "name": "Time-Lost Relic", "realWeight": 6232.43017578125, "stackSize": 190, "total": 190 },
+ {
+ "calculated": 2,
+ "name": "Boon of the First Ones",
+ "realWeight": 557.445556640625,
+ "stackSize": 38,
+ "total": 76
+ },
+ { "calculated": 1, "name": "The Catalyst", "realWeight": 22716.732421875, "stackSize": 450, "total": 450 },
+ {
+ "calculated": 1,
+ "name": "Thirst for Knowledge",
+ "realWeight": 6529.9697265625,
+ "stackSize": 196,
+ "total": 196
+ },
+ {
+ "calculated": 5.840000152587891,
+ "name": "Void of the Elements",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 11.680000305175781
+ },
+ { "calculated": 1, "name": "Her Mask", "realWeight": 8792.7333984375, "stackSize": 239, "total": 239 },
+ { "calculated": 5, "name": "The Tumbleweed", "realWeight": 75.25357055664062, "stackSize": 10, "total": 50 },
+ { "calculated": 3, "name": "Council of Cats", "realWeight": 152.30250549316406, "stackSize": 16, "total": 48 },
+ {
+ "calculated": 1.9600000381469727,
+ "name": "The Enthusiasts",
+ "realWeight": 371.64141845703125,
+ "stackSize": 29,
+ "total": 56.84000015258789
+ },
+ { "calculated": 1, "name": "The Gladiator", "realWeight": 5414.97216796875, "stackSize": 173, "total": 173 },
+ { "calculated": 3, "name": "Divine Justice", "realWeight": 229.01080322265625, "stackSize": 21, "total": 63 },
+ {
+ "calculated": 44,
+ "name": "A Fate Worse Than Death",
+ "realWeight": 44.07315444946289,
+ "stackSize": 7,
+ "total": 308
+ },
+ { "calculated": 16, "name": "The Damned", "realWeight": 26.606155395507812, "stackSize": 5, "total": 80 },
+ { "calculated": 1, "name": "The Trial", "realWeight": 5842.97705078125, "stackSize": 182, "total": 182 },
+ { "calculated": 9, "name": "The Long Con", "realWeight": 86.81926727294922, "stackSize": 11, "total": 99 },
+ {
+ "calculated": 3,
+ "name": "Justified Ambition",
+ "realWeight": 471.78643798828125,
+ "stackSize": 34,
+ "total": 102
+ },
+ { "calculated": 0, "name": "The Valley of Steel Boxes", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 1, "name": "The Endurance", "realWeight": 6036.65771484375, "stackSize": 186, "total": 186 },
+ { "calculated": 0, "name": "Treasures of the Vaal", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 2, "name": "Unchained", "realWeight": 352.5852355957031, "stackSize": 28, "total": 56 },
+ {
+ "calculated": 1,
+ "name": "Gift of the Gemling Queen",
+ "realWeight": 1702.7939453125,
+ "stackSize": 80,
+ "total": 80
+ },
+ { "calculated": 1, "name": "Hubris", "realWeight": 5368.08935546875, "stackSize": 172, "total": 172 },
+ { "calculated": 1, "name": "The Feast", "realWeight": 2415.51171875, "stackSize": 101, "total": 101 },
+ { "calculated": 1, "name": "Volatile Power", "realWeight": 5891.19921875, "stackSize": 183, "total": 183 },
+ { "calculated": 1, "name": "Emperor's Luck", "realWeight": 45306.58984375, "stackSize": 713, "total": 713 },
+ {
+ "calculated": 1,
+ "name": "Struck by Lightning",
+ "realWeight": 4816.228515625,
+ "stackSize": 160,
+ "total": 160
+ },
+ { "calculated": 1, "name": "The Mercenary", "realWeight": 1832.08642578125, "stackSize": 84, "total": 84 },
+ { "calculated": 1, "name": "The Wolverine", "realWeight": 1484.2645263671875, "stackSize": 73, "total": 73 },
+ { "calculated": 1, "name": "Hope", "realWeight": 2065.804443359375, "stackSize": 91, "total": 91 },
+ {
+ "calculated": 1,
+ "name": "The Encroaching Darkness",
+ "realWeight": 892.3436279296875,
+ "stackSize": 52,
+ "total": 52
+ },
+ {
+ "calculated": 3,
+ "name": "Guardian's Challenge",
+ "realWeight": 816.2462158203125,
+ "stackSize": 49,
+ "total": 147
+ },
+ { "calculated": 1, "name": "The Aesthete", "realWeight": 6430.2763671875, "stackSize": 194, "total": 194 },
+ { "calculated": 2, "name": "The Easy Stroll", "realWeight": 1702.7939453125, "stackSize": 80, "total": 160 },
+ {
+ "calculated": 2,
+ "name": "The Endless Darkness",
+ "realWeight": 64.25262451171875,
+ "stackSize": 9,
+ "total": 18
+ },
+ {
+ "calculated": 1347.75,
+ "name": "The Fiend",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 2695.5
+ },
+ {
+ "calculated": 1.8600000143051147,
+ "name": "The Lord of Celebration",
+ "realWeight": 579.5941772460938,
+ "stackSize": 39,
+ "total": 72.54000091552734
+ },
+ { "calculated": 1, "name": "The Lion", "realWeight": 4503.64599609375, "stackSize": 153, "total": 153 },
+ { "calculated": 10, "name": "The Sacrifice", "realWeight": 34.974693298339844, "stackSize": 6, "total": 60 },
+ {
+ "calculated": 3.119999885559082,
+ "name": "The Side Quest",
+ "realWeight": 624.7451782226562,
+ "stackSize": 41,
+ "total": 127.91999816894531
+ },
+ { "calculated": 1, "name": "The Sigil", "realWeight": 7241.958984375, "stackSize": 210, "total": 210 },
+ { "calculated": 1, "name": "The Betrayal", "realWeight": 2820.681884765625, "stackSize": 112, "total": 112 },
+ { "calculated": 5.75, "name": "The Sustenance", "realWeight": 0, "stackSize": 0, "total": 0 },
+ { "calculated": 1, "name": "The Union", "realWeight": 4198.13427734375, "stackSize": 146, "total": 146 },
+ { "calculated": 1, "name": "The One With All", "realWeight": 2415.51171875, "stackSize": 101, "total": 101 },
+ { "calculated": 5, "name": "The White Knight", "realWeight": 26.606155395507812, "stackSize": 5, "total": 25 },
+ {
+ "calculated": 2.190000057220459,
+ "name": "Bowyer's Dream",
+ "realWeight": 111.54295349121094,
+ "stackSize": 13,
+ "total": 28.470001220703125
+ },
+ { "calculated": 1, "name": "The Demoness", "realWeight": 8682.595703125, "stackSize": 237, "total": 237 },
+ { "calculated": 1, "name": "Buried Treasure", "realWeight": 1024.0928955078125, "stackSize": 57, "total": 57 },
+ { "calculated": 10, "name": "Gift of Asenath", "realWeight": 98.92337036132812, "stackSize": 12, "total": 120 },
+ { "calculated": 5870.2001953125, "name": "The Price of Devotion", "realWeight": 0, "stackSize": 0, "total": 0 },
+ {
+ "calculated": 149.6999969482422,
+ "name": "Wealth and Power",
+ "realWeight": 12.365421295166016,
+ "stackSize": 3,
+ "total": 449.0999755859375
+ },
+ {
+ "calculated": 4,
+ "name": "Ambitious Obsession",
+ "realWeight": 53.84706497192383,
+ "stackSize": 8,
+ "total": 32
+ },
+ {
+ "calculated": 2.9800000190734863,
+ "name": "The Cacophony",
+ "realWeight": 197.08677673339844,
+ "stackSize": 19,
+ "total": 56.619998931884766
+ },
+ {
+ "calculated": 2.6500000953674316,
+ "name": "Atziri's Arsenal",
+ "realWeight": 1423.687255859375,
+ "stackSize": 71,
+ "total": 188.15000915527344
+ },
+ { "calculated": 1, "name": "Assassin's Favour", "realWeight": 8246.7021484375, "stackSize": 229, "total": 229 },
+ {
+ "calculated": 222.86000061035156,
+ "name": "The Cheater",
+ "realWeight": 6.7308831214904785,
+ "stackSize": 2,
+ "total": 445.7200012207031
+ },
+ {
+ "calculated": 3,
+ "name": "Brush, Paint and Palette",
+ "realWeight": 410.74249267578125,
+ "stackSize": 31,
+ "total": 93
+ },
+ { "calculated": 3, "name": "The Professor", "realWeight": 352.5852355957031, "stackSize": 28, "total": 84 },
+ { "calculated": 1, "name": "The Fool", "realWeight": 2451.474365234375, "stackSize": 102, "total": 102 },
+ {
+ "calculated": 1,
+ "name": "The Metalsmith's Gift",
+ "realWeight": 31536.181640625,
+ "stackSize": 560,
+ "total": 560
+ },
+ {
+ "calculated": 34.349998474121094,
+ "name": "The Gulf",
+ "realWeight": 26.606155395507812,
+ "stackSize": 5,
+ "total": 171.75
+ }
+ ],
+ "selected": false,
+ "valid": true
+}
diff --git a/src/components/FixedNamesList.vue b/src/components/FixedNamesList.vue
new file mode 100644
index 00000000..e3f44402
--- /dev/null
+++ b/src/components/FixedNamesList.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
Automatically fixed typos
+
+ -
+ {{ inputName }}
+
+ {{ fixedName }}
+
+
+
+
+
+
diff --git a/src/components/OrderTriangle/OrderTriangle.story.vue b/src/components/OrderTriangle/OrderTriangle.story.vue
new file mode 100644
index 00000000..0aaeca38
--- /dev/null
+++ b/src/components/OrderTriangle/OrderTriangle.story.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/OrderTriangle/OrderTriangle.vue b/src/components/OrderTriangle/OrderTriangle.vue
new file mode 100644
index 00000000..bc6e7a9c
--- /dev/null
+++ b/src/components/OrderTriangle/OrderTriangle.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
diff --git a/src/components/icons/ArrowRight.vue b/src/components/icons/ArrowRight.vue
new file mode 100644
index 00000000..4cb4e12a
--- /dev/null
+++ b/src/components/icons/ArrowRight.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/src/components/icons/CSVIcon.vue b/src/components/icons/CSVIcon.vue
new file mode 100644
index 00000000..425af533
--- /dev/null
+++ b/src/components/icons/CSVIcon.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
diff --git a/src/composables.ts b/src/composables.ts
new file mode 100644
index 00000000..f0e1ced7
--- /dev/null
+++ b/src/composables.ts
@@ -0,0 +1,3 @@
+import { ref, unref, Ref, computed, watch, watchEffect, isRef } from 'vue';
+import { createCSVLink } from './lib';
+import { FileContents } from './types';
diff --git a/src/lib.ts b/src/lib.ts
new file mode 100644
index 00000000..f55ec193
--- /dev/null
+++ b/src/lib.ts
@@ -0,0 +1,110 @@
+import { CommandList, Contents, FileContents, CardRecord, WeightedCardRecord } from './types';
+import { invoke } from '@tauri-apps/api';
+
+export const createCSVLink = (contents: string): string => {
+ const blob = new Blob([contents], { type: 'csv/text' });
+ const href = URL.createObjectURL(blob);
+ return href;
+};
+
+export const downloadFiles = (hrefList: FileContents[]): void => {
+ const links: HTMLAnchorElement[] = [];
+ hrefList.forEach(({ filename, href }) => {
+ links.push(createDownloadLink(href, filename));
+ });
+ links.forEach(a => {
+ a.click();
+ });
+};
+
+export const createDownloadLink = (href: string, filename: string): HTMLAnchorElement => {
+ const a = document.createElement('a');
+ a.download = `${filename}`;
+ a.href = href;
+ return a;
+};
+
+export const createCsvFile = (csvString: string, filename: string): File =>
+ new File([csvString], filename, { type: 'text/csv' });
+
+export const command = (
+ cmd: T,
+ args: CommandList[T]['args']
+): CommandList[T]['returnType'] => {
+ return invoke(cmd, args) as CommandList[T]['returnType'];
+};
+
+const calcRecordWeight = (record: CardRecord, allStackSize: number): number => record.stackSize / allStackSize;
+const calcRecordRealWeight = (
+ record: CardRecord,
+ realStackedSummaryWeight: number,
+ condenseFactor: number,
+ allStackSize: number
+): number => (realStackedSummaryWeight * calcRecordWeight(record, allStackSize)) ** (1 / condenseFactor);
+
+export const createContents = async (file: File): Promise => {
+ let valid = false;
+ let error = null;
+ let text = await file.text();
+ let href = '';
+ let records: CardRecord[] = [];
+ let notCards: string[] = [];
+ let fixedNames: Record = {};
+
+ try {
+ const data = await command('read_polish_csv', { csvString: text });
+ records = data.records;
+ text = data.csv;
+ notCards = data.notCards;
+ fixedNames = data.fixedNames;
+ href = createCSVLink(text);
+ valid = true;
+ } catch (err) {
+ error = err as string;
+ }
+
+ // const allStackSize = records.reduce((summ, { stackSize }) => (summ += stackSize), 0);
+ // const REAL_STACKED_RAIN_OF_CHAOS_WEIGHT = 2452.65513;
+ // const CONDENSE_FACTOR = 2 / 3;
+ // const rainOfChaos = records.find(({ name }) => name === 'Rain of Chaos');
+ // if (!rainOfChaos) throw new Error('No Rain of Chaos card');
+ // const weight = rainOfChaos.stackSize / allStackSize;
+ // const realStackedSummaryWeight = REAL_STACKED_RAIN_OF_CHAOS_WEIGHT / weight;
+ // const weightedRecords: WeightedCardRecord[] = records.map(record => {
+ // const realWeight = calcRecordRealWeight(record, realStackedSummaryWeight, CONDENSE_FACTOR, allStackSize);
+ // return {
+ // ...record,
+ // realWeight,
+ // };
+ // });
+
+ let weightedRecords: WeightedCardRecord[] = [];
+ try {
+ const { csv, records: weighted } = await command('weight_records_to_csv', { records });
+ text = csv;
+ href = createCSVLink(text);
+ valid = true;
+ weightedRecords = weighted;
+ } catch (err) {
+ error = err as string;
+ }
+
+ const fileContent: FileContents = {
+ text,
+ filename: file.name,
+ href,
+ };
+ const contents: Contents = {
+ id: crypto.randomUUID(),
+ fileContent,
+ valid,
+ error,
+ selected: false,
+ price: 0,
+ records: weightedRecords,
+ notCards,
+ fixedNames,
+ };
+
+ return contents;
+};
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 00000000..f96f659e
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,20 @@
+import { createApp } from 'vue';
+import './style.css';
+import App from './App.vue';
+
+createApp(App).mount('#app');
+
+import { invoke } from '@tauri-apps/api';
+
+invoke('get_hashmap').then(r => {
+ console.log(r);
+});
+
+// import { InvokeArgs } from '@tauri-apps/api/tauri';
+// const r = command('read_polish_csv', {
+// csvString: `stackSize,,name,calculated,total
+// 49,The Opulent,1.0,49.0
+// 0,The Price of Devotion,5772.65,0.0
+// 0,Perfection,3.0,0.0
+// 65,Three Faces in the Dark,1.0,65.0`,
+// });
diff --git a/src/style.css b/src/style.css
new file mode 100644
index 00000000..a1a34d59
--- /dev/null
+++ b/src/style.css
@@ -0,0 +1,78 @@
+* {
+ padding: 0;
+ margin: 0;
+ box-sizing: border-box;
+}
+
+:root {
+ --bg-color: #242424;
+ --color: rgba(255, 255, 255, 0.87);
+ --border-color: #646cff;
+
+ font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
+ /* font-size: 16px; */
+ line-height: 24px;
+ font-weight: 400;
+
+ color-scheme: light dark;
+ color: rgba(255, 255, 255, 0.87);
+ background-color: #242424;
+
+ font-synthesis: none;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-text-size-adjust: 100%;
+}
+
+a {
+ font-weight: 500;
+ color: #646cff;
+ text-decoration: inherit;
+}
+a:hover {
+ color: #535bf2;
+}
+
+/* h1 {
+ font-size: 3.2em;
+ line-height: 1.1;
+} */
+
+button {
+ border-radius: 8px;
+ border: 1px solid transparent;
+ padding: 0.6em 1.2em;
+ font-size: 1em;
+ font-weight: 500;
+ font-family: inherit;
+ background-color: #1a1a1a;
+ cursor: pointer;
+ transition: border-color 0.25s;
+}
+button:hover {
+ border-color: #646cff;
+}
+button:focus,
+button:focus-visible {
+ outline: 4px auto -webkit-focus-ring-color;
+}
+
+@media (prefers-color-scheme: light) {
+ :root {
+ color: var(--color);
+ background-color: var(--bg-color);
+ /* color: #213547; */
+ /* background-color: #ffffff; */
+ }
+ a:hover {
+ color: #747bff;
+ }
+ button {
+ background-color: #f9f9f9;
+ }
+}
+
+input {
+ font: inherit;
+}
diff --git a/src/types.ts b/src/types.ts
new file mode 100644
index 00000000..9ce6e745
--- /dev/null
+++ b/src/types.ts
@@ -0,0 +1,75 @@
+export interface FileContents {
+ text: string;
+ filename: string;
+ href: string;
+}
+
+export type DivCsvLine = [number, string, number | null, number | null];
+
+export interface CommandList {
+ weight_records_to_csv: {
+ args: { records: CardRecord[] };
+ returnType: Promise<{
+ csv: string;
+ records: WeightedCardRecord[];
+ }>;
+ };
+ update_prices: {
+ args: {};
+ returnType: Promise;
+ };
+ merge_csv: {
+ args: {
+ /** List of Csv files as strings */
+ csvFileStrings: string[];
+ };
+ returnType: Promise;
+ };
+ read_polish_csv: {
+ args: {
+ /** Csv file as string */
+ csvString: string;
+ };
+ returnType: Promise<{
+ csv: string;
+ records: CardRecord[];
+ notCards: string[];
+ fixedNames: Record;
+ }>;
+ };
+ total_chaos: {
+ args: {
+ /** Csv file as string */
+ csvString: string;
+ minimumCardPrice: number;
+ };
+ returnType: Promise;
+ };
+}
+
+export interface CardRecord {
+ stackSize: number;
+ name: string;
+ calculated: number;
+ total: number;
+}
+
+export type WeightedCardRecord = CardRecord & { realWeight: number };
+
+export interface Contents {
+ fileContent: FileContents;
+ selected: boolean | null;
+ id: string;
+ valid: boolean;
+ error: string | null;
+ price: number;
+ records: WeightedCardRecord[];
+ notCards: string[];
+ fixedNames: Record;
+}
+
+export type Order = 'asc' | 'desc';
+export type Column = 'price' | 'stackSize' | 'total';
+export type SortState = {
+ [col in Column]: Order;
+} & { activeColumn: Column };
diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts
new file mode 100644
index 00000000..323c78a6
--- /dev/null
+++ b/src/vite-env.d.ts
@@ -0,0 +1,7 @@
+///
+
+declare module '*.vue' {
+ import type { DefineComponent } from 'vue'
+ const component: DefineComponent<{}, {}, any>
+ export default component
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 00000000..d4aefa2c
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,18 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "strict": true,
+ "jsx": "preserve",
+ "sourceMap": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "esModuleInterop": true,
+ "lib": ["ESNext", "DOM"],
+ "skipLibCheck": true
+ },
+ "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
+ "references": [{ "path": "./tsconfig.node.json" }]
+}
diff --git a/tsconfig.node.json b/tsconfig.node.json
new file mode 100644
index 00000000..9d31e2ae
--- /dev/null
+++ b/tsconfig.node.json
@@ -0,0 +1,9 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "allowSyntheticDefaultImports": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 00000000..315212d6
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [vue()]
+})