diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..38adffa
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,28 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+dist-ssr
+coverage
+*.local
+
+/cypress/videos/
+/cypress/screenshots/
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000..c0a6e5a
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,3 @@
+{
+ "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
+}
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..7e07aa2
--- /dev/null
+++ b/README.md
@@ -0,0 +1,40 @@
+# p5rcalc
+
diff --git a/env.d.ts b/env.d.ts
new file mode 100644
index 0000000..11f02fe
--- /dev/null
+++ b/env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..6c4787f
--- /dev/null
+++ b/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Persona 5 Royal Calculator
+
+
+
+
+
+
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..cda0aed
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,6029 @@
+{
+ "name": "p5rcalc",
+ "version": "0.0.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "p5rcalc",
+ "version": "0.0.0",
+ "dependencies": {
+ "vue": "^3.2.41",
+ "vue-router": "^4.1.5",
+ "vue-select": "^4.0.0-beta.6"
+ },
+ "devDependencies": {
+ "@types/node": "^16.11.68",
+ "@vitejs/plugin-vue": "^3.1.2",
+ "@vue/eslint-config-typescript": "^11.0.2",
+ "@vue/tsconfig": "^0.1.3",
+ "eslint": "^8.27.0",
+ "eslint-plugin-vue": "^9.7.0",
+ "npm-run-all": "^4.1.5",
+ "typescript": "~4.7.4",
+ "vite": "^3.1.8",
+ "vue-tsc": "^1.0.8"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.20.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz",
+ "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz",
+ "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz",
+ "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz",
+ "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.4.0",
+ "globals": "^13.15.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.7",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz",
+ "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^1.2.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+ "dev": true
+ },
+ "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/@types/json-schema": {
+ "version": "7.0.11",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
+ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "16.18.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.3.tgz",
+ "integrity": "sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==",
+ "dev": true
+ },
+ "node_modules/@types/semver": {
+ "version": "7.3.13",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
+ "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "5.42.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.1.tgz",
+ "integrity": "sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "5.42.1",
+ "@typescript-eslint/type-utils": "5.42.1",
+ "@typescript-eslint/utils": "5.42.1",
+ "debug": "^4.3.4",
+ "ignore": "^5.2.0",
+ "natural-compare-lite": "^1.4.0",
+ "regexpp": "^3.2.0",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^5.0.0",
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "5.42.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.42.1.tgz",
+ "integrity": "sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "5.42.1",
+ "@typescript-eslint/types": "5.42.1",
+ "@typescript-eslint/typescript-estree": "5.42.1",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "5.42.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz",
+ "integrity": "sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.42.1",
+ "@typescript-eslint/visitor-keys": "5.42.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "5.42.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.1.tgz",
+ "integrity": "sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "5.42.1",
+ "@typescript-eslint/utils": "5.42.1",
+ "debug": "^4.3.4",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "5.42.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz",
+ "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "5.42.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz",
+ "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.42.1",
+ "@typescript-eslint/visitor-keys": "5.42.1",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "5.42.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.1.tgz",
+ "integrity": "sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "@types/semver": "^7.3.12",
+ "@typescript-eslint/scope-manager": "5.42.1",
+ "@typescript-eslint/types": "5.42.1",
+ "@typescript-eslint/typescript-estree": "5.42.1",
+ "eslint-scope": "^5.1.1",
+ "eslint-utils": "^3.0.0",
+ "semver": "^7.3.7"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "5.42.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz",
+ "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.42.1",
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz",
+ "integrity": "sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==",
+ "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-language-core/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/@volar/vue-language-core/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/@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.44",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.44.tgz",
+ "integrity": "sha512-TwzeVSnaklb8wIvMtwtkPkt9wnU+XD70xJ7N9+eIHtjKAG7OoZttm+14ZL6vWOL+2RcMtSZ+cYH+gvkUqsrmSQ==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.44",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.44.tgz",
+ "integrity": "sha512-wPDR+gOn2Qi7SudPJ+gE62vuO/aKXIiIFALvHpztXmDdbAHGy3CDfmBgOGchTgTlSeDJHe9olEMkgOdmyXTjUg==",
+ "dependencies": {
+ "@vue/compiler-core": "3.2.44",
+ "@vue/shared": "3.2.44"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.44.tgz",
+ "integrity": "sha512-8cFZcUWlrtnfM/GlRwYJdlfgbEOy0OZ/osLDU3h/wJu24HuYAc7QIML1USaKqiZzkjOaTd4y8mvYvcWXq3o5dA==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.44",
+ "@vue/compiler-dom": "3.2.44",
+ "@vue/compiler-ssr": "3.2.44",
+ "@vue/reactivity-transform": "3.2.44",
+ "@vue/shared": "3.2.44",
+ "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.44",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.44.tgz",
+ "integrity": "sha512-tAkUFLgvxds3l5KPyAH77OIYrEeLngNYQfWA9GocHiy2nlyajjqAH/Jq93Bq29Y20GeJzblmRp9DVYCVkJ5Rsw==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.44",
+ "@vue/shared": "3.2.44"
+ }
+ },
+ "node_modules/@vue/devtools-api": {
+ "version": "6.4.5",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz",
+ "integrity": "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ=="
+ },
+ "node_modules/@vue/eslint-config-typescript": {
+ "version": "11.0.2",
+ "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.2.tgz",
+ "integrity": "sha512-EiKud1NqlWmSapBFkeSrE994qpKx7/27uCGnhdqzllYDpQZroyX/O6bwjEpeuyKamvLbsGdO6PMR2faIf+zFnw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "^5.0.0",
+ "@typescript-eslint/parser": "^5.0.0",
+ "vue-eslint-parser": "^9.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0",
+ "eslint-plugin-vue": "^9.0.0",
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.44.tgz",
+ "integrity": "sha512-Fe0s52fTsPl+RSdvoqUZ3HRKlaVsKhIh1mea5EWOedFvZCjnymzlj3YC1wZMxi89qXRFSdEASVA/BWUGypk0Ig==",
+ "dependencies": {
+ "@vue/shared": "3.2.44"
+ }
+ },
+ "node_modules/@vue/reactivity-transform": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.44.tgz",
+ "integrity": "sha512-WGbEiXaS2qAOTS9Z3kKk2Nk4bi8OUl73Sih+h0XV9RTUATnaJSEQedveHUDQnHyXiZwyBMKosrxJg8aThHO/rw==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.44",
+ "@vue/shared": "3.2.44",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.44.tgz",
+ "integrity": "sha512-uwEV1cttL33k2dC+CNGYhKEYqGejT9KmgQ+4n/LmYUfZ1Gorl8F32DlIX+1pANyGHL1tBAisqHDxKyQBp2oBNA==",
+ "dependencies": {
+ "@vue/reactivity": "3.2.44",
+ "@vue/shared": "3.2.44"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.44.tgz",
+ "integrity": "sha512-LDzNwXpU/nSpxrLk5jS0bfStgt88msgsgFzj6vHrl7es3QktIrCGybQS5CB/p/TO0q98iAiYtEVmi+Lej7Vgjg==",
+ "dependencies": {
+ "@vue/runtime-core": "3.2.44",
+ "@vue/shared": "3.2.44",
+ "csstype": "^2.6.8"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.44.tgz",
+ "integrity": "sha512-3+ArN07UgOAdbGKIp3uVqeC3bnR3J324QNjPR6vxHbLrTlkibFv8QNled/ux3fVq0KDCkVVKGOKB2V4sCIYOgg==",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.2.44",
+ "@vue/shared": "3.2.44"
+ },
+ "peerDependencies": {
+ "vue": "3.2.44"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.44.tgz",
+ "integrity": "sha512-mGZ44bnn0zpZ36nXtxbrBPno43yr96wjQE1dBEKS1Sieugt27HS4OGZVBRIgsdGzosB7vqZAvu0ttu1FDVdolA=="
+ },
+ "node_modules/@vue/tsconfig": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.1.3.tgz",
+ "integrity": "sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==",
+ "dev": true,
+ "peerDependencies": {
+ "@types/node": "*"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "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/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/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/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/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/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/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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": "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/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/define-properties": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
+ "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
+ "dev": true,
+ "dependencies": {
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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/dir-glob/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/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.20.4",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz",
+ "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "function.prototype.name": "^1.1.5",
+ "get-intrinsic": "^1.1.3",
+ "get-symbol-description": "^1.0.0",
+ "has": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.3",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.2",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.4.3",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trimend": "^1.0.5",
+ "string.prototype.trimstart": "^1.0.5",
+ "unbox-primitive": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz",
+ "integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.15.13",
+ "@esbuild/linux-loong64": "0.15.13",
+ "esbuild-android-64": "0.15.13",
+ "esbuild-android-arm64": "0.15.13",
+ "esbuild-darwin-64": "0.15.13",
+ "esbuild-darwin-arm64": "0.15.13",
+ "esbuild-freebsd-64": "0.15.13",
+ "esbuild-freebsd-arm64": "0.15.13",
+ "esbuild-linux-32": "0.15.13",
+ "esbuild-linux-64": "0.15.13",
+ "esbuild-linux-arm": "0.15.13",
+ "esbuild-linux-arm64": "0.15.13",
+ "esbuild-linux-mips64le": "0.15.13",
+ "esbuild-linux-ppc64le": "0.15.13",
+ "esbuild-linux-riscv64": "0.15.13",
+ "esbuild-linux-s390x": "0.15.13",
+ "esbuild-netbsd-64": "0.15.13",
+ "esbuild-openbsd-64": "0.15.13",
+ "esbuild-sunos-64": "0.15.13",
+ "esbuild-windows-32": "0.15.13",
+ "esbuild-windows-64": "0.15.13",
+ "esbuild-windows-arm64": "0.15.13"
+ }
+ },
+ "node_modules/esbuild-android-64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz",
+ "integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-android-arm64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz",
+ "integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-darwin-64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz",
+ "integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-darwin-arm64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz",
+ "integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-freebsd-64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz",
+ "integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-freebsd-arm64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz",
+ "integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-32": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz",
+ "integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz",
+ "integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-arm": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz",
+ "integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-arm64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz",
+ "integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-mips64le": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz",
+ "integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-ppc64le": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz",
+ "integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-riscv64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz",
+ "integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-s390x": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz",
+ "integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-netbsd-64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz",
+ "integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-openbsd-64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz",
+ "integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-sunos-64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz",
+ "integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-32": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz",
+ "integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz",
+ "integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-arm64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz",
+ "integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.27.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz",
+ "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint/eslintrc": "^1.3.3",
+ "@humanwhocodes/config-array": "^0.11.6",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "ajv": "^6.10.0",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.1.1",
+ "eslint-utils": "^3.0.0",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.4.0",
+ "esquery": "^1.4.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.15.0",
+ "grapheme-splitter": "^1.0.4",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-sdsl": "^4.1.4",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.1",
+ "regexpp": "^3.2.0",
+ "strip-ansi": "^6.0.1",
+ "strip-json-comments": "^3.1.0",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-plugin-vue": {
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.7.0.tgz",
+ "integrity": "sha512-DrOO3WZCZEwcLsnd3ohFwqCoipGRSTKTBTnLwdhqAbYZtzWl0o7D+D8ZhlmiZvABKTEl8AFsqH1GHGdybyoQmw==",
+ "dev": true,
+ "dependencies": {
+ "eslint-utils": "^3.0.0",
+ "natural-compare": "^1.4.0",
+ "nth-check": "^2.0.1",
+ "postcss-selector-parser": "^6.0.9",
+ "semver": "^7.3.5",
+ "vue-eslint-parser": "^9.0.1",
+ "xml-name-validator": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-vue/node_modules/semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
+ "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/eslint-utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
+ "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^2.0.0"
+ },
+ "engines": {
+ "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=5"
+ }
+ },
+ "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
+ "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/eslint/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/eslint/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/eslint/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/eslint/node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/eslint/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.4.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz",
+ "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.8.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "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/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-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/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/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/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "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/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.1.0",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
+ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
+ "dev": true
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.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/function.prototype.name": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
+ "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0",
+ "functions-have-names": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.17.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
+ "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/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/grapheme-splitter": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
+ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
+ "dev": true
+ },
+ "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-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "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/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true
+ },
+ "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/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
+ "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.0",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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/is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/js-sdsl": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz",
+ "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "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/memorystream": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+ "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "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/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/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/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/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/natural-compare-lite": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
+ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
+ "dev": true
+ },
+ "node_modules/nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "node_modules/npm-run-all": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
+ "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "chalk": "^2.4.1",
+ "cross-spawn": "^6.0.5",
+ "memorystream": "^0.3.1",
+ "minimatch": "^3.0.4",
+ "pidtree": "^0.3.0",
+ "read-pkg": "^3.0.0",
+ "shell-quote": "^1.6.1",
+ "string.prototype.padend": "^3.0.0"
+ },
+ "bin": {
+ "npm-run-all": "bin/npm-run-all/index.js",
+ "run-p": "bin/run-p/index.js",
+ "run-s": "bin/run-s/index.js"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "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/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
+ "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+ "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "dev": true,
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "dev": true,
+ "dependencies": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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/pidtree": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz",
+ "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==",
+ "dev": true,
+ "bin": {
+ "pidtree": "bin/pidtree.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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/postcss-selector-parser": {
+ "version": "6.0.10",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
+ "dev": true,
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==",
+ "dev": true,
+ "dependencies": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
+ "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "functions-have-names": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regexpp": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
+ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ }
+ },
+ "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/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "2.79.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
+ "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+ "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/safe-regex-test": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
+ "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "is-regex": "^1.1.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shell-quote": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz",
+ "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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/spdx-correct": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+ "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "dev": true,
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "dev": true
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.12",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz",
+ "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==",
+ "dev": true
+ },
+ "node_modules/string.prototype.padend": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz",
+ "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
+ "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
+ "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "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/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "node_modules/tsutils": {
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
+ "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^1.8.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "peerDependencies": {
+ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
+ }
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "4.7.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
+ "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/vite": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.3.tgz",
+ "integrity": "sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ==",
+ "dev": true,
+ "dependencies": {
+ "esbuild": "^0.15.9",
+ "postcss": "^8.4.18",
+ "resolve": "^1.22.1",
+ "rollup": "^2.79.1"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ },
+ "peerDependencies": {
+ "@types/node": ">= 14",
+ "less": "*",
+ "sass": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.44.tgz",
+ "integrity": "sha512-nyNtFDh+0TpRgYCUVfPD1mJ9PpIsCPXaOF4DeGNIT5vQ4X23ykflGq3Sy2P+tEt1/pQZxZnAysuRKwyhNj+Cjw==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.44",
+ "@vue/compiler-sfc": "3.2.44",
+ "@vue/runtime-dom": "3.2.44",
+ "@vue/server-renderer": "3.2.44",
+ "@vue/shared": "3.2.44"
+ }
+ },
+ "node_modules/vue-eslint-parser": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.1.0.tgz",
+ "integrity": "sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4",
+ "eslint-scope": "^7.1.1",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
+ "esquery": "^1.4.0",
+ "lodash": "^4.17.21",
+ "semver": "^7.3.6"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=6.0.0"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vue-router": {
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.6.tgz",
+ "integrity": "sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.4.5"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/vue-select": {
+ "version": "4.0.0-beta.6",
+ "resolved": "https://registry.npmjs.org/vue-select/-/vue-select-4.0.0-beta.6.tgz",
+ "integrity": "sha512-K+zrNBSpwMPhAxYLTCl56gaMrWZGgayoWCLqe5rWwkB8aUbAUh7u6sXjIR7v4ckp2WKC7zEEUY27g6h1MRsIHw==",
+ "peerDependencies": {
+ "vue": "3.x"
+ }
+ },
+ "node_modules/vue-template-compiler": {
+ "version": "2.7.14",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
+ "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
+ "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/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "dependencies": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/xml-name-validator": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ },
+ "dependencies": {
+ "@babel/parser": {
+ "version": "7.20.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz",
+ "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg=="
+ },
+ "@esbuild/android-arm": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz",
+ "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-loong64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz",
+ "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==",
+ "dev": true,
+ "optional": true
+ },
+ "@eslint/eslintrc": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz",
+ "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.4.0",
+ "globals": "^13.15.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ }
+ },
+ "@humanwhocodes/config-array": {
+ "version": "0.11.7",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz",
+ "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==",
+ "dev": true,
+ "requires": {
+ "@humanwhocodes/object-schema": "^1.2.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.5"
+ }
+ },
+ "@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true
+ },
+ "@humanwhocodes/object-schema": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+ "dev": true
+ },
+ "@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"
+ }
+ },
+ "@types/json-schema": {
+ "version": "7.0.11",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
+ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "16.18.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.3.tgz",
+ "integrity": "sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==",
+ "dev": true
+ },
+ "@types/semver": {
+ "version": "7.3.13",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
+ "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==",
+ "dev": true
+ },
+ "@typescript-eslint/eslint-plugin": {
+ "version": "5.42.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.1.tgz",
+ "integrity": "sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/scope-manager": "5.42.1",
+ "@typescript-eslint/type-utils": "5.42.1",
+ "@typescript-eslint/utils": "5.42.1",
+ "debug": "^4.3.4",
+ "ignore": "^5.2.0",
+ "natural-compare-lite": "^1.4.0",
+ "regexpp": "^3.2.0",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ }
+ }
+ },
+ "@typescript-eslint/parser": {
+ "version": "5.42.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.42.1.tgz",
+ "integrity": "sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/scope-manager": "5.42.1",
+ "@typescript-eslint/types": "5.42.1",
+ "@typescript-eslint/typescript-estree": "5.42.1",
+ "debug": "^4.3.4"
+ }
+ },
+ "@typescript-eslint/scope-manager": {
+ "version": "5.42.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz",
+ "integrity": "sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "5.42.1",
+ "@typescript-eslint/visitor-keys": "5.42.1"
+ }
+ },
+ "@typescript-eslint/type-utils": {
+ "version": "5.42.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.1.tgz",
+ "integrity": "sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/typescript-estree": "5.42.1",
+ "@typescript-eslint/utils": "5.42.1",
+ "debug": "^4.3.4",
+ "tsutils": "^3.21.0"
+ }
+ },
+ "@typescript-eslint/types": {
+ "version": "5.42.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz",
+ "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==",
+ "dev": true
+ },
+ "@typescript-eslint/typescript-estree": {
+ "version": "5.42.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz",
+ "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "5.42.1",
+ "@typescript-eslint/visitor-keys": "5.42.1",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ }
+ }
+ },
+ "@typescript-eslint/utils": {
+ "version": "5.42.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.1.tgz",
+ "integrity": "sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.9",
+ "@types/semver": "^7.3.12",
+ "@typescript-eslint/scope-manager": "5.42.1",
+ "@typescript-eslint/types": "5.42.1",
+ "@typescript-eslint/typescript-estree": "5.42.1",
+ "eslint-scope": "^5.1.1",
+ "eslint-utils": "^3.0.0",
+ "semver": "^7.3.7"
+ },
+ "dependencies": {
+ "eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true
+ },
+ "semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ }
+ }
+ },
+ "@typescript-eslint/visitor-keys": {
+ "version": "5.42.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz",
+ "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "5.42.1",
+ "eslint-visitor-keys": "^3.3.0"
+ }
+ },
+ "@vitejs/plugin-vue": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz",
+ "integrity": "sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==",
+ "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"
+ },
+ "dependencies": {
+ "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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "@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.44",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.44.tgz",
+ "integrity": "sha512-TwzeVSnaklb8wIvMtwtkPkt9wnU+XD70xJ7N9+eIHtjKAG7OoZttm+14ZL6vWOL+2RcMtSZ+cYH+gvkUqsrmSQ==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.44",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.44.tgz",
+ "integrity": "sha512-wPDR+gOn2Qi7SudPJ+gE62vuO/aKXIiIFALvHpztXmDdbAHGy3CDfmBgOGchTgTlSeDJHe9olEMkgOdmyXTjUg==",
+ "requires": {
+ "@vue/compiler-core": "3.2.44",
+ "@vue/shared": "3.2.44"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.44.tgz",
+ "integrity": "sha512-8cFZcUWlrtnfM/GlRwYJdlfgbEOy0OZ/osLDU3h/wJu24HuYAc7QIML1USaKqiZzkjOaTd4y8mvYvcWXq3o5dA==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.44",
+ "@vue/compiler-dom": "3.2.44",
+ "@vue/compiler-ssr": "3.2.44",
+ "@vue/reactivity-transform": "3.2.44",
+ "@vue/shared": "3.2.44",
+ "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.44",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.44.tgz",
+ "integrity": "sha512-tAkUFLgvxds3l5KPyAH77OIYrEeLngNYQfWA9GocHiy2nlyajjqAH/Jq93Bq29Y20GeJzblmRp9DVYCVkJ5Rsw==",
+ "requires": {
+ "@vue/compiler-dom": "3.2.44",
+ "@vue/shared": "3.2.44"
+ }
+ },
+ "@vue/devtools-api": {
+ "version": "6.4.5",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz",
+ "integrity": "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ=="
+ },
+ "@vue/eslint-config-typescript": {
+ "version": "11.0.2",
+ "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.2.tgz",
+ "integrity": "sha512-EiKud1NqlWmSapBFkeSrE994qpKx7/27uCGnhdqzllYDpQZroyX/O6bwjEpeuyKamvLbsGdO6PMR2faIf+zFnw==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/eslint-plugin": "^5.0.0",
+ "@typescript-eslint/parser": "^5.0.0",
+ "vue-eslint-parser": "^9.0.0"
+ }
+ },
+ "@vue/reactivity": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.44.tgz",
+ "integrity": "sha512-Fe0s52fTsPl+RSdvoqUZ3HRKlaVsKhIh1mea5EWOedFvZCjnymzlj3YC1wZMxi89qXRFSdEASVA/BWUGypk0Ig==",
+ "requires": {
+ "@vue/shared": "3.2.44"
+ }
+ },
+ "@vue/reactivity-transform": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.44.tgz",
+ "integrity": "sha512-WGbEiXaS2qAOTS9Z3kKk2Nk4bi8OUl73Sih+h0XV9RTUATnaJSEQedveHUDQnHyXiZwyBMKosrxJg8aThHO/rw==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.44",
+ "@vue/shared": "3.2.44",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.44.tgz",
+ "integrity": "sha512-uwEV1cttL33k2dC+CNGYhKEYqGejT9KmgQ+4n/LmYUfZ1Gorl8F32DlIX+1pANyGHL1tBAisqHDxKyQBp2oBNA==",
+ "requires": {
+ "@vue/reactivity": "3.2.44",
+ "@vue/shared": "3.2.44"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.44.tgz",
+ "integrity": "sha512-LDzNwXpU/nSpxrLk5jS0bfStgt88msgsgFzj6vHrl7es3QktIrCGybQS5CB/p/TO0q98iAiYtEVmi+Lej7Vgjg==",
+ "requires": {
+ "@vue/runtime-core": "3.2.44",
+ "@vue/shared": "3.2.44",
+ "csstype": "^2.6.8"
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.44.tgz",
+ "integrity": "sha512-3+ArN07UgOAdbGKIp3uVqeC3bnR3J324QNjPR6vxHbLrTlkibFv8QNled/ux3fVq0KDCkVVKGOKB2V4sCIYOgg==",
+ "requires": {
+ "@vue/compiler-ssr": "3.2.44",
+ "@vue/shared": "3.2.44"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.44.tgz",
+ "integrity": "sha512-mGZ44bnn0zpZ36nXtxbrBPno43yr96wjQE1dBEKS1Sieugt27HS4OGZVBRIgsdGzosB7vqZAvu0ttu1FDVdolA=="
+ },
+ "@vue/tsconfig": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.1.3.tgz",
+ "integrity": "sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==",
+ "dev": true,
+ "requires": {}
+ },
+ "acorn": {
+ "version": "8.8.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
+ "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
+ "dev": true
+ },
+ "acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "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
+ },
+ "array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true
+ },
+ "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
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "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"
+ }
+ },
+ "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"
+ }
+ },
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true
+ },
+ "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": "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"
+ }
+ },
+ "deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "define-properties": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
+ "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
+ "dev": true,
+ "requires": {
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ }
+ },
+ "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"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.20.4",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz",
+ "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "function.prototype.name": "^1.1.5",
+ "get-intrinsic": "^1.1.3",
+ "get-symbol-description": "^1.0.0",
+ "has": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.3",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.2",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.4.3",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trimend": "^1.0.5",
+ "string.prototype.trimstart": "^1.0.5",
+ "unbox-primitive": "^1.0.2"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "esbuild": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz",
+ "integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==",
+ "dev": true,
+ "requires": {
+ "@esbuild/android-arm": "0.15.13",
+ "@esbuild/linux-loong64": "0.15.13",
+ "esbuild-android-64": "0.15.13",
+ "esbuild-android-arm64": "0.15.13",
+ "esbuild-darwin-64": "0.15.13",
+ "esbuild-darwin-arm64": "0.15.13",
+ "esbuild-freebsd-64": "0.15.13",
+ "esbuild-freebsd-arm64": "0.15.13",
+ "esbuild-linux-32": "0.15.13",
+ "esbuild-linux-64": "0.15.13",
+ "esbuild-linux-arm": "0.15.13",
+ "esbuild-linux-arm64": "0.15.13",
+ "esbuild-linux-mips64le": "0.15.13",
+ "esbuild-linux-ppc64le": "0.15.13",
+ "esbuild-linux-riscv64": "0.15.13",
+ "esbuild-linux-s390x": "0.15.13",
+ "esbuild-netbsd-64": "0.15.13",
+ "esbuild-openbsd-64": "0.15.13",
+ "esbuild-sunos-64": "0.15.13",
+ "esbuild-windows-32": "0.15.13",
+ "esbuild-windows-64": "0.15.13",
+ "esbuild-windows-arm64": "0.15.13"
+ }
+ },
+ "esbuild-android-64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz",
+ "integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-android-arm64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz",
+ "integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-darwin-64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz",
+ "integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-darwin-arm64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz",
+ "integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-freebsd-64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz",
+ "integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-freebsd-arm64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz",
+ "integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-32": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz",
+ "integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz",
+ "integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-arm": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz",
+ "integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-arm64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz",
+ "integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-mips64le": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz",
+ "integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-ppc64le": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz",
+ "integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-riscv64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz",
+ "integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-s390x": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz",
+ "integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-netbsd-64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz",
+ "integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-openbsd-64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz",
+ "integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-sunos-64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz",
+ "integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-windows-32": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz",
+ "integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-windows-64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz",
+ "integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-windows-arm64": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz",
+ "integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==",
+ "dev": true,
+ "optional": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true
+ },
+ "eslint": {
+ "version": "8.27.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz",
+ "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==",
+ "dev": true,
+ "requires": {
+ "@eslint/eslintrc": "^1.3.3",
+ "@humanwhocodes/config-array": "^0.11.6",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "ajv": "^6.10.0",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.1.1",
+ "eslint-utils": "^3.0.0",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.4.0",
+ "esquery": "^1.4.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.15.0",
+ "grapheme-splitter": "^1.0.4",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-sdsl": "^4.1.4",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.1",
+ "regexpp": "^3.2.0",
+ "strip-ansi": "^6.0.1",
+ "strip-json-comments": "^3.1.0",
+ "text-table": "^0.2.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "eslint-plugin-vue": {
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.7.0.tgz",
+ "integrity": "sha512-DrOO3WZCZEwcLsnd3ohFwqCoipGRSTKTBTnLwdhqAbYZtzWl0o7D+D8ZhlmiZvABKTEl8AFsqH1GHGdybyoQmw==",
+ "dev": true,
+ "requires": {
+ "eslint-utils": "^3.0.0",
+ "natural-compare": "^1.4.0",
+ "nth-check": "^2.0.1",
+ "postcss-selector-parser": "^6.0.9",
+ "semver": "^7.3.5",
+ "vue-eslint-parser": "^9.0.1",
+ "xml-name-validator": "^4.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ }
+ }
+ },
+ "eslint-scope": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
+ "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ }
+ },
+ "eslint-utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
+ "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^2.0.0"
+ },
+ "dependencies": {
+ "eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
+ "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
+ "dev": true
+ },
+ "espree": {
+ "version": "9.4.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz",
+ "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==",
+ "dev": true,
+ "requires": {
+ "acorn": "^8.8.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.3.0"
+ }
+ },
+ "esquery": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.1.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.2.0"
+ }
+ },
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "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=="
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "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"
+ },
+ "dependencies": {
+ "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"
+ }
+ }
+ }
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "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"
+ }
+ },
+ "file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^3.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"
+ }
+ },
+ "find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "flat-cache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "dev": true,
+ "requires": {
+ "flatted": "^3.1.0",
+ "rimraf": "^3.0.2"
+ }
+ },
+ "flatted": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
+ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
+ "dev": true
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "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
+ },
+ "function.prototype.name": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
+ "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0",
+ "functions-have-names": "^1.2.2"
+ }
+ },
+ "functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true
+ },
+ "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-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ }
+ },
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.3"
+ }
+ },
+ "globals": {
+ "version": "13.17.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
+ "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.20.2"
+ }
+ },
+ "globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "requires": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ }
+ },
+ "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
+ },
+ "grapheme-splitter": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
+ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
+ "dev": true
+ },
+ "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-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true
+ },
+ "has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^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
+ },
+ "has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "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
+ },
+ "hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true
+ },
+ "ignore": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
+ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+ "dev": true
+ },
+ "import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "internal-slot": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
+ "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.1.0",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
+ "is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "requires": {
+ "has-bigints": "^1.0.1"
+ }
+ },
+ "is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true
+ },
+ "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-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "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-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "dev": true
+ },
+ "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
+ },
+ "is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true
+ },
+ "is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-shared-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
+ "is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "js-sdsl": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz",
+ "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "requires": {
+ "argparse": "^2.0.1"
+ }
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ }
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^5.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "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"
+ }
+ },
+ "memorystream": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+ "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
+ "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"
+ }
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "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
+ },
+ "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=="
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "natural-compare-lite": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
+ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "npm-run-all": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
+ "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "chalk": "^2.4.1",
+ "cross-spawn": "^6.0.5",
+ "memorystream": "^0.3.1",
+ "minimatch": "^3.0.4",
+ "pidtree": "^0.3.0",
+ "read-pkg": "^3.0.0",
+ "shell-quote": "^1.6.1",
+ "string.prototype.padend": "^3.0.0"
+ }
+ },
+ "nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0"
+ }
+ },
+ "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
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ },
+ "object.assign": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
+ "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "optionator": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+ "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "dev": true,
+ "requires": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.3"
+ }
+ },
+ "p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "requires": {
+ "yocto-queue": "^0.1.0"
+ }
+ },
+ "p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^3.0.2"
+ }
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true
+ },
+ "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": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "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
+ },
+ "pidtree": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz",
+ "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==",
+ "dev": true
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "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"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "6.0.10",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
+ "dev": true,
+ "requires": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true
+ },
+ "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
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ }
+ },
+ "regexp.prototype.flags": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
+ "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "functions-have-names": "^1.2.2"
+ }
+ },
+ "regexpp": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
+ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
+ "dev": true
+ },
+ "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"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ },
+ "reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "rollup": {
+ "version": "2.79.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
+ "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+ "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"
+ }
+ },
+ "safe-regex-test": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
+ "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "is-regex": "^1.1.4"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true
+ },
+ "shell-quote": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz",
+ "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==",
+ "dev": true
+ },
+ "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"
+ }
+ },
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true
+ },
+ "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=="
+ },
+ "spdx-correct": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+ "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "dev": true,
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.12",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz",
+ "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==",
+ "dev": true
+ },
+ "string.prototype.padend": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz",
+ "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ }
+ },
+ "string.prototype.trimend": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
+ "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ }
+ },
+ "string.prototype.trimstart": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
+ "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "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
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "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"
+ }
+ },
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "tsutils": {
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
+ "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.8.1"
+ }
+ },
+ "type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "^1.2.1"
+ }
+ },
+ "type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true
+ },
+ "typescript": {
+ "version": "4.7.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
+ "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
+ "dev": true
+ },
+ "unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ }
+ },
+ "uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "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
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "vite": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.3.tgz",
+ "integrity": "sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ==",
+ "dev": true,
+ "requires": {
+ "esbuild": "^0.15.9",
+ "fsevents": "~2.3.2",
+ "postcss": "^8.4.18",
+ "resolve": "^1.22.1",
+ "rollup": "^2.79.1"
+ }
+ },
+ "vue": {
+ "version": "3.2.44",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.44.tgz",
+ "integrity": "sha512-nyNtFDh+0TpRgYCUVfPD1mJ9PpIsCPXaOF4DeGNIT5vQ4X23ykflGq3Sy2P+tEt1/pQZxZnAysuRKwyhNj+Cjw==",
+ "requires": {
+ "@vue/compiler-dom": "3.2.44",
+ "@vue/compiler-sfc": "3.2.44",
+ "@vue/runtime-dom": "3.2.44",
+ "@vue/server-renderer": "3.2.44",
+ "@vue/shared": "3.2.44"
+ }
+ },
+ "vue-eslint-parser": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.1.0.tgz",
+ "integrity": "sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.3.4",
+ "eslint-scope": "^7.1.1",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
+ "esquery": "^1.4.0",
+ "lodash": "^4.17.21",
+ "semver": "^7.3.6"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ }
+ }
+ },
+ "vue-router": {
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.6.tgz",
+ "integrity": "sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==",
+ "requires": {
+ "@vue/devtools-api": "^6.4.5"
+ }
+ },
+ "vue-select": {
+ "version": "4.0.0-beta.6",
+ "resolved": "https://registry.npmjs.org/vue-select/-/vue-select-4.0.0-beta.6.tgz",
+ "integrity": "sha512-K+zrNBSpwMPhAxYLTCl56gaMrWZGgayoWCLqe5rWwkB8aUbAUh7u6sXjIR7v4ckp2WKC7zEEUY27g6h1MRsIHw==",
+ "requires": {}
+ },
+ "vue-template-compiler": {
+ "version": "2.7.14",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
+ "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
+ "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"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "requires": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ }
+ },
+ "word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "xml-name-validator": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+ "dev": true
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..f1b3b48
--- /dev/null
+++ b/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "p5rcalc",
+ "version": "0.0.0",
+ "scripts": {
+ "dev": "vite",
+ "build": "run-p type-check build-only",
+ "preview": "vite preview",
+ "build-only": "vite build",
+ "type-check": "vue-tsc --noEmit"
+ },
+ "dependencies": {
+ "vue": "^3.2.41",
+ "vue-router": "^4.1.5",
+ "vue-select": "^4.0.0-beta.6"
+ },
+ "devDependencies": {
+ "@types/node": "^16.11.68",
+ "@vitejs/plugin-vue": "^3.1.2",
+ "@vue/eslint-config-typescript": "^11.0.2",
+ "@vue/tsconfig": "^0.1.3",
+ "eslint": "^8.27.0",
+ "eslint-plugin-vue": "^9.7.0",
+ "npm-run-all": "^4.1.5",
+ "typescript": "~4.7.4",
+ "vite": "^3.1.8",
+ "vue-tsc": "^1.0.8"
+ }
+}
diff --git a/public/assets/icon_ailment.png b/public/assets/icon_ailment.png
new file mode 100644
index 0000000..f8c718e
Binary files /dev/null and b/public/assets/icon_ailment.png differ
diff --git a/public/assets/icon_almighty.png b/public/assets/icon_almighty.png
new file mode 100644
index 0000000..6017f85
Binary files /dev/null and b/public/assets/icon_almighty.png differ
diff --git a/public/assets/icon_bless.png b/public/assets/icon_bless.png
new file mode 100644
index 0000000..131b3ee
Binary files /dev/null and b/public/assets/icon_bless.png differ
diff --git a/public/assets/icon_curse.png b/public/assets/icon_curse.png
new file mode 100644
index 0000000..288f5f0
Binary files /dev/null and b/public/assets/icon_curse.png differ
diff --git a/public/assets/icon_elec.png b/public/assets/icon_elec.png
new file mode 100644
index 0000000..5f6ca20
Binary files /dev/null and b/public/assets/icon_elec.png differ
diff --git a/public/assets/icon_fire.png b/public/assets/icon_fire.png
new file mode 100644
index 0000000..28b4491
Binary files /dev/null and b/public/assets/icon_fire.png differ
diff --git a/public/assets/icon_gun.png b/public/assets/icon_gun.png
new file mode 100644
index 0000000..235eb77
Binary files /dev/null and b/public/assets/icon_gun.png differ
diff --git a/public/assets/icon_healing.png b/public/assets/icon_healing.png
new file mode 100644
index 0000000..96fb277
Binary files /dev/null and b/public/assets/icon_healing.png differ
diff --git a/public/assets/icon_ice.png b/public/assets/icon_ice.png
new file mode 100644
index 0000000..895a6c0
Binary files /dev/null and b/public/assets/icon_ice.png differ
diff --git a/public/assets/icon_nuke.png b/public/assets/icon_nuke.png
new file mode 100644
index 0000000..83da44d
Binary files /dev/null and b/public/assets/icon_nuke.png differ
diff --git a/public/assets/icon_passive.png b/public/assets/icon_passive.png
new file mode 100644
index 0000000..0be4fb9
Binary files /dev/null and b/public/assets/icon_passive.png differ
diff --git a/public/assets/icon_phys.png b/public/assets/icon_phys.png
new file mode 100644
index 0000000..fff3924
Binary files /dev/null and b/public/assets/icon_phys.png differ
diff --git a/public/assets/icon_psy.png b/public/assets/icon_psy.png
new file mode 100644
index 0000000..18cf0ca
Binary files /dev/null and b/public/assets/icon_psy.png differ
diff --git a/public/assets/icon_support.png b/public/assets/icon_support.png
new file mode 100644
index 0000000..6c9c8b0
Binary files /dev/null and b/public/assets/icon_support.png differ
diff --git a/public/assets/icon_trait.png b/public/assets/icon_trait.png
new file mode 100644
index 0000000..90ca706
Binary files /dev/null and b/public/assets/icon_trait.png differ
diff --git a/public/assets/icon_wind.png b/public/assets/icon_wind.png
new file mode 100644
index 0000000..8ae82c5
Binary files /dev/null and b/public/assets/icon_wind.png differ
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000..df36fcf
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/src/Entry.vue b/src/Entry.vue
new file mode 100644
index 0000000..2271c86
--- /dev/null
+++ b/src/Entry.vue
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/assets/icon_ailment.png b/src/assets/icon_ailment.png
new file mode 100644
index 0000000..f8c718e
Binary files /dev/null and b/src/assets/icon_ailment.png differ
diff --git a/src/assets/icon_almighty.png b/src/assets/icon_almighty.png
new file mode 100644
index 0000000..6017f85
Binary files /dev/null and b/src/assets/icon_almighty.png differ
diff --git a/src/assets/icon_bless.png b/src/assets/icon_bless.png
new file mode 100644
index 0000000..131b3ee
Binary files /dev/null and b/src/assets/icon_bless.png differ
diff --git a/src/assets/icon_curse.png b/src/assets/icon_curse.png
new file mode 100644
index 0000000..288f5f0
Binary files /dev/null and b/src/assets/icon_curse.png differ
diff --git a/src/assets/icon_elec.png b/src/assets/icon_elec.png
new file mode 100644
index 0000000..5f6ca20
Binary files /dev/null and b/src/assets/icon_elec.png differ
diff --git a/src/assets/icon_fire.png b/src/assets/icon_fire.png
new file mode 100644
index 0000000..28b4491
Binary files /dev/null and b/src/assets/icon_fire.png differ
diff --git a/src/assets/icon_gun.png b/src/assets/icon_gun.png
new file mode 100644
index 0000000..235eb77
Binary files /dev/null and b/src/assets/icon_gun.png differ
diff --git a/src/assets/icon_healing.png b/src/assets/icon_healing.png
new file mode 100644
index 0000000..96fb277
Binary files /dev/null and b/src/assets/icon_healing.png differ
diff --git a/src/assets/icon_ice.png b/src/assets/icon_ice.png
new file mode 100644
index 0000000..895a6c0
Binary files /dev/null and b/src/assets/icon_ice.png differ
diff --git a/src/assets/icon_nuke.png b/src/assets/icon_nuke.png
new file mode 100644
index 0000000..83da44d
Binary files /dev/null and b/src/assets/icon_nuke.png differ
diff --git a/src/assets/icon_passive.png b/src/assets/icon_passive.png
new file mode 100644
index 0000000..0be4fb9
Binary files /dev/null and b/src/assets/icon_passive.png differ
diff --git a/src/assets/icon_phys.png b/src/assets/icon_phys.png
new file mode 100644
index 0000000..fff3924
Binary files /dev/null and b/src/assets/icon_phys.png differ
diff --git a/src/assets/icon_psy.png b/src/assets/icon_psy.png
new file mode 100644
index 0000000..18cf0ca
Binary files /dev/null and b/src/assets/icon_psy.png differ
diff --git a/src/assets/icon_support.png b/src/assets/icon_support.png
new file mode 100644
index 0000000..6c9c8b0
Binary files /dev/null and b/src/assets/icon_support.png differ
diff --git a/src/assets/icon_trait.png b/src/assets/icon_trait.png
new file mode 100644
index 0000000..90ca706
Binary files /dev/null and b/src/assets/icon_trait.png differ
diff --git a/src/assets/icon_wind.png b/src/assets/icon_wind.png
new file mode 100644
index 0000000..8ae82c5
Binary files /dev/null and b/src/assets/icon_wind.png differ
diff --git a/src/assets/main.css b/src/assets/main.css
new file mode 100644
index 0000000..0af4d15
--- /dev/null
+++ b/src/assets/main.css
@@ -0,0 +1,132 @@
+:root {
+ --color-ui-background: rgba(24, 24, 24, 1);
+ --color-ui-background-faded: rgba(24, 24, 24, 0.7);
+ --color-ui-text: rgba(205, 205, 205, 1);
+ --color-ui-text-faded: rgba(135, 135, 135, 0.9);
+ --color-ui-header: rgba(225, 225, 225, 1);
+
+ --color-ui-dlc: rgba(129, 0, 0, 1);
+ --color-ui-max: rgba(216, 165, 32, 1);
+ --color-ui-treasure: rgba(127, 255, 212, 1);
+}
+
+body {
+ background: var(--color-ui-background);
+ color: var(--color-ui-text);
+ font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu,
+ Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
+ font-size: 15px;
+ line-height: 1.6;
+ min-height: 100vh;
+
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+table {
+ border: 2px solid var(--color-ui-text);
+ border-collapse: collapse;
+}
+
+th, td {
+ border: 1px solid var(--color-ui-text);
+}
+
+th.column-header {
+ background-color: var(--color-ui-header);
+}
+
+thead {
+ background-color: var(--color-ui-text);
+ color: var(--color-ui-background);
+ user-select: none;
+}
+
+.dlc, .dlc * {
+ background-color: var(--color-ui-dlc);
+}
+
+.max, .max * {
+ background-color: var(--color-ui-max);
+ color: var(--color-ui-background);
+}
+
+.treasure, .treasure * {
+ background-color: var(--color-ui-treasure);
+ color: var(--color-ui-background);
+}
+
+.centered {
+ text-align: center;
+}
+
+a, a:hover, a:visited {
+ background-color: inherit;
+ color: inherit;
+ cursor: pointer;
+ font-weight: 700;
+ text-decoration: none;
+}
+
+a.redirect-banner {
+ background-color: var(--color-ui-text);
+ color: var(--color-ui-background);
+ cursor: pointer;
+ display: inline-block;
+ min-width: 100%;
+ user-select: none;
+}
+
+h1#page-title {
+ min-width: 100%;
+ text-align: center;
+ user-select: none;
+}
+
+*:focus-visible {
+ outline: none;
+}
+
+@media (min-width: 1280px) {
+ body {
+ display: flex;
+ place-items: center;
+ }
+
+ #app {
+ max-width: 1024px;
+ margin: 0 auto;
+ padding: 2rem;
+ }
+
+ table {
+ min-width: 100%;
+ margin: 2vh auto;
+ padding: 6px 4px;
+ }
+
+ img.element-icon {
+ width: 2rem;
+ height: auto;
+ margin: 0 4px;
+ padding: 1px;
+ }
+
+ a.redirect-banner {
+ margin: auto;
+ padding: 6px 4px;
+ }
+
+ th.column-stat, td.column-arcana, td.column-name {
+ padding: 4px 8px;
+ }
+
+ td.column-arcana {
+ min-width: 90px;
+ }
+
+ td.column-name {
+ min-width: 200px;
+ }
+}
\ No newline at end of file
diff --git a/src/components/DlcFilterComponent.vue b/src/components/DlcFilterComponent.vue
new file mode 100644
index 0000000..8e5ea14
--- /dev/null
+++ b/src/components/DlcFilterComponent.vue
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/data/combos.ts b/src/data/combos.ts
new file mode 100644
index 0000000..e0124b2
--- /dev/null
+++ b/src/data/combos.ts
@@ -0,0 +1,383 @@
+import { Arcana } from './types';
+import type { PersonaData } from './personas';
+
+export interface ArcanaCombo {
+ parent: [Arcana, Arcana];
+ result: Arcana;
+};
+
+export interface SpecialCombo {
+ parents: string[];
+ result: string;
+};
+
+export const ArcanaCombos: ArcanaCombo [] = [
+ { parent: [Arcana.FOOL, Arcana.FOOL], result: Arcana.FOOL },
+ { parent: [Arcana.FOOL, Arcana.MAGICIAN], result: Arcana.DEATH },
+ { parent: [Arcana.FOOL, Arcana.PRIESTESS], result: Arcana.MOON },
+ { parent: [Arcana.FOOL, Arcana.EMPRESS], result: Arcana.HANGEDMAN },
+ { parent: [Arcana.FOOL, Arcana.EMPEROR], result: Arcana.TEMPERANCE },
+ { parent: [Arcana.FOOL, Arcana.HIEROPHANT], result: Arcana.HERMIT },
+ { parent: [Arcana.FOOL, Arcana.LOVERS], result: Arcana.CHARIOT },
+ { parent: [Arcana.FOOL, Arcana.CHARIOT], result: Arcana.MOON },
+ { parent: [Arcana.FOOL, Arcana.JUSTICE], result: Arcana.STAR },
+ { parent: [Arcana.FOOL, Arcana.HERMIT], result: Arcana.PRIESTESS },
+ { parent: [Arcana.FOOL, Arcana.FORTUNE], result: Arcana.FAITH },
+ { parent: [Arcana.FOOL, Arcana.STRENGTH], result: Arcana.DEATH },
+ { parent: [Arcana.FOOL, Arcana.HANGEDMAN], result: Arcana.TOWER },
+ { parent: [Arcana.FOOL, Arcana.DEATH], result: Arcana.STRENGTH },
+ { parent: [Arcana.FOOL, Arcana.TEMPERANCE], result: Arcana.HIEROPHANT },
+ { parent: [Arcana.FOOL, Arcana.DEVIL], result: Arcana.TEMPERANCE },
+ { parent: [Arcana.FOOL, Arcana.TOWER], result: Arcana.EMPRESS },
+ { parent: [Arcana.FOOL, Arcana.STAR], result: Arcana.MAGICIAN },
+ { parent: [Arcana.FOOL, Arcana.MOON], result: Arcana.JUSTICE },
+ { parent: [Arcana.FOOL, Arcana.SUN], result: Arcana.JUSTICE },
+ { parent: [Arcana.FOOL, Arcana.JUDGEMENT], result: Arcana.SUN },
+ { parent: [Arcana.FOOL, Arcana.FAITH], result: Arcana.COUNCILLOR },
+ { parent: [Arcana.FOOL, Arcana.COUNCILLOR], result: Arcana.HIEROPHANT },
+ { parent: [Arcana.MAGICIAN, Arcana.MAGICIAN], result: Arcana.MAGICIAN },
+ { parent: [Arcana.MAGICIAN, Arcana.PRIESTESS], result: Arcana.TEMPERANCE },
+ { parent: [Arcana.MAGICIAN, Arcana.EMPRESS], result: Arcana.JUSTICE },
+ { parent: [Arcana.MAGICIAN, Arcana.EMPEROR], result: Arcana.FAITH },
+ { parent: [Arcana.MAGICIAN, Arcana.HIEROPHANT], result: Arcana.DEATH },
+ { parent: [Arcana.MAGICIAN, Arcana.LOVERS], result: Arcana.DEVIL },
+ { parent: [Arcana.MAGICIAN, Arcana.CHARIOT], result: Arcana.PRIESTESS },
+ { parent: [Arcana.MAGICIAN, Arcana.JUSTICE], result: Arcana.EMPEROR },
+ { parent: [Arcana.MAGICIAN, Arcana.HERMIT], result: Arcana.LOVERS },
+ { parent: [Arcana.MAGICIAN, Arcana.FORTUNE], result: Arcana.JUSTICE },
+ { parent: [Arcana.MAGICIAN, Arcana.STRENGTH], result: Arcana.FOOL },
+ { parent: [Arcana.MAGICIAN, Arcana.HANGEDMAN], result: Arcana.EMPRESS },
+ { parent: [Arcana.MAGICIAN, Arcana.DEATH], result: Arcana.HERMIT },
+ { parent: [Arcana.MAGICIAN, Arcana.TEMPERANCE], result: Arcana.CHARIOT },
+ { parent: [Arcana.MAGICIAN, Arcana.DEVIL], result: Arcana.HIEROPHANT },
+ { parent: [Arcana.MAGICIAN, Arcana.TOWER], result: Arcana.TEMPERANCE },
+ { parent: [Arcana.MAGICIAN, Arcana.STAR], result: Arcana.PRIESTESS },
+ { parent: [Arcana.MAGICIAN, Arcana.MOON], result: Arcana.LOVERS },
+ { parent: [Arcana.MAGICIAN, Arcana.SUN], result: Arcana.HIEROPHANT },
+ { parent: [Arcana.MAGICIAN, Arcana.JUDGEMENT], result: Arcana.STRENGTH },
+ { parent: [Arcana.MAGICIAN, Arcana.FAITH], result: Arcana.STRENGTH },
+ { parent: [Arcana.MAGICIAN, Arcana.COUNCILLOR], result: Arcana.MOON },
+ { parent: [Arcana.PRIESTESS, Arcana.PRIESTESS], result: Arcana.PRIESTESS },
+ { parent: [Arcana.PRIESTESS, Arcana.EMPRESS], result: Arcana.EMPEROR },
+ { parent: [Arcana.PRIESTESS, Arcana.EMPEROR], result: Arcana.EMPRESS },
+ { parent: [Arcana.PRIESTESS, Arcana.HIEROPHANT], result: Arcana.MAGICIAN },
+ { parent: [Arcana.PRIESTESS, Arcana.LOVERS], result: Arcana.FORTUNE },
+ { parent: [Arcana.PRIESTESS, Arcana.CHARIOT], result: Arcana.HIEROPHANT },
+ { parent: [Arcana.PRIESTESS, Arcana.JUSTICE], result: Arcana.DEATH },
+ { parent: [Arcana.PRIESTESS, Arcana.HERMIT], result: Arcana.TEMPERANCE },
+ { parent: [Arcana.PRIESTESS, Arcana.FORTUNE], result: Arcana.MAGICIAN },
+ { parent: [Arcana.PRIESTESS, Arcana.STRENGTH], result: Arcana.DEVIL },
+ { parent: [Arcana.PRIESTESS, Arcana.HANGEDMAN], result: Arcana.DEATH },
+ { parent: [Arcana.PRIESTESS, Arcana.DEATH], result: Arcana.MAGICIAN },
+ { parent: [Arcana.PRIESTESS, Arcana.TEMPERANCE], result: Arcana.DEVIL },
+ { parent: [Arcana.PRIESTESS, Arcana.DEVIL], result: Arcana.MOON },
+ { parent: [Arcana.PRIESTESS, Arcana.TOWER], result: Arcana.HANGEDMAN },
+ { parent: [Arcana.PRIESTESS, Arcana.STAR], result: Arcana.HERMIT },
+ { parent: [Arcana.PRIESTESS, Arcana.MOON], result: Arcana.HIEROPHANT },
+ { parent: [Arcana.PRIESTESS, Arcana.SUN], result: Arcana.CHARIOT },
+ { parent: [Arcana.PRIESTESS, Arcana.JUDGEMENT], result: Arcana.JUSTICE },
+ { parent: [Arcana.PRIESTESS, Arcana.FAITH], result: Arcana.JUSTICE },
+ { parent: [Arcana.PRIESTESS, Arcana.COUNCILLOR], result: Arcana.FAITH },
+ { parent: [Arcana.EMPRESS, Arcana.EMPRESS], result: Arcana.EMPRESS },
+ { parent: [Arcana.EMPRESS, Arcana.EMPEROR], result: Arcana.JUSTICE },
+ { parent: [Arcana.EMPRESS, Arcana.HIEROPHANT], result: Arcana.FOOL },
+ { parent: [Arcana.EMPRESS, Arcana.LOVERS], result: Arcana.JUDGEMENT },
+ { parent: [Arcana.EMPRESS, Arcana.CHARIOT], result: Arcana.STAR },
+ { parent: [Arcana.EMPRESS, Arcana.JUSTICE], result: Arcana.LOVERS },
+ { parent: [Arcana.EMPRESS, Arcana.HERMIT], result: Arcana.STRENGTH },
+ { parent: [Arcana.EMPRESS, Arcana.FORTUNE], result: Arcana.HERMIT },
+ { parent: [Arcana.EMPRESS, Arcana.STRENGTH], result: Arcana.FAITH },
+ { parent: [Arcana.EMPRESS, Arcana.HANGEDMAN], result: Arcana.PRIESTESS },
+ { parent: [Arcana.EMPRESS, Arcana.DEATH], result: Arcana.FOOL },
+ { parent: [Arcana.EMPRESS, Arcana.TEMPERANCE], result: Arcana.FAITH },
+ { parent: [Arcana.EMPRESS, Arcana.DEVIL], result: Arcana.SUN },
+ { parent: [Arcana.EMPRESS, Arcana.TOWER], result: Arcana.EMPEROR },
+ { parent: [Arcana.EMPRESS, Arcana.STAR], result: Arcana.LOVERS },
+ { parent: [Arcana.EMPRESS, Arcana.MOON], result: Arcana.FORTUNE },
+ { parent: [Arcana.EMPRESS, Arcana.SUN], result: Arcana.TOWER },
+ { parent: [Arcana.EMPRESS, Arcana.JUDGEMENT], result: Arcana.EMPEROR },
+ { parent: [Arcana.EMPRESS, Arcana.FAITH], result: Arcana.MAGICIAN },
+ { parent: [Arcana.EMPRESS, Arcana.COUNCILLOR], result: Arcana.HANGEDMAN },
+ { parent: [Arcana.EMPEROR, Arcana.EMPEROR], result: Arcana.EMPEROR },
+ { parent: [Arcana.EMPEROR, Arcana.HIEROPHANT], result: Arcana.FORTUNE },
+ { parent: [Arcana.EMPEROR, Arcana.LOVERS], result: Arcana.FOOL },
+ { parent: [Arcana.EMPEROR, Arcana.CHARIOT], result: Arcana.FAITH },
+ { parent: [Arcana.EMPEROR, Arcana.JUSTICE], result: Arcana.CHARIOT },
+ { parent: [Arcana.EMPEROR, Arcana.HERMIT], result: Arcana.HIEROPHANT },
+ { parent: [Arcana.EMPEROR, Arcana.FORTUNE], result: Arcana.SUN },
+ { parent: [Arcana.EMPEROR, Arcana.STRENGTH], result: Arcana.TOWER },
+ { parent: [Arcana.EMPEROR, Arcana.HANGEDMAN], result: Arcana.DEVIL },
+ { parent: [Arcana.EMPEROR, Arcana.DEATH], result: Arcana.HERMIT },
+ { parent: [Arcana.EMPEROR, Arcana.TEMPERANCE], result: Arcana.DEVIL },
+ { parent: [Arcana.EMPEROR, Arcana.DEVIL], result: Arcana.JUSTICE },
+ { parent: [Arcana.EMPEROR, Arcana.TOWER], result: Arcana.STAR },
+ { parent: [Arcana.EMPEROR, Arcana.STAR], result: Arcana.LOVERS },
+ { parent: [Arcana.EMPEROR, Arcana.MOON], result: Arcana.TOWER },
+ { parent: [Arcana.EMPEROR, Arcana.SUN], result: Arcana.JUDGEMENT },
+ { parent: [Arcana.EMPEROR, Arcana.JUDGEMENT], result: Arcana.PRIESTESS },
+ { parent: [Arcana.EMPEROR, Arcana.FAITH], result: Arcana.PRIESTESS },
+ { parent: [Arcana.EMPEROR, Arcana.COUNCILLOR], result: Arcana.LOVERS },
+ { parent: [Arcana.HIEROPHANT, Arcana.HIEROPHANT], result: Arcana.HIEROPHANT },
+ { parent: [Arcana.HIEROPHANT, Arcana.LOVERS], result: Arcana.STRENGTH },
+ { parent: [Arcana.HIEROPHANT, Arcana.CHARIOT], result: Arcana.STAR },
+ { parent: [Arcana.HIEROPHANT, Arcana.JUSTICE], result: Arcana.HANGEDMAN },
+ { parent: [Arcana.HIEROPHANT, Arcana.HERMIT], result: Arcana.COUNCILLOR },
+ { parent: [Arcana.HIEROPHANT, Arcana.FORTUNE], result: Arcana.JUSTICE },
+ { parent: [Arcana.HIEROPHANT, Arcana.STRENGTH], result: Arcana.FOOL },
+ { parent: [Arcana.HIEROPHANT, Arcana.HANGEDMAN], result: Arcana.SUN },
+ { parent: [Arcana.HIEROPHANT, Arcana.DEATH], result: Arcana.CHARIOT },
+ { parent: [Arcana.HIEROPHANT, Arcana.TEMPERANCE], result: Arcana.DEATH },
+ { parent: [Arcana.HIEROPHANT, Arcana.DEVIL], result: Arcana.HANGEDMAN },
+ { parent: [Arcana.HIEROPHANT, Arcana.TOWER], result: Arcana.JUDGEMENT },
+ { parent: [Arcana.HIEROPHANT, Arcana.STAR], result: Arcana.TOWER },
+ { parent: [Arcana.HIEROPHANT, Arcana.MOON], result: Arcana.PRIESTESS },
+ { parent: [Arcana.HIEROPHANT, Arcana.SUN], result: Arcana.LOVERS },
+ { parent: [Arcana.HIEROPHANT, Arcana.JUDGEMENT], result: Arcana.FAITH },
+ { parent: [Arcana.HIEROPHANT, Arcana.FAITH], result: Arcana.EMPRESS },
+ { parent: [Arcana.HIEROPHANT, Arcana.COUNCILLOR], result: Arcana.JUSTICE },
+ { parent: [Arcana.LOVERS, Arcana.LOVERS], result: Arcana.LOVERS },
+ { parent: [Arcana.LOVERS, Arcana.CHARIOT], result: Arcana.TEMPERANCE },
+ { parent: [Arcana.LOVERS, Arcana.JUSTICE], result: Arcana.JUDGEMENT },
+ { parent: [Arcana.LOVERS, Arcana.HERMIT], result: Arcana.CHARIOT },
+ { parent: [Arcana.LOVERS, Arcana.FORTUNE], result: Arcana.STRENGTH },
+ { parent: [Arcana.LOVERS, Arcana.STRENGTH], result: Arcana.DEATH },
+ { parent: [Arcana.LOVERS, Arcana.HANGEDMAN], result: Arcana.COUNCILLOR },
+ { parent: [Arcana.LOVERS, Arcana.DEATH], result: Arcana.TEMPERANCE },
+ { parent: [Arcana.LOVERS, Arcana.TEMPERANCE], result: Arcana.STRENGTH },
+ { parent: [Arcana.LOVERS, Arcana.DEVIL], result: Arcana.MOON },
+ { parent: [Arcana.LOVERS, Arcana.TOWER], result: Arcana.EMPRESS },
+ { parent: [Arcana.LOVERS, Arcana.STAR], result: Arcana.FAITH },
+ { parent: [Arcana.LOVERS, Arcana.MOON], result: Arcana.MAGICIAN },
+ { parent: [Arcana.LOVERS, Arcana.SUN], result: Arcana.EMPRESS },
+ { parent: [Arcana.LOVERS, Arcana.JUDGEMENT], result: Arcana.HANGEDMAN },
+ { parent: [Arcana.LOVERS, Arcana.FAITH], result: Arcana.TOWER },
+ { parent: [Arcana.LOVERS, Arcana.COUNCILLOR], result: Arcana.TOWER },
+ { parent: [Arcana.CHARIOT, Arcana.CHARIOT], result: Arcana.CHARIOT },
+ { parent: [Arcana.CHARIOT, Arcana.JUSTICE], result: Arcana.MOON },
+ { parent: [Arcana.CHARIOT, Arcana.HERMIT], result: Arcana.DEVIL },
+ { parent: [Arcana.CHARIOT, Arcana.FORTUNE], result: Arcana.COUNCILLOR },
+ { parent: [Arcana.CHARIOT, Arcana.STRENGTH], result: Arcana.HERMIT },
+ { parent: [Arcana.CHARIOT, Arcana.HANGEDMAN], result: Arcana.FOOL },
+ { parent: [Arcana.CHARIOT, Arcana.DEATH], result: Arcana.DEVIL },
+ { parent: [Arcana.CHARIOT, Arcana.TEMPERANCE], result: Arcana.STRENGTH },
+ { parent: [Arcana.CHARIOT, Arcana.DEVIL], result: Arcana.TEMPERANCE },
+ { parent: [Arcana.CHARIOT, Arcana.TOWER], result: Arcana.FORTUNE },
+ { parent: [Arcana.CHARIOT, Arcana.STAR], result: Arcana.MOON },
+ { parent: [Arcana.CHARIOT, Arcana.MOON], result: Arcana.LOVERS },
+ { parent: [Arcana.CHARIOT, Arcana.SUN], result: Arcana.PRIESTESS },
+ { parent: [Arcana.CHARIOT, Arcana.FAITH], result: Arcana.LOVERS },
+ { parent: [Arcana.CHARIOT, Arcana.COUNCILLOR], result: Arcana.SUN },
+ { parent: [Arcana.JUSTICE, Arcana.JUSTICE], result: Arcana.JUSTICE },
+ { parent: [Arcana.JUSTICE, Arcana.HERMIT], result: Arcana.MAGICIAN },
+ { parent: [Arcana.JUSTICE, Arcana.FORTUNE], result: Arcana.EMPEROR },
+ { parent: [Arcana.JUSTICE, Arcana.STRENGTH], result: Arcana.COUNCILLOR },
+ { parent: [Arcana.JUSTICE, Arcana.HANGEDMAN], result: Arcana.LOVERS },
+ { parent: [Arcana.JUSTICE, Arcana.DEATH], result: Arcana.FOOL },
+ { parent: [Arcana.JUSTICE, Arcana.TEMPERANCE], result: Arcana.EMPEROR },
+ { parent: [Arcana.JUSTICE, Arcana.DEVIL], result: Arcana.FOOL },
+ { parent: [Arcana.JUSTICE, Arcana.TOWER], result: Arcana.SUN },
+ { parent: [Arcana.JUSTICE, Arcana.STAR], result: Arcana.EMPRESS },
+ { parent: [Arcana.JUSTICE, Arcana.MOON], result: Arcana.DEVIL },
+ { parent: [Arcana.JUSTICE, Arcana.SUN], result: Arcana.HANGEDMAN },
+ { parent: [Arcana.JUSTICE, Arcana.FAITH], result: Arcana.HANGEDMAN },
+ { parent: [Arcana.JUSTICE, Arcana.COUNCILLOR], result: Arcana.EMPEROR },
+ { parent: [Arcana.HERMIT, Arcana.HERMIT], result: Arcana.HERMIT },
+ { parent: [Arcana.HERMIT, Arcana.FORTUNE], result: Arcana.STAR },
+ { parent: [Arcana.HERMIT, Arcana.STRENGTH], result: Arcana.HIEROPHANT },
+ { parent: [Arcana.HERMIT, Arcana.HANGEDMAN], result: Arcana.STAR },
+ { parent: [Arcana.HERMIT, Arcana.DEATH], result: Arcana.STRENGTH },
+ { parent: [Arcana.HERMIT, Arcana.TEMPERANCE], result: Arcana.STRENGTH },
+ { parent: [Arcana.HERMIT, Arcana.DEVIL], result: Arcana.PRIESTESS },
+ { parent: [Arcana.HERMIT, Arcana.TOWER], result: Arcana.JUDGEMENT },
+ { parent: [Arcana.HERMIT, Arcana.STAR], result: Arcana.STRENGTH },
+ { parent: [Arcana.HERMIT, Arcana.MOON], result: Arcana.PRIESTESS },
+ { parent: [Arcana.HERMIT, Arcana.SUN], result: Arcana.DEVIL },
+ { parent: [Arcana.HERMIT, Arcana.JUDGEMENT], result: Arcana.EMPEROR },
+ { parent: [Arcana.HERMIT, Arcana.FAITH], result: Arcana.JUDGEMENT },
+ { parent: [Arcana.HERMIT, Arcana.COUNCILLOR], result: Arcana.FAITH },
+ { parent: [Arcana.FORTUNE, Arcana.FORTUNE], result: Arcana.FORTUNE },
+ { parent: [Arcana.FORTUNE, Arcana.STRENGTH], result: Arcana.FAITH },
+ { parent: [Arcana.FORTUNE, Arcana.HANGEDMAN], result: Arcana.EMPEROR },
+ { parent: [Arcana.FORTUNE, Arcana.DEATH], result: Arcana.STAR },
+ { parent: [Arcana.FORTUNE, Arcana.TEMPERANCE], result: Arcana.EMPRESS },
+ { parent: [Arcana.FORTUNE, Arcana.DEVIL], result: Arcana.HIEROPHANT },
+ { parent: [Arcana.FORTUNE, Arcana.TOWER], result: Arcana.HANGEDMAN },
+ { parent: [Arcana.FORTUNE, Arcana.STAR], result: Arcana.DEVIL },
+ { parent: [Arcana.FORTUNE, Arcana.MOON], result: Arcana.SUN },
+ { parent: [Arcana.FORTUNE, Arcana.SUN], result: Arcana.STAR },
+ { parent: [Arcana.FORTUNE, Arcana.JUDGEMENT], result: Arcana.TOWER },
+ { parent: [Arcana.FORTUNE, Arcana.FAITH], result: Arcana.COUNCILLOR },
+ { parent: [Arcana.FORTUNE, Arcana.COUNCILLOR], result: Arcana.JUDGEMENT },
+ { parent: [Arcana.STRENGTH, Arcana.STRENGTH], result: Arcana.STRENGTH },
+ { parent: [Arcana.STRENGTH, Arcana.HANGEDMAN], result: Arcana.TEMPERANCE },
+ { parent: [Arcana.STRENGTH, Arcana.DEATH], result: Arcana.HIEROPHANT },
+ { parent: [Arcana.STRENGTH, Arcana.TEMPERANCE], result: Arcana.CHARIOT },
+ { parent: [Arcana.STRENGTH, Arcana.DEVIL], result: Arcana.DEATH },
+ { parent: [Arcana.STRENGTH, Arcana.TOWER], result: Arcana.FAITH },
+ { parent: [Arcana.STRENGTH, Arcana.STAR], result: Arcana.MOON },
+ { parent: [Arcana.STRENGTH, Arcana.MOON], result: Arcana.MAGICIAN },
+ { parent: [Arcana.STRENGTH, Arcana.SUN], result: Arcana.MOON },
+ { parent: [Arcana.STRENGTH, Arcana.FAITH], result: Arcana.STAR },
+ { parent: [Arcana.STRENGTH, Arcana.COUNCILLOR], result: Arcana.EMPRESS },
+ { parent: [Arcana.HANGEDMAN, Arcana.HANGEDMAN], result: Arcana.HANGEDMAN },
+ { parent: [Arcana.HANGEDMAN, Arcana.DEATH], result: Arcana.MOON },
+ { parent: [Arcana.HANGEDMAN, Arcana.TEMPERANCE], result: Arcana.DEATH },
+ { parent: [Arcana.HANGEDMAN, Arcana.DEVIL], result: Arcana.FORTUNE },
+ { parent: [Arcana.HANGEDMAN, Arcana.TOWER], result: Arcana.HERMIT },
+ { parent: [Arcana.HANGEDMAN, Arcana.STAR], result: Arcana.JUSTICE },
+ { parent: [Arcana.HANGEDMAN, Arcana.MOON], result: Arcana.COUNCILLOR },
+ { parent: [Arcana.HANGEDMAN, Arcana.SUN], result: Arcana.HIEROPHANT },
+ { parent: [Arcana.HANGEDMAN, Arcana.JUDGEMENT], result: Arcana.STAR },
+ { parent: [Arcana.HANGEDMAN, Arcana.FAITH], result: Arcana.DEVIL },
+ { parent: [Arcana.HANGEDMAN, Arcana.COUNCILLOR], result: Arcana.STAR },
+ { parent: [Arcana.DEATH, Arcana.DEATH], result: Arcana.DEATH },
+ { parent: [Arcana.DEATH, Arcana.TEMPERANCE], result: Arcana.HANGEDMAN },
+ { parent: [Arcana.DEATH, Arcana.DEVIL], result: Arcana.CHARIOT },
+ { parent: [Arcana.DEATH, Arcana.TOWER], result: Arcana.SUN },
+ { parent: [Arcana.DEATH, Arcana.STAR], result: Arcana.COUNCILLOR },
+ { parent: [Arcana.DEATH, Arcana.MOON], result: Arcana.HIEROPHANT },
+ { parent: [Arcana.DEATH, Arcana.SUN], result: Arcana.PRIESTESS },
+ { parent: [Arcana.DEATH, Arcana.FAITH], result: Arcana.FOOL },
+ { parent: [Arcana.DEATH, Arcana.COUNCILLOR], result: Arcana.MAGICIAN },
+ { parent: [Arcana.TEMPERANCE, Arcana.TEMPERANCE], result: Arcana.TEMPERANCE },
+ { parent: [Arcana.TEMPERANCE, Arcana.DEVIL], result: Arcana.FOOL },
+ { parent: [Arcana.TEMPERANCE, Arcana.TOWER], result: Arcana.FORTUNE },
+ { parent: [Arcana.TEMPERANCE, Arcana.STAR], result: Arcana.SUN },
+ { parent: [Arcana.TEMPERANCE, Arcana.MOON], result: Arcana.COUNCILLOR },
+ { parent: [Arcana.TEMPERANCE, Arcana.SUN], result: Arcana.MAGICIAN },
+ { parent: [Arcana.TEMPERANCE, Arcana.JUDGEMENT], result: Arcana.HERMIT },
+ { parent: [Arcana.TEMPERANCE, Arcana.FAITH], result: Arcana.HERMIT },
+ { parent: [Arcana.TEMPERANCE, Arcana.COUNCILLOR], result: Arcana.FOOL },
+ { parent: [Arcana.DEVIL, Arcana.DEVIL], result: Arcana.DEVIL },
+ { parent: [Arcana.DEVIL, Arcana.TOWER], result: Arcana.MAGICIAN },
+ { parent: [Arcana.DEVIL, Arcana.STAR], result: Arcana.STRENGTH },
+ { parent: [Arcana.DEVIL, Arcana.MOON], result: Arcana.CHARIOT },
+ { parent: [Arcana.DEVIL, Arcana.SUN], result: Arcana.HERMIT },
+ { parent: [Arcana.DEVIL, Arcana.JUDGEMENT], result: Arcana.LOVERS },
+ { parent: [Arcana.DEVIL, Arcana.FAITH], result: Arcana.CHARIOT },
+ { parent: [Arcana.DEVIL, Arcana.COUNCILLOR], result: Arcana.CHARIOT },
+ { parent: [Arcana.TOWER, Arcana.TOWER], result: Arcana.TOWER },
+ { parent: [Arcana.TOWER, Arcana.STAR], result: Arcana.COUNCILLOR },
+ { parent: [Arcana.TOWER, Arcana.MOON], result: Arcana.HERMIT },
+ { parent: [Arcana.TOWER, Arcana.SUN], result: Arcana.EMPEROR },
+ { parent: [Arcana.TOWER, Arcana.JUDGEMENT], result: Arcana.MOON },
+ { parent: [Arcana.TOWER, Arcana.FAITH], result: Arcana.DEATH },
+ { parent: [Arcana.TOWER, Arcana.COUNCILLOR], result: Arcana.DEATH },
+ { parent: [Arcana.STAR, Arcana.STAR], result: Arcana.STAR },
+ { parent: [Arcana.STAR, Arcana.MOON], result: Arcana.TEMPERANCE },
+ { parent: [Arcana.STAR, Arcana.SUN], result: Arcana.JUDGEMENT },
+ { parent: [Arcana.STAR, Arcana.JUDGEMENT], result: Arcana.FORTUNE },
+ { parent: [Arcana.STAR, Arcana.FAITH], result: Arcana.TEMPERANCE },
+ { parent: [Arcana.STAR, Arcana.COUNCILLOR], result: Arcana.SUN },
+ { parent: [Arcana.MOON, Arcana.MOON], result: Arcana.MOON },
+ { parent: [Arcana.MOON, Arcana.SUN], result: Arcana.EMPRESS },
+ { parent: [Arcana.MOON, Arcana.JUDGEMENT], result: Arcana.FOOL },
+ { parent: [Arcana.MOON, Arcana.FAITH], result: Arcana.SUN },
+ { parent: [Arcana.MOON, Arcana.COUNCILLOR], result: Arcana.TEMPERANCE },
+ { parent: [Arcana.SUN, Arcana.SUN], result: Arcana.SUN },
+ { parent: [Arcana.SUN, Arcana.JUDGEMENT], result: Arcana.DEATH },
+ { parent: [Arcana.SUN, Arcana.FAITH], result: Arcana.EMPEROR },
+ { parent: [Arcana.SUN, Arcana.COUNCILLOR], result: Arcana.FORTUNE },
+ { parent: [Arcana.JUDGEMENT, Arcana.JUDGEMENT], result: Arcana.JUDGEMENT },
+ { parent: [Arcana.JUDGEMENT, Arcana.FAITH], result: Arcana.FORTUNE },
+ { parent: [Arcana.JUDGEMENT, Arcana.COUNCILLOR], result: Arcana.DEVIL },
+ { parent: [Arcana.FAITH, Arcana.FAITH], result: Arcana.FAITH },
+ { parent: [Arcana.FAITH, Arcana.COUNCILLOR], result: Arcana.PRIESTESS },
+ { parent: [Arcana.COUNCILLOR, Arcana.COUNCILLOR], result: Arcana.COUNCILLOR },
+ { parent: [Arcana.WORLD, Arcana.WORLD], result: Arcana.WORLD },
+];
+
+export const SpecialCombos: SpecialCombo [] = [
+ { parents: ['Belial', 'Nebiros'], result: 'Alice' },
+ { parents: ['Shiva', 'Parvati'], result: 'Ardha' },
+ { parents: ['Jikokuten', 'Zouchouten', 'Koumokuten', 'Bishamonten'], result: 'Asura' },
+ { parents: ['Jack-o\'-Lantern', 'Jack Frost', 'King Frost'], result: 'Black Frost' },
+ { parents: ['Pixie', 'Pisaca', 'Hariti'], result: 'Bugs' },
+ { parents: ['White Rider', 'Hecatoncheires', 'Thor', 'Cu Chulainn', 'YoshitSUNe'], result: 'Chi You' },
+ { parents: ['Berith', 'Eligor', 'Orobas'], result: 'Flauros' },
+ { parents: ['Archangel', 'Matador', 'Decarabia'], result: 'Hell Biker' },
+ { parents: ['Yamata-no-Orochi', 'Throne', 'Inugami', 'Raja Naga', 'Barong', 'Norn'], result: 'Izanagi-no-Okami' },
+ { parents: ['Okuninushi', 'Orthrus', 'Kali', 'Mithras', 'Cu Chulainn', 'Lucifer'], result: 'Izanagi-no-Okami Picaro' },
+ { parents: ['Seiryu', 'Byakko', 'Suzaku', 'Genbu'], result: 'Kohryu' },
+ { parents: ['Anubis', 'Ananta', 'Trumpeter', 'Michael', 'Metatron', 'Satan'], result: 'Lucifer' },
+ { parents: ['Principality', 'Power', 'Dominion', 'Melchizedek', 'Sandalphon', 'Michael'], result: 'Metatron' },
+ { parents: ['Gabriel', 'Raphael', 'Uriel'], result: 'Michael' },
+ { parents: ['Kodama', 'Sudama', 'Anzu'], result: 'Neko Shogun' },
+ { parents: ['Kin-Ki', 'Sui-Ki', 'Fuu-Ki'], result: 'Ongyo-Ki' },
+ { parents: ['Arsene', 'Anzu', 'Ishtar', 'Satan', 'Lucifer', 'Michael'], result: 'Satanael' },
+ { parents: ['Isis', 'Anubis', 'Thoth', 'Horus'], result: 'Seth' },
+ { parents: ['Barong', 'Rangda'], result: 'Shiva' },
+ { parents: ['Mithra', 'Mithras', 'Melchizedek', 'Lilith', 'Gabriel'], result: 'Sraosha' },
+ { parents: ['Cait Sith', 'High Pixie', 'Leanan Sidhe'], result: 'Tam Lin' },
+ { parents: ['White Rider', 'Red Rider', 'Black Rider', 'Pale Rider'], result: 'Trumpeter' },
+ { parents: ['Naga', 'Ananta', 'Raja Naga'], result: 'Vasuki' },
+ { parents: ['Shiki-Ouji', 'Arahabaki', 'Okuninushi', 'Yatagarasu', 'FutSUNushi'], result: 'Yoshitsune' },
+];
+
+interface TreasureComboMap {
+ [index: string]: [string, string];
+}
+
+export const TreasureCombos: TreasureComboMap = {
+ ['Kikuri-Hime']: ['Regent', 'Orichalcum'],
+ ['Mithra']: ['Regent', 'Crystal Skull'],
+ ['Kurama Tengu']: ['Regent', 'Hope Diamond'],
+ ['Andras']: ['Regent', 'Emperor\'s Amulet'],
+ ['Belphegor']: ['Regent', 'Orlov'],
+ ['Yaksini']: ['Regent', 'Koh-i-Noor'],
+ ['Suzaku']: ['Regent', 'Stone of Scone'],
+ ['Archangel']: ['Regent', 'Queen\'s Necklace'],
+ ['Queen Mab']: ['Queen\'s Necklace', 'Orichalcum'],
+ ['Hecatoncheires']: ['Queen\'s Necklace', 'Crystal Skull'],
+ ['Orpheus Picaro']: ['Queen\'s Necklace', 'Hope Diamond'],
+ ['Isis']: ['Queen\'s Necklace', 'Emperor\'s Amulet'],
+ ['Unicorn']: ['Queen\'s Necklace', 'Orlov'],
+ ['Setanta']: ['Queen\'s Necklace', 'Koh-i-Noor'],
+ ['Naga']: ['Queen\'s Necklace', 'Stone of Scone'],
+ ['Ananta']: ['Stone of Scone', 'Orichalcum'],
+ ['Unicorn_']: ['Stone of Scone', 'Crystal Skull'],
+ ['Kaiwan']: ['Stone of Scone', 'Hope Diamond'],
+ ['Thoth']: ['Stone of Scone', 'Emperor\'s Amulet'],
+ ['Unicorn__']: ['Stone of Scone', 'Orlov'],
+ ['Sandman']: ['Stone of Scone', 'Koh-i-Noor'],
+ ['Melchizedek']: ['Koh-i-Noor', 'Orichalcum'],
+ ['Girimehkala']: ['Koh-i-Noor', 'Crystal Skull'],
+ ['Queen Mab_']: ['Koh-i-Noor', 'Hope Diamond'],
+ ['Pale Rider']: ['Koh-i-Noor', 'Emperor\'s Amulet'],
+ ['Lilim']: ['Koh-i-Noor', 'Orlov'],
+ ['Garuda']: ['Orlov', 'Orichalcum'],
+ ['Pale Rider_']: ['Orlov', 'Crystal Skull'],
+ ['Daisoujou']: ['Orlov', 'Hope Diamond'],
+ ['Mithra_']: ['Orlov', 'Emperor\'s Amulet'],
+ ['Baphomet']: ['Emperor\'s Amulet', 'Orichalcum'],
+ ['Magatsu-Izanagi']: ['Emperor\'s Amulet', 'Crystal Skull'],
+ ['Girimehkala_']: ['Emperor\'s Amulet', 'Hope Diamond'],
+ ['Raoul']: ['Hope Diamond', 'Orichalcum'],
+ ['Hanuman']: ['Hope Diamond', 'Crystal Skull'],
+ ['Yatagarasu']: ['Crystal Skull', 'Orichalcum'],
+};
+
+export const getSpecialCombo = (result: string): SpecialCombo|undefined => {
+ SpecialCombos.forEach(special => {
+ if (result === special.result)
+ return special;
+ });
+
+ return undefined;
+};
+
+export const getResultArcana = (parent1: PersonaData, parent2: PersonaData): Arcana|undefined => {
+ const arcana1: Arcana = parent1.arcana;
+ const arcana2: Arcana = parent2.arcana;
+
+ if (arcana1 === arcana2)
+ return arcana1;
+
+ ArcanaCombos.forEach(combo => {
+ if ( (arcana1 === combo.parent[0] && arcana2 === combo.parent[1]) ||
+ (arcana2 === combo.parent[0] && arcana1 === combo.parent[1]) )
+ return combo.result;
+ });
+
+ return undefined;
+};
\ No newline at end of file
diff --git a/src/data/fusion.ts b/src/data/fusion.ts
new file mode 100644
index 0000000..5b4c3f8
--- /dev/null
+++ b/src/data/fusion.ts
@@ -0,0 +1,301 @@
+import { getKeyOfValue } from '@/helpers';
+import { ArcanaCombos, type ArcanaCombo, SpecialCombos, type SpecialCombo, TreasureCombos } from './combos';
+import { Personas, type PersonaData, TreasureModifiers, TreasurePersonas,
+ getPersonaApproxCost, getAllPersonasOfArcana, personaHasSkill, getPersonaSkillLevel } from './personas';
+import { Skills, type SkillData } from './skills';
+import { Arcana, Element } from './types';
+
+type FusionRecipeParents = [ PersonaData, PersonaData, PersonaData?, PersonaData?, PersonaData?, PersonaData? ];
+export interface FusionRecipe {
+ result: PersonaData;
+ parents: FusionRecipeParents;
+ complete: boolean;
+};
+
+const NO_PERSONA: PersonaData = {
+ name: '', level: 0, currentLevel: 0, arcana: Arcana.WORLD,
+ stats: [], affinities: [], inherits: [], skills: [],
+};
+const NO_RECIPES: FusionRecipe[] = [] as FusionRecipe[];
+const ALWAYS_INHERITED: Element[] = [ Element.SUPPORT, Element.ALMIGHTY, Element.PASSIVE, Element.TRAIT ];
+
+export const removeAlreadyOwnedSkills = (persona: PersonaData, skills: SkillData[]): SkillData[] => {
+ persona.skills.forEach(skill => {
+ if (skills.includes(Skills[skill[0]]))
+ skills.splice(skills.findIndex(s => s.name === skill[0]), 1);
+ });
+
+ return skills;
+}
+
+export const getRecipeApproxCost = (recipe: FusionRecipe|undefined): number => {
+ if (!recipe)
+ return 0;
+
+ let cost: number = 0;
+ recipe.parents.forEach(parent => {
+ if (parent)
+ cost += getPersonaApproxCost(parent);
+ });
+
+ return cost;
+}
+const RECIPE_COST_SORT = (a: FusionRecipe, b: FusionRecipe): number => getRecipeApproxCost(a) - getRecipeApproxCost(b);
+const RECIPE_COMPLETE_SORT = (a: FusionRecipe, b: FusionRecipe): number => {
+ const aComplete = a.complete ? -1 : 1;
+ const bComplete = b.complete ? -1 : 1;
+
+ return aComplete - bComplete;
+}
+
+const listContainsNormalCombo = (list: FusionRecipe[], parent1: PersonaData, parent2: PersonaData): boolean => {
+ if (0 === list.length)
+ return false;
+
+ let alreadyContains: boolean = false;
+ list.forEach(combo => {
+ if (!combo.parents[0] || !combo.parents[1])
+ return;
+
+ if ( (combo.parents[0].name === parent1.name && combo.parents[1].name === parent2.name) ||
+ (combo.parents[1].name === parent1.name && combo.parents[0].name === parent2.name) )
+ alreadyContains = true;
+ });
+
+
+ return alreadyContains;
+};
+
+const getSiblingModifier = (arcana: Arcana, treasureName?: string): number =>
+ treasureName ? TreasureModifiers[arcana][TreasurePersonas.findIndex(t => t === treasureName)] : 0;
+
+const getValidSpecialRecipe = (result: PersonaData): FusionRecipe[] => {
+ let combo: SpecialCombo|undefined = undefined;
+ SpecialCombos.forEach(s => {
+ if (s.result === result.name)
+ combo = s;
+ });
+
+ if (!combo)
+ return NO_RECIPES;
+
+ const recipe: FusionRecipe = { result, parents: [ NO_PERSONA, NO_PERSONA ], complete: false };
+ const names: string[] = (combo as SpecialCombo).parents;
+ names.forEach( (name, idx) => recipe.parents[idx] = Personas[name] );
+
+ return [ recipe ];
+}
+
+const getValidNormalRecipes = (result: PersonaData, lockedDlc?: string[]): FusionRecipe[] => {
+ const arcanaCombos: ArcanaCombo[] = [];
+ ArcanaCombos.forEach(combo => {
+ if (result.arcana === combo.result)
+ arcanaCombos.push(combo);
+ });
+
+ const siblingPersonas = getAllPersonasOfArcana(result.arcana, lockedDlc);
+ const selfIdx = siblingPersonas.findIndex(sibling => sibling.name === result.name);
+ siblingPersonas.splice(selfIdx, 1);
+
+ const recipes: FusionRecipe[] = [];
+ arcanaCombos.forEach(combo => {
+ const parent1Personas = getAllPersonasOfArcana(combo.parent[0], lockedDlc);
+ const parent2Personas = getAllPersonasOfArcana(combo.parent[1], lockedDlc);
+
+ parent1Personas.forEach(parent1 => {
+ if (parent1.name === result.name)
+ return;
+
+ parent2Personas.forEach(parent2 => {
+ if (parent2.name === result.name)
+ return;
+
+ let siblingModifier: number = 0;
+ if (parent1.treasure || parent2.treasure) {
+ if (parent1.treasure && parent2.treasure) {
+ const treasureResult = getKeyOfValue(TreasureCombos, [ parent1.name, parent2.name ]);
+ if (treasureResult && result.name === treasureResult.replaceAll('_', ''))
+ {
+ recipes.push({ result, parents: [ parent1, parent2 ], complete: false });
+ return;
+ }
+ }
+ else if (parent1.treasure)
+ siblingModifier = getSiblingModifier(result.arcana, parent1.name);
+ else if (parent2.treasure)
+ siblingModifier = getSiblingModifier(result.arcana, parent2.name);
+ }
+
+ const siblingLower = siblingPersonas[Math.max(selfIdx + siblingModifier - 1, 0)];
+ let siblingUpper: PersonaData|undefined = siblingPersonas[Math.min(selfIdx + siblingModifier, siblingPersonas.length - 1)];
+
+ if (siblingLower === siblingUpper)
+ siblingUpper = undefined;
+
+ const parentAverageLevel = Math.floor((parent1.level + parent2.level) >> 1);
+ const levelDelta = Math.abs(result.level - parentAverageLevel);
+ const levelDeltaLower = Math.abs((siblingLower ? siblingLower.level : 101) - parentAverageLevel);
+ const levelDeltaUpper = Math.abs((siblingUpper ? siblingUpper.level : 101) - parentAverageLevel);
+
+ if (levelDelta < levelDeltaLower && levelDelta < levelDeltaUpper &&
+ !listContainsNormalCombo(recipes, parent1, parent2))
+ recipes.push({ result, parents: [ parent1, parent2 ], complete: false });
+ });
+ });
+ });
+
+ return recipes;
+}
+
+export const getValidRecipes = (result: PersonaData, skills?: SkillData[], lockedDlc?: string[], grandparentCheck: boolean = true): FusionRecipe[] => {
+ if (result.treasure)
+ return NO_RECIPES;
+
+ const allRecipes = result.special ? getValidSpecialRecipe(result) : getValidNormalRecipes(result, lockedDlc);
+
+ if (!skills || 0 === skills.length) {
+ allRecipes.forEach(recipe => {
+ recipe.complete = true;
+ recipe.parents.forEach(parent => {
+ if (parent)
+ parent.currentLevel = parent.level;
+ });
+ });
+
+ return allRecipes.sort(RECIPE_COST_SORT);
+ } else if (skills && 0 < skills.length) {
+ skills = removeAlreadyOwnedSkills(result, skills);
+
+ let failure: boolean = false;
+ skills.forEach(skill => {
+ if (skill.unique || ![ ...result.inherits, ...ALWAYS_INHERITED ].includes(skill.element)) {
+ failure = true;
+ return;
+ }
+ });
+
+ if (failure)
+ return NO_RECIPES;
+
+ allRecipes.forEach(recipe => {
+ const mods: [ string, number ][][] = [];
+ skills?.forEach((skill, idx) => {
+ recipe.parents.forEach(parent => {
+ if (!parent)
+ return;
+
+ if (!mods[idx])
+ mods[idx] = [];
+
+ if (personaHasSkill(parent, skill))
+ mods[idx].push([ parent.name, getPersonaSkillLevel(parent, skill) - parent.level ]);
+ });
+ });
+
+ recipe.complete = true;
+ mods.forEach(mod => {
+ if (!recipe.complete)
+ return;
+
+ if (0 === mod.length)
+ recipe.complete = false;
+ });
+
+ if (recipe.complete)
+ {
+ const checked: boolean[] = [];
+ mods.forEach((mod, idx) => {
+ mod.sort((a, b) => a[1] - b[1]);
+ checked[idx] = false;
+ });
+
+ recipe.parents.forEach(parent => {
+ if (!parent)
+ return;
+
+ let levelDelta: number = 0;
+ mods.forEach((mod, idx) => {
+ if (parent.name !== mod[0][0])
+ return;
+
+ if (!checked[idx]) {
+ levelDelta = Math.max(0, mod[0][1]);
+ checked[idx] = true;
+ }
+ });
+
+ parent.currentLevel = parent.level + levelDelta;
+ });
+
+ if (!recipe.parents[0] || !recipe.parents[1])
+ return;
+
+ if (recipe.parents[0] === recipe.parents[1])
+ return;
+
+ let siblingModifier: number = 0;
+ let parent1Level: number = recipe.parents[0].level;
+ let parent2Level: number = recipe.parents[1].level;
+
+ if (recipe.parents[0].treasure)
+ {
+ siblingModifier = getSiblingModifier(result.arcana, recipe.parents[0].name);
+ parent2Level = recipe.parents[1].currentLevel;
+ }
+
+ if (recipe.parents[1].treasure)
+ {
+ siblingModifier = getSiblingModifier(result.arcana, recipe.parents[1].name);
+ parent1Level = recipe.parents[0].currentLevel;
+ }
+
+ const siblingPersonas = getAllPersonasOfArcana(result.arcana, lockedDlc);
+ const selfIdx = siblingPersonas.findIndex(sibling => sibling.name === result.name);
+ siblingPersonas.splice(selfIdx, 1);
+
+ const siblingLower = siblingPersonas[Math.max(selfIdx + siblingModifier - 1, 0)];
+ let siblingUpper: PersonaData|undefined = siblingPersonas[Math.min(selfIdx + siblingModifier, siblingPersonas.length - 1)];
+
+ if (siblingLower === siblingUpper)
+ siblingUpper = undefined;
+
+ const parentAverageLevel = Math.floor((parent1Level + parent2Level) >> 1);
+ const levelDelta = Math.abs(result.level - parentAverageLevel);
+ const levelDeltaLower = Math.abs((siblingLower ? siblingLower.level : 101) - parentAverageLevel);
+ const levelDeltaUpper = Math.abs((siblingUpper ? siblingUpper.level : 101) - parentAverageLevel);
+
+ if (levelDelta > levelDeltaLower || levelDelta > levelDeltaUpper)
+ allRecipes.splice(allRecipes.findIndex(__ =>
+ __.parents[0].name === recipe.parents[0].name &&
+ __.parents[1].name === recipe.parents[1].name
+ ), 1);
+ } else {
+ const completable = [] as boolean[];
+ recipe.parents.forEach(parent => {
+ if (!parent || parent.treasure)
+ return;
+
+ skills?.forEach((skill, idx) => {
+ if ([ ...parent.inherits, ...ALWAYS_INHERITED ].includes(skill.element))
+ completable[idx] = true;
+ });
+ });
+
+ if (completable.includes(false))
+ {
+ allRecipes.splice(allRecipes.findIndex(__ =>
+ __.parents[0].name === recipe.parents[0].name &&
+ __.parents[1].name === recipe.parents[1].name
+ ), 1);
+ return;
+ }
+ }
+ });
+
+ return allRecipes
+ .sort(RECIPE_COST_SORT)
+ .sort(RECIPE_COMPLETE_SORT);
+ }
+
+ return NO_RECIPES;
+}
\ No newline at end of file
diff --git a/src/data/personas.ts b/src/data/personas.ts
new file mode 100644
index 0000000..01216b2
--- /dev/null
+++ b/src/data/personas.ts
@@ -0,0 +1,4316 @@
+import type { SkillData } from './skills';
+import { Affinity, Arcana, Element, InheritanceType } from './types';
+
+export interface PersonaData {
+ name: string;
+ arcana: Arcana;
+ level: number;
+ currentLevel: number;
+ stats: number [];
+ affinities: Affinity [];
+
+ inherits: Element [];
+ skills: [string, number][];
+ trait?: string;
+
+ dlc?: boolean;
+ max?: boolean;
+ special?: boolean;
+ treasure?: boolean;
+}
+
+interface PersonaMap {
+ [index: string]: PersonaData;
+}
+
+export const Personas: PersonaMap = {
+ 'Abaddon': {
+ name: 'Abaddon',
+ inherits: InheritanceType[Element.CURSE],
+ level: 75,
+ currentLevel: 75,
+ arcana: Arcana.JUDGEMENT,
+ affinities: [Affinity.ABSORB, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.ABSORB],
+ skills: [
+ ['Mabufudyne', 0],
+ ['Megaton Raid', 0],
+ ['Enduring Soul', 0],
+ ['Flash Bomb', 78],
+ ['Ailment Boost', 79],
+ ['Absorb Phys', 80],
+ ['Gigantomachia', 81]
+ ],
+ stats: [51, 42, 58, 38, 43],
+ trait: 'Mouth of Savoring'
+ },
+ 'Agathion': {
+ name: 'Agathion',
+ inherits: InheritanceType[Element.ELEC],
+ level: 3,
+ currentLevel: 3,
+ arcana: Arcana.CHARIOT,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Dia', 0], ['Baisudi', 0], ['Lunge', 4], ['Rakukaja', 6], ['Zio', 7], ['Dodge Elec', 8] ],
+ stats: [3, 4, 5, 7, 3],
+ trait: 'Rare Antibody'
+ },
+ 'Alice': {
+ name: 'Alice',
+ special: true,
+ inherits: InheritanceType[Element.CURSE],
+ level: 83,
+ currentLevel: 83,
+ arcana: Arcana.DEATH,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.RESIST, Affinity.WEAK, Affinity.REPEL],
+ skills: [
+ ['Mamudoon', 0],
+ ['Mudo Boost', 0],
+ ['Maeigaon', 0],
+ ['Die For Me!', 85],
+ ['Megidolaon', 86],
+ ['Concentrate', 87],
+ ['Survival Trick', 88]
+ ],
+ stats: [45, 61, 49, 54, 47],
+ trait: 'Just Die',
+ 'max': true
+ },
+ 'Alilat': {
+ name: 'Alilat',
+ inherits: InheritanceType[Element.ICE],
+ level: 81,
+ currentLevel: 81,
+ arcana: Arcana.EMPRESS,
+ affinities: [Affinity.REPEL, Affinity.REPEL, Affinity.WEAK, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK],
+ skills: [
+ ['Diamond Dust', 0],
+ ['Marakukaja', 0],
+ ['Freeze Boost', 0],
+ ['Mabufudyne', 82],
+ ['Concentrate', 83],
+ ['Auto-Maraku', 85],
+ ['Ice Amp', 86],
+ ['Ice Age', 87]
+ ],
+ stats: [45, 54, 57, 49, 45],
+ trait: 'Frigid Bloodline',
+ },
+ 'Ame-no-Uzume': {
+ name: 'Ame-no-Uzume',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 13,
+ currentLevel: 13,
+ arcana: Arcana.LOVERS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Mazio', 0], ['Magaru', 0], ['Media', 0], ['Nocturnal Flash', 15], ['Baisudi', 16], ['Divine Grace', 18] ],
+ stats: [7, 10, 9, 11, 9],
+ trait: 'Electric Bloodline'
+ },
+ 'Ananta': {
+ name: 'Ananta',
+ inherits: InheritanceType[Element.NUKE],
+ level: 44,
+ currentLevel: 44,
+ arcana: Arcana.COUNCILLOR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Mafreila', 0],
+ ['Defense Master', 0],
+ ['Elec Wall', 0],
+ ['Abysmal Surge', 46],
+ ['Growth 2', 47],
+ ['Marakukaja', 48],
+ ['Freidyne', 49],
+ ['Nuke Boost', 50]
+ ],
+ stats: [26, 30, 31, 27, 25],
+ trait: 'Atomic Bloodline'
+ },
+ 'Andras': {
+ name: 'Andras',
+ inherits: InheritanceType[Element.ICE],
+ level: 27,
+ currentLevel: 27,
+ arcana: Arcana.DEVIL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [
+ ['Foul Breath', 0],
+ ['Terror Claw', 0],
+ ['Evil Touch', 28],
+ ['Fear Boost', 29],
+ ['Rakunda', 31],
+ ['Ghastly Wail', 32]
+ ],
+ stats: [15, 19, 19, 21, 14],
+ trait: 'Foul Odor'
+ },
+ 'Angel': {
+ name: 'Angel',
+ inherits: InheritanceType[Element.BLESS],
+ level: 9,
+ currentLevel: 9,
+ arcana: Arcana.JUSTICE,
+ affinities: [Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK],
+ skills: [ ['Kouha', 0], ['Makajam', 0], ['Dia', 0], ['Baisudi', 10], ['Dodge Curse', 11], ['Dekunda', 12] ],
+ stats: [6, 9, 5, 9, 5],
+ trait: 'Skillful Combo'
+ },
+ 'Anubis': {
+ name: 'Anubis',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 34,
+ currentLevel: 34,
+ arcana: Arcana.JUDGEMENT,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NULL, Affinity.NULL],
+ skills: [ ['Hamaon', 0], ['Mudoon', 0], ['Makouga', 0], ['Maeiga', 36], ['Dekunda', 37], ['Resist Bless', 38] ],
+ stats: [19, 24, 22, 21, 23],
+ trait: 'DEATHly Illness'
+ },
+ 'Anzu': {
+ name: 'Anzu',
+ inherits: InheritanceType[Element.WIND],
+ level: 25,
+ currentLevel: 25,
+ arcana: Arcana.HIEROPHANT,
+ affinities: [Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.REPEL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Garula', 0], ['Masukukaja', 0], ['Wind Break', 0], ['Assault Dive', 27], ['Dekaja', 28], ['Null Forget', 29] ],
+ stats: [14, 18, 15, 21, 14],
+ trait: 'Wind Bloodline'
+ },
+ 'Apsaras': {
+ name: 'Apsaras',
+ inherits: InheritanceType[Element.ICE],
+ level: 11,
+ currentLevel: 11,
+ arcana: Arcana.PRIESTESS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Rebellion', 0], ['Ice Wall', 0], ['Bufu', 0], ['Media', 13], ['Elec Wall', 14], ['Wind Wall', 16] ],
+ stats: [7, 11, 6, 10, 6],
+ trait: 'Internal Hypnosis'
+ },
+ 'Ara Mitama': {
+ name: 'Ara Mitama',
+ inherits: InheritanceType[Element.NUKE],
+ level: 30,
+ currentLevel: 30,
+ arcana: Arcana.CHARIOT,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Miracle Punch', 0],
+ ['Freila', 0],
+ ['Taunt', 0],
+ ['Rebellion', 31],
+ ['Marakunda', 32],
+ ['Rage Boost', 34],
+ ['Matarukaja', 35]
+ ],
+ stats: [20, 18, 20, 20, 19],
+ trait: 'Atomic Bloodline'
+ },
+ 'Arahabaki': {
+ name: 'Arahabaki',
+ inherits: InheritanceType[Element.AILMENT],
+ level: 35,
+ currentLevel: 35,
+ arcana: Arcana.HERMIT,
+ affinities: [Affinity.REPEL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.WEAK, Affinity.RESIST, Affinity.RESIST],
+ skills: [
+ ['Makarakarn', 0],
+ ['Abysmal Surge', 0],
+ ['Null Brainwash', 0],
+ ['Spirit Drain', 37],
+ ['Flash Bomb', 38],
+ ['Defense Master', 39]
+ ],
+ stats: [21, 23, 22, 24, 22],
+ trait: 'Immunity'
+ },
+ 'Archangel': {
+ name: 'Archangel',
+ inherits: InheritanceType[Element.BLESS],
+ level: 14,
+ currentLevel: 14,
+ arcana: Arcana.JUSTICE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK],
+ skills: [ ['Giant Slice', 0], ['Dazzler', 0], ['Hama', 0], ['Rebellion', 16], ['Power Slash', 17], ['Vajra Blast', 19] ],
+ stats: [11, 9, 10, 12, 7],
+ trait: 'Skillful Combo'
+ },
+ 'Ardha': {
+ name: 'Ardha',
+ special: true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 84,
+ currentLevel: 84,
+ arcana: Arcana.TEMPERANCE,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['God\'s Hand', 0],
+ ['Cosmic Flare', 0],
+ ['Invigorate 3', 0],
+ ['Agneyastra', 87],
+ ['Auto-Masuku', 88],
+ ['Fortified Moxy', 89],
+ ['Salvation', 90]
+ ],
+ stats: [54, 56, 55, 54, 40],
+ trait: 'Naranari',
+ 'max': true
+ },
+ 'Arsene': {
+ name: 'Arsene',
+ inherits: InheritanceType[Element.CURSE],
+ level: 1,
+ currentLevel: 1,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST],
+ skills: [ ['Eiha', 0], ['Cleave', 2], ['Sukunda', 4], ['Dream Needle', 5], ['Adverse Resolve', 7] ],
+ stats: [2, 2, 2, 3, 1],
+ trait: 'Pinch Anchor'
+ },
+ 'Asura': {
+ name: 'Asura',
+ special: true,
+ inherits: InheritanceType[Element.NUKE],
+ level: 76,
+ currentLevel: 76,
+ arcana: Arcana.SUN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Atomic Flare', 0],
+ ['Mahamaon', 0],
+ ['Marakukaja', 0],
+ ['Auto-Mataru', 78],
+ ['Mafreidyne', 79],
+ ['High Counter', 80],
+ ['Unshaken Will', 81]
+ ],
+ stats: [52, 48, 51, 49, 35],
+ trait: 'Atomic Hellscape',
+ 'max': true
+ },
+ 'Atavaka': {
+ name: 'Atavaka',
+ inherits: InheritanceType[Element.PHYS],
+ level: 65,
+ currentLevel: 65,
+ arcana: Arcana.FAITH,
+ affinities: [Affinity.RESIST, Affinity.NULL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST],
+ skills: [
+ ['Maragidyne', 0],
+ ['Oni Kagura', 0],
+ ['Mediarahan', 0],
+ ['High Counter', 67],
+ ['Samarecarm', 68],
+ ['Brave Blade', 70],
+ ['Attack Master', 71]
+ ],
+ stats: [51, 36, 43, 38, 34],
+ trait: 'Savior Bloodline'
+ },
+ 'Atropos': {
+ name: 'Atropos',
+ inherits: InheritanceType[Element.ELEC],
+ level: 39,
+ currentLevel: 39,
+ arcana: Arcana.FORTUNE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Mazionga', 0],
+ ['Fire Wall', 0],
+ ['Elec Break', 0],
+ ['Mediarama', 41],
+ ['Elec Boost', 42],
+ ['Ziodyne', 44],
+ ['Concentrate', 45]
+ ],
+ stats: [23, 30, 22, 27, 22],
+ trait: 'Mighty Gaze'
+ },
+ 'Attis': {
+ name: 'Attis',
+ inherits: InheritanceType[Element.FIRE],
+ level: 82,
+ currentLevel: 82,
+ arcana: Arcana.HANGEDMAN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK],
+ skills: [
+ ['Maragidyne', 0],
+ ['Salvation', 0],
+ ['Thermopylae', 0],
+ ['Enduring Soul', 84],
+ ['Samarecarm', 85],
+ ['Absorb Curse', 86],
+ ['Blazing Hell', 88]
+ ],
+ stats: [49, 50, 48, 54, 52],
+ trait: 'Vitality of the Tree',
+ 'max': true
+ },
+ 'Baal': {
+ name: 'Baal',
+ inherits: InheritanceType[Element.WIND],
+ level: 82,
+ currentLevel: 82,
+ arcana: Arcana.EMPEROR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL],
+ skills: [
+ ['Panta Rhei', 0],
+ ['Revolution', 0],
+ ['Matarukaja', 0],
+ ['Ayamur', 84],
+ ['Tetraja', 85],
+ ['Charge', 86],
+ ['Vacuum Wave', 87]
+ ],
+ stats: [54, 58, 53, 47, 41],
+ trait: 'Wind Bloodline'
+ },
+ 'Baphomet': {
+ name: 'Baphomet',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 58,
+ currentLevel: 58,
+ arcana: Arcana.DEVIL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [
+ ['Agidyne', 0],
+ ['Evade Fire', 0],
+ ['Burn Boost', 0],
+ ['Bufudyne', 59],
+ ['Ziodyne', 61],
+ ['Shock Boost', 62],
+ ['Freeze Boost', 63]
+ ],
+ stats: [34, 42, 36, 38, 31],
+ trait: 'Thermal Conduct'
+ },
+ 'Barong': {
+ name: 'Barong',
+ inherits: InheritanceType[Element.ELEC],
+ level: 52,
+ currentLevel: 52,
+ arcana: Arcana.EMPEROR,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK],
+ skills: [ ['Ziodyne', 0], ['Wage War', 0], ['Invigorate 2', 0], ['Elec Break', 54], ['Null Elec', 55], ['Maziodyne', 57] ],
+ stats: [33, 35, 33, 37, 25],
+ trait: 'Blessed Bloodline'
+ },
+ 'Beelzebub': {
+ name: 'Beelzebub',
+ inherits: InheritanceType[Element.CURSE],
+ level: 87,
+ currentLevel: 87,
+ arcana: Arcana.DEVIL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.REPEL],
+ skills: [
+ ['Maeigaon', 0],
+ ['Mamudoon', 0],
+ ['Evil Smile', 0],
+ ['Curse Amp', 88],
+ ['Concentrate', 89],
+ ['Demonic Decree', 90],
+ ['Repel Ice', 91],
+ ['Megidolaon', 92]
+ ],
+ stats: [55, 61, 54, 56, 42],
+ trait: 'Mother\'s Lament',
+ 'max': true
+ },
+ 'Belial': {
+ name: 'Belial',
+ inherits: InheritanceType[Element.CURSE],
+ level: 82,
+ currentLevel: 82,
+ arcana: Arcana.DEVIL,
+ affinities: [Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL],
+ skills: [
+ ['Eigaon', 0],
+ ['Bloodbath', 0],
+ ['Curse Amp', 0],
+ ['Maeigaon', 84],
+ ['Fear Boost', 85],
+ ['Mamudoon', 86],
+ ['Demonic Decree', 88]
+ ],
+ stats: [52, 53, 51, 48, 49],
+ trait: 'Bloodstained Eyes'
+ },
+ 'Belphegor': {
+ name: 'Belphegor',
+ inherits: InheritanceType[Element.ICE],
+ level: 37,
+ currentLevel: 37,
+ arcana: Arcana.TOWER,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.REPEL],
+ skills: [ ['Mabufula', 0], ['Ice Break', 0], ['Null Rage', 38], ['Dodge Fire', 39], ['Bufudyne', 41], ['Concentrate', 42] ],
+ stats: [25, 27, 24, 23, 19],
+ trait: 'Intense Focus'
+ },
+ 'Berith': {
+ name: 'Berith',
+ inherits: InheritanceType[Element.PHYS],
+ level: 9,
+ currentLevel: 9,
+ arcana: Arcana.HIEROPHANT,
+ affinities: [Affinity.NEUTRAL, Affinity.NULL, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Cleave', 0], ['Rakukaja', 0], ['Tarukaja', 10], ['Dodge Fire', 11], ['Power Slash', 13] ],
+ stats: [9, 6, 8, 8, 3],
+ trait: 'Crisis Control'
+ },
+ 'Bicorn': {
+ name: 'Bicorn',
+ inherits: InheritanceType[Element.WIND],
+ level: 4,
+ currentLevel: 4,
+ arcana: Arcana.HERMIT,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST],
+ skills: [ ['Lunge', 0], ['Tarunda', 0], ['Garu', 6], ['Ice Wall', 7], ['Apt Pupil', 8] ],
+ stats: [5, 3, 3, 5, 3],
+ trait: 'Striking Weight'
+ },
+ 'Bishamonten': {
+ name: 'Bishamonten',
+ inherits: InheritanceType[Element.NUKE],
+ level: 67,
+ currentLevel: 67,
+ arcana: Arcana.HIEROPHANT,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.RESIST],
+ skills: [
+ ['Freidyne', 0],
+ ['Diarahan', 0],
+ ['Deadly Fury', 0],
+ ['Mafreidyne', 69],
+ ['Nuke Amp', 71],
+ ['Tetrakarn', 72],
+ ['God\'s Hand', 73]
+ ],
+ stats: [51, 37, 42, 44, 34],
+ trait: 'Savior Bloodline'
+ },
+ 'Black Frost': {
+ name: 'Black Frost',
+ special: true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 67,
+ currentLevel: 67,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.REPEL],
+ skills: [
+ ['Mabufudyne', 0],
+ ['One-shot Kill', 0],
+ ['Miracle Punch', 0],
+ ['Ice Amp', 68],
+ ['Freeze Boost', 70],
+ ['Repel Fire', 71],
+ ['Diamond Dust', 72]
+ ],
+ stats: [44, 46, 41, 42, 35],
+ trait: 'Frigid Bloodline'
+ },
+ 'Black Ooze': {
+ name: 'Black Ooze',
+ inherits: InheritanceType[Element.CURSE],
+ level: 18,
+ currentLevel: 18,
+ arcana: Arcana.MOON,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [
+ ['Sledgehammer', 0],
+ ['Evil Touch', 0],
+ ['Foul Breath', 0],
+ ['Ambient Aid', 20],
+ ['Headbutt', 21],
+ ['Brain Jack', 23],
+ ['Flash Bomb', 24]
+ ],
+ stats: [15, 7, 16, 8, 15],
+ trait: 'Rare Antibody'
+ },
+ 'Black Rider': {
+ name: 'Black Rider',
+ inherits: InheritanceType[Element.CURSE],
+ level: 59,
+ currentLevel: 59,
+ arcana: Arcana.TOWER,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.RESIST],
+ skills: [
+ ['Mamudoon', 0],
+ ['Flash Bomb', 0],
+ ['Maeigaon', 0],
+ ['Ambient Aid', 60],
+ ['Bloodbath', 61],
+ ['Ghastly Wail', 63],
+ ['Megidola', 64]
+ ],
+ stats: [36, 42, 34, 42, 30],
+ trait: 'Gloomy Child'
+ },
+ 'Bugs': {
+ name: 'Bugs',
+ special: true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 49,
+ currentLevel: 49,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NULL],
+ skills: [
+ ['Miracle Punch', 0],
+ ['Masukunda', 0],
+ ['Psiodyne', 0],
+ ['Auto-Mataru', 51],
+ ['Triple Down', 52],
+ ['Evade Phys', 54],
+ ['Fast Heal', 55]
+ ],
+ stats: [35, 33, 30, 32, 24],
+ trait: 'Potent Hypnosis'
+ },
+ 'Byakhee': {
+ name: 'Byakhee',
+ inherits: InheritanceType[Element.FIRE],
+ level: 70,
+ currentLevel: 70,
+ arcana: Arcana.MOON,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NULL],
+ skills: [
+ ['Agidyne', 0],
+ ['Foul Breath', 0],
+ ['Death Scythe', 0],
+ ['Maragidyne', 72],
+ ['Ailment Boost', 73],
+ ['Fire Break', 74],
+ ['Heat Riser', 75]
+ ],
+ stats: [42, 49, 43, 51, 32],
+ trait: 'Heated Bloodline',
+ },
+ 'Byakko': {
+ name: 'Byakko',
+ inherits: InheritanceType[Element.ICE],
+ level: 45,
+ currentLevel: 45,
+ arcana: Arcana.TEMPERANCE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.RESIST],
+ skills: [
+ ['Swift Strike', 0],
+ ['Mabufula', 0],
+ ['Counterstrike', 0],
+ ['Ice Boost', 47],
+ ['Ice Break', 48],
+ ['Evade Fire', 49],
+ ['Null Rage', 50],
+ ['Bufudyne', 51]
+ ],
+ stats: [35, 28, 30, 32, 17],
+ trait: 'Retaliating Body'
+ },
+ 'Cait Sith': {
+ name: 'Cait Sith',
+ inherits: InheritanceType[Element.AILMENT],
+ level: 5,
+ currentLevel: 5,
+ arcana: Arcana.MAGICIAN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Agi', 0], ['Cleave', 0], ['Tarukaja', 0], ['Resist Sleep', 6], ['Sukukaja', 7], ['Media', 9] ],
+ stats: [6, 4, 4, 5, 3],
+ trait: 'Thermal Conduct'
+ },
+ 'Cerberus': {
+ name: 'Cerberus',
+ inherits: InheritanceType[Element.FIRE],
+ level: 55,
+ currentLevel: 55,
+ arcana: Arcana.CHARIOT,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Agidyne', 0],
+ ['Megaton Raid', 0],
+ ['Rebellion', 56],
+ ['High Counter', 57],
+ ['Maragidyne', 58],
+ ['Enduring Soul', 60]
+ ],
+ stats: [39, 35, 32, 39, 27],
+ trait: 'Heated Bloodline'
+ },
+ 'Chernobog': {
+ name: 'Chernobog',
+ inherits: InheritanceType[Element.AILMENT],
+ level: 62,
+ currentLevel: 62,
+ arcana: Arcana.DEATH,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.ABSORB, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.ABSORB],
+ skills: [
+ ['Mudoon', 0],
+ ['Bloodbath', 0],
+ ['Myriad Slashes', 0],
+ ['Foul Breath', 63],
+ ['Deathbound', 64],
+ ['Fear Boost', 66],
+ ['Brave Blade', 67]
+ ],
+ stats: [40, 37, 39, 38, 39],
+ trait: 'Crisis Control'
+ },
+ 'Chi You': {
+ name: 'Chi You',
+ special: true,
+ inherits: InheritanceType[Element.PSY],
+ level: 88,
+ currentLevel: 88,
+ arcana: Arcana.CHARIOT,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Psycho Force', 0],
+ ['Repel Phys', 0],
+ ['Gigantomachia', 0],
+ ['Fortify Spirit', 90],
+ ['Psycho Blast', 91],
+ ['Absorb Psy', 92],
+ ['Concentrate', 94]
+ ],
+ stats: [56, 57, 54, 53, 51],
+ trait: 'Chi You\'s Blessing'
+ },
+ 'Chimera': {
+ name: 'Chimera',
+ inherits: InheritanceType[Element.PHYS],
+ level: 74,
+ currentLevel: 74,
+ arcana: Arcana.STRENGTH,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.NULL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK],
+ skills: [
+ ['Maragidyne', 0],
+ ['Heat Wave', 0],
+ ['Bufudyne', 0],
+ ['Marakunda', 76],
+ ['Fire Amp', 77],
+ ['Mabufudyne', 78],
+ ['Ice Amp', 79]
+ ],
+ stats: [51, 40, 42, 48, 48],
+ trait: 'Foul Stench',
+ },
+ 'Choronzon': {
+ name: 'Choronzon',
+ inherits: InheritanceType[Element.CURSE],
+ level: 28,
+ currentLevel: 28,
+ arcana: Arcana.MAGICIAN,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL],
+ skills: [
+ ['Pulinpa', 0],
+ ['Life Drain', 0],
+ ['Rampage', 0],
+ ['Maeiha', 29],
+ ['Dodge Elec', 30],
+ ['Eiga', 31],
+ ['Curse Boost', 32],
+ ['Climate Decorum', 33]
+ ],
+ stats: [16, 19, 19, 18, 19],
+ trait: 'Draining Mouth'
+ },
+ 'Clotho': {
+ name: 'Clotho',
+ inherits: InheritanceType[Element.HEALING],
+ level: 27,
+ currentLevel: 27,
+ arcana: Arcana.FORTUNE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Mahama', 0],
+ ['Me Patra', 0],
+ ['Makajam', 0],
+ ['Tetraja', 28],
+ ['Makajamaon', 30],
+ ['Energy Shower', 31],
+ ['Invigorate 1', 33]
+ ],
+ stats: [14, 19, 18, 20, 17],
+ trait: 'Relief Bloodline'
+ },
+ 'Crystal Skull': {
+ name: 'Crystal Skull',
+ 'treasure': true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 50,
+ currentLevel: 50,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Maragidyne', 0],
+ ['Mabufudyne', 0],
+ ['Magarudyne', 0],
+ ['Maziodyne', 0],
+ ['Mapsiodyne', 0],
+ ['Mafreidyne', 0],
+ ['Makougaon', 0],
+ ['Maeigaon', 0],
+ ['Foul Stench', 0],
+ ['Ailment Hunter', 0],
+ ['Cursed Bloodline', 0]
+ ],
+ stats: [50, 50, 50, 50, 50],
+ trait: 'Ultimate Vessel'
+ },
+ 'Cu Chulainn': {
+ name: 'Cu Chulainn',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 76,
+ currentLevel: 76,
+ arcana: Arcana.FAITH,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL],
+ skills: [
+ ['High Counter', 0],
+ ['One-shot Kill', 0],
+ ['Rebellion', 0],
+ ['Matarukaja', 78],
+ ['Brave Blade', 79],
+ ['Charge', 80],
+ ['Apt Pupil', 81]
+ ],
+ stats: [55, 44, 46, 48, 42],
+ trait: 'Potent Hypnosis'
+ },
+ 'Cybele': {
+ name: 'Cybele',
+ inherits: InheritanceType[Element.HEALING],
+ level: 83,
+ currentLevel: 83,
+ arcana: Arcana.PRIESTESS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL],
+ skills: [
+ ['Samarecarm', 0],
+ ['Mediarahan', 0],
+ ['Makougaon', 0],
+ ['Amrita Shower', 84],
+ ['Auto-Maraku', 86],
+ ['Absorb Bless', 87],
+ ['Salvation', 89]
+ ],
+ stats: [44, 57, 49, 51, 55],
+ trait: 'Linked Bloodline',
+ 'max': true
+ },
+ 'Daisoujou': {
+ name: 'Daisoujou',
+ inherits: InheritanceType[Element.BLESS],
+ level: 40,
+ currentLevel: 40,
+ arcana: Arcana.HIEROPHANT,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK],
+ skills: [
+ ['Spirit Drain', 0],
+ ['Makouga', 0],
+ ['Samsara', 41],
+ ['Bless Boost', 42],
+ ['Diarahan', 43],
+ ['Me Patra', 44],
+ ['Null Rage', 45]
+ ],
+ stats: [21, 33, 24, 24, 25],
+ trait: 'Draining Mouth'
+ },
+ 'Dakini': {
+ name: 'Dakini',
+ inherits: InheritanceType[Element.PHYS],
+ level: 50,
+ currentLevel: 50,
+ arcana: Arcana.EMPRESS,
+ affinities: [Affinity.NEUTRAL, Affinity.NULL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Bad Beat', 0],
+ ['Myriad Slashes', 0],
+ ['Rising Slash', 0],
+ ['High Counter', 52],
+ ['Deathbound', 53],
+ ['Rebellion', 54],
+ ['Charge', 55]
+ ],
+ stats: [34, 32, 34, 28, 29],
+ trait: 'Skillful Combo'
+ },
+ 'Decarabia': {
+ name: 'Decarabia',
+ inherits: InheritanceType[Element.FIRE],
+ level: 32,
+ currentLevel: 32,
+ arcana: Arcana.COUNCILLOR,
+ affinities: [Affinity.WEAK, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.RESIST],
+ skills: [
+ ['Agilao', 0],
+ ['Ominous Words', 0],
+ ['Tetrakarn', 33],
+ ['Fire Boost', 35],
+ ['Agidyne', 36],
+ ['Null Fire', 37],
+ ['Megidola', 38]
+ ],
+ stats: [21, 23, 19, 22, 18],
+ trait: 'Heated Bloodline'
+ },
+ 'Dionysus': {
+ name: 'Dionysus',
+ inherits: InheritanceType[Element.AILMENT],
+ level: 71,
+ currentLevel: 71,
+ arcana: Arcana.COUNCILLOR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NULL],
+ skills: [
+ ['Maziodyne', 0],
+ ['Ziodyne', 0],
+ ['Brain Jack', 0],
+ ['Thermopylae', 72],
+ ['Ailment Boost', 73],
+ ['Amrita Shower', 75],
+ ['Debilitate', 76]
+ ],
+ stats: [42, 48, 44, 42, 44],
+ trait: 'Pinch Anchor'
+ },
+ 'Dominion': {
+ name: 'Dominion',
+ inherits: InheritanceType[Element.BLESS],
+ level: 68,
+ currentLevel: 68,
+ arcana: Arcana.JUSTICE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NULL, Affinity.RESIST],
+ skills: [
+ ['Makajamaon', 0],
+ ['Hamaon', 0],
+ ['Kougaon', 0],
+ ['Makougaon', 70],
+ ['Hama Boost', 71],
+ ['Mahamaon', 72],
+ ['Evade Curse', 74]
+ ],
+ stats: [42, 45, 43, 44, 37],
+ trait: 'Blessed Bloodline'
+ },
+ 'Eligor': {
+ name: 'Eligor',
+ inherits: InheritanceType[Element.FIRE],
+ level: 16,
+ currentLevel: 16,
+ arcana: Arcana.EMPEROR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST],
+ skills: [
+ ['Maragi', 0],
+ ['Sharp Student', 0],
+ ['Tarukaja', 0],
+ ['Double Fangs', 18],
+ ['Sukunda', 19],
+ ['Memory Blow', 20]
+ ],
+ stats: [12, 10, 13, 10, 10],
+ trait: 'Thermal Conduct'
+ },
+ 'Emperor\'s Amulet': {
+ name: 'Emperor\'s Amulet',
+ 'treasure': true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 35,
+ currentLevel: 35,
+ arcana: Arcana.HANGEDMAN,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Agidyne', 0],
+ ['Bufudyne', 0],
+ ['Garudyne', 0],
+ ['Ziodyne', 0],
+ ['Psiodyne', 0],
+ ['Freidyne', 0],
+ ['Kougaon', 0],
+ ['Eigaon', 0],
+ ['Frigid Bloodline', 0],
+ ['Wind Bloodline', 0],
+ ['Psychic Bloodline', 0]
+ ],
+ stats: [35, 35, 35, 35, 35],
+ trait: 'Ultimate Vessel'
+ },
+ 'Fafnir': {
+ name: 'Fafnir',
+ inherits: InheritanceType[Element.NUKE],
+ level: 86,
+ currentLevel: 86,
+ arcana: Arcana.HERMIT,
+ affinities: [Affinity.REPEL, Affinity.REPEL, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Gigantomachia', 0],
+ ['Evil Smile', 0],
+ ['Cosmic Flare', 0],
+ ['Atomic Flare', 88],
+ ['Nuke Amp', 90],
+ ['Debilitate', 91],
+ ['Absorb Nuke', 92]
+ ],
+ stats: [61, 55, 58, 48, 43],
+ trait: 'Ailment Hunter',
+ },
+ 'Flauros': {
+ name: 'Flauros',
+ special: true,
+ inherits: InheritanceType[Element.AILMENT],
+ level: 19,
+ currentLevel: 19,
+ arcana: Arcana.DEVIL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Giant Slice', 0],
+ ['Dormin Rush', 0],
+ ['Dekaja', 0],
+ ['Dodge Phys', 20],
+ ['Rebellion', 22],
+ ['Cornered Fang', 23],
+ ['Heat Up', 24]
+ ],
+ stats: [15, 11, 13, 14, 11],
+ trait: 'Gluttonmouth'
+ },
+ 'Forneus': {
+ name: 'Forneus',
+ inherits: InheritanceType[Element.PSY],
+ level: 63,
+ currentLevel: 63,
+ arcana: Arcana.MAGICIAN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Psiodyne', 0],
+ ['Masukunda', 0],
+ ['Brain Jack', 0],
+ ['Survival Trick', 65],
+ ['Stagnant Air', 66],
+ ['Mapsiodyne', 67],
+ ['Evade Psy', 68]
+ ],
+ stats: [41, 39, 40, 42, 34],
+ trait: 'Bloodstained Eyes'
+ },
+ 'Fortuna': {
+ name: 'Fortuna',
+ inherits: InheritanceType[Element.WIND],
+ level: 46,
+ currentLevel: 46,
+ arcana: Arcana.FORTUNE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Magarula', 0],
+ ['Masukukaja', 0],
+ ['Tetraja', 0],
+ ['Garudyne', 47],
+ ['Touch n\' Go', 49],
+ ['Amrita Drop', 50],
+ ['Evade Elec', 51]
+ ],
+ stats: [23, 32, 29, 34, 27],
+ trait: 'Wind Bloodline'
+ },
+ 'Futsunushi': {
+ name: 'Futsunushi',
+ inherits: InheritanceType[Element.PHYS],
+ level: 86,
+ currentLevel: 86,
+ arcana: Arcana.MAGICIAN,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Myriad Slashes', 0],
+ ['Matarukaja', 0],
+ ['Apt Pupil', 0],
+ ['Charge', 88],
+ ['Brave Blade', 89],
+ ['Regenerate 3', 90],
+ ['Firm Stance', 91],
+ ['Auto-Maraku', 92]
+ ],
+ stats: [60, 58, 55, 52, 40],
+ trait: 'Will of the Sword',
+ 'max': true
+ },
+ 'Fuu-Ki': {
+ name: 'Fuu-Ki',
+ inherits: InheritanceType[Element.WIND],
+ level: 23,
+ currentLevel: 23,
+ arcana: Arcana.STAR,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Tetra Break', 0], ['Tarukaja', 0], ['Garula', 0], ['Wind Boost', 25], ['Magarula', 26], ['Resist Wind', 27] ],
+ stats: [14, 17, 16, 15, 14],
+ trait: 'Intense Focus'
+ },
+ 'Gabriel': {
+ name: 'Gabriel',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 77,
+ currentLevel: 77,
+ arcana: Arcana.TEMPERANCE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.NEUTRAL],
+ skills: [
+ ['Maziodyne', 0],
+ ['Mabufudyne', 0],
+ ['Divine Judgement', 78],
+ ['Ali Dance', 79],
+ ['Evade Curse', 80],
+ ['Touch n\' Go', 81],
+ ['Ice Amp', 82],
+ ['Salvation', 83]
+ ],
+ stats: [43, 51, 48, 54, 42],
+ trait: 'Relentless'
+ },
+ 'Ganesha': {
+ name: 'Ganesha',
+ inherits: InheritanceType[Element.AILMENT],
+ level: 53,
+ currentLevel: 53,
+ arcana: Arcana.SUN,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Miracle Punch', 0],
+ ['Tempest Slash', 0],
+ ['Rebellion', 0],
+ ['Tetraja', 55],
+ ['Resist Psy', 56],
+ ['Masukunda', 57],
+ ['Charge', 60]
+ ],
+ stats: [39, 31, 37, 33, 26],
+ trait: 'Gluttonmouth'
+ },
+ 'Garuda': {
+ name: 'Garuda',
+ inherits: InheritanceType[Element.WIND],
+ level: 52,
+ currentLevel: 52,
+ arcana: Arcana.STAR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL],
+ skills: [
+ ['Garudyne', 0],
+ ['Mind Slice', 0],
+ ['Amrita Shower', 53],
+ ['Masukukaja', 54],
+ ['Evade Elec', 55],
+ ['Magarudyne', 57],
+ ['Wind Amp', 59]
+ ],
+ stats: [30, 36, 29, 39, 29],
+ trait: 'Wind Bloodline'
+ },
+ 'Genbu': {
+ name: 'Genbu',
+ inherits: InheritanceType[Element.ICE],
+ level: 7,
+ currentLevel: 7,
+ arcana: Arcana.TEMPERANCE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Bufu', 0], ['Rakunda', 0], ['Patra', 8], ['Mabufu', 10], ['Resist Forget', 11], ['Defense Master', 12] ],
+ stats: [5, 6, 7, 6, 4],
+ trait: 'Cold-Blooded'
+ },
+ 'Girimehkala': {
+ name: 'Girimehkala',
+ inherits: InheritanceType[Element.AILMENT],
+ level: 43,
+ currentLevel: 43,
+ arcana: Arcana.MOON,
+ affinities: [Affinity.REPEL, Affinity.REPEL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [ ['Mudoon', 0], ['Marakunda', 0], ['Deathbound', 0], ['Agidyne', 45], ['Wage War', 47], ['Repel Phys', 50] ],
+ stats: [32, 24, 32, 29, 19],
+ trait: 'Cursed Bloodline'
+ },
+ 'Hanuman': {
+ name: 'Hanuman',
+ inherits: InheritanceType[Element.PHYS],
+ level: 64,
+ currentLevel: 64,
+ arcana: Arcana.STRENGTH,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL],
+ skills: [
+ ['Tempest Slash', 0],
+ ['Matarunda', 0],
+ ['Revolution', 0],
+ ['Deathbound', 65],
+ ['Tetra Break', 67],
+ ['Regenerate 3', 69]
+ ],
+ stats: [43, 38, 40, 40, 38],
+ trait: 'Potent Hypnosis'
+ },
+ 'Hariti': {
+ name: 'Hariti',
+ inherits: InheritanceType[Element.ELEC],
+ level: 40,
+ currentLevel: 40,
+ arcana: Arcana.EMPRESS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL],
+ skills: [
+ ['Zionga', 0],
+ ['Energy Shower', 0],
+ ['Mabaisudi', 0],
+ ['Samarecarm', 41],
+ ['Nocturnal Flash', 42],
+ ['Mediarama', 44],
+ ['Dizzy Boost', 45],
+ ['Spirit Drain', 46]
+ ],
+ stats: [21, 32, 24, 23, 27],
+ trait: 'Electric Bloodline'
+ },
+ 'Hastur': {
+ name: 'Hastur',
+ inherits: InheritanceType[Element.WIND],
+ level: 84,
+ currentLevel: 84,
+ arcana: Arcana.STAR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL],
+ skills: [
+ ['Vacuum Wave', 0],
+ ['Nocturnal Flash', 0],
+ ['Debilitate', 0],
+ ['Abyssal Eye', 86],
+ ['Wind Amp', 87],
+ ['Spirit Drain', 88],
+ ['Repel Wind', 89]
+ ],
+ stats: [51, 59, 52, 56, 41],
+ trait: 'Mouth of Savoring',
+ },
+ 'Hecatoncheires': {
+ name: 'Hecatoncheires',
+ inherits: InheritanceType[Element.PHYS],
+ level: 42,
+ currentLevel: 42,
+ arcana: Arcana.HANGEDMAN,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [
+ ['Swift Strike', 0],
+ ['Regenerate 2', 0],
+ ['Tarukaja', 0],
+ ['Endure', 43],
+ ['Rebellion', 45],
+ ['Fortified Moxy', 46],
+ ['Gattling Blows', 49]
+ ],
+ stats: [35, 22, 27, 23, 26],
+ trait: 'Gluttonmouth'
+ },
+ 'Hell Biker': {
+ name: 'Hell Biker',
+ special: true,
+ inherits: InheritanceType[Element.FIRE],
+ level: 37,
+ currentLevel: 37,
+ arcana: Arcana.DEATH,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL],
+ skills: [
+ ['Mudoon', 0],
+ ['Agilao', 0],
+ ['Speed Master', 0],
+ ['Tentarafoo', 38],
+ ['Fire Boost', 39],
+ ['Maragion', 40],
+ ['Mamudoon', 41]
+ ],
+ stats: [23, 24, 24, 30, 17],
+ trait: 'Internal Hypnosis'
+ },
+ 'High Pixie': {
+ name: 'High Pixie',
+ inherits: InheritanceType[Element.HEALING],
+ level: 16,
+ currentLevel: 16,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Garu', 0], ['Media', 0], ['Dormina', 0], ['Diarama', 19], ['Pulinpa', 20], ['Magaru', 22] ],
+ stats: [8, 14, 10, 13, 10],
+ trait: 'Skillful Combo'
+ },
+ 'Hope Diamond': {
+ name: 'Hope Diamond',
+ 'treasure': true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 40,
+ currentLevel: 40,
+ arcana: Arcana.DEATH,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Auto-Mataru', 0],
+ ['Auto-Maraku', 0],
+ ['Auto-Masuku', 0],
+ ['Endure', 0],
+ ['Regenerate 2', 0],
+ ['Invigorate 2', 0],
+ ['High Counter', 0],
+ ['Fast Heal', 0],
+ ['Internal Hypnosis', 0],
+ ['Striking Weight', 0],
+ ['Retaliating Body', 0]
+ ],
+ stats: [40, 40, 40, 40, 40],
+ trait: 'Ultimate Vessel'
+ },
+ 'Horus': {
+ name: 'Horus',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 47,
+ currentLevel: 47,
+ arcana: Arcana.SUN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL],
+ skills: [
+ ['Megidola', 0],
+ ['Diarama', 0],
+ ['Kougaon', 0],
+ ['Flash Bomb', 49],
+ ['Masukukaja', 50],
+ ['Hamaon', 51],
+ ['Hama Boost', 52]
+ ],
+ stats: [30, 32, 29, 35, 22],
+ trait: 'Potent Hypnosis'
+ },
+ 'Hua Po': {
+ name: 'Hua Po',
+ inherits: InheritanceType[Element.FIRE],
+ level: 9,
+ currentLevel: 9,
+ arcana: Arcana.HANGEDMAN,
+ affinities: [Affinity.NEUTRAL, Affinity.WEAK, Affinity.REPEL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Agi', 0], ['Dormina', 0], ['Tarunda', 11], ['Resist Forget', 12], ['Maragi', 13], ['Burn Boost', 15] ],
+ stats: [4, 10, 4, 8, 8],
+ trait: 'Thermal Conduct'
+ },
+ 'Incubus': {
+ name: 'Incubus',
+ inherits: InheritanceType[Element.AILMENT],
+ level: 5,
+ currentLevel: 5,
+ arcana: Arcana.DEVIL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL],
+ skills: [ ['Life Drain', 0], ['Dream Needle', 0], ['Dormina', 7], ['Tarunda', 8], ['Dodge Curse', 9] ],
+ stats: [4, 6, 4, 5, 3],
+ trait: 'Draining Mouth'
+ },
+ 'Inugami': {
+ name: 'Inugami',
+ inherits: InheritanceType[Element.FIRE],
+ level: 14,
+ currentLevel: 14,
+ arcana: Arcana.HANGEDMAN,
+ affinities: [Affinity.NEUTRAL, Affinity.NULL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL],
+ skills: [
+ ['Pulinpa', 0],
+ ['Tarukaja', 0],
+ ['Giant Slice', 0],
+ ['Dream Needle', 15],
+ ['Lucky Punch', 17],
+ ['Brain Shake', 18],
+ ['Confuse Boost', 19]
+ ],
+ stats: [11, 9, 9, 12, 8],
+ trait: 'Foul Odor'
+ },
+ 'Ippon-Datara': {
+ name: 'Ippon-Datara',
+ inherits: InheritanceType[Element.PHYS],
+ level: 13,
+ currentLevel: 13,
+ arcana: Arcana.HERMIT,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.RESIST],
+ skills: [
+ ['Sledgehammer', 0],
+ ['Tarukaja', 0],
+ ['Resist Dizzy', 0],
+ ['Rampage', 15],
+ ['Sharp Student', 17],
+ ['Counter', 18]
+ ],
+ stats: [11, 7, 14, 6, 8],
+ trait: 'Striking Weight'
+ },
+ 'Ishtar': {
+ name: 'Ishtar',
+ inherits: InheritanceType[Element.HEALING],
+ level: 85,
+ currentLevel: 85,
+ arcana: Arcana.LOVERS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Mediarahan', 0],
+ ['Samarecarm', 0],
+ ['Absorb Wind', 0],
+ ['Insta-Heal', 87],
+ ['Maziodyne', 88],
+ ['Spell Master', 89],
+ ['Salvation', 90]
+ ],
+ stats: [48, 59, 49, 58, 48],
+ trait: 'Grace of Mother',
+ 'max': true
+ },
+ 'Isis': {
+ name: 'Isis',
+ inherits: InheritanceType[Element.HEALING],
+ level: 26,
+ currentLevel: 26,
+ arcana: Arcana.PRIESTESS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL],
+ skills: [
+ ['Makouga', 0],
+ ['Mahama', 0],
+ ['Diarama', 0],
+ ['Resist Despair', 27],
+ ['Hamaon', 29],
+ ['Hama Boost', 30],
+ ['Makarakarn', 32]
+ ],
+ stats: [14, 20, 17, 18, 16],
+ trait: 'Savior Bloodline'
+ },
+ 'Jack Frost': {
+ name: 'Jack Frost',
+ inherits: InheritanceType[Element.ICE],
+ level: 11,
+ currentLevel: 11,
+ arcana: Arcana.MAGICIAN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Bufu', 0], ['Ice Break', 0], ['Baisudi', 0], ['Mabufu', 12], ['Rakunda', 13], ['Freeze Boost', 15] ],
+ stats: [8, 9, 7, 9, 7],
+ trait: 'Frigid Bloodline'
+ },
+ 'Jack-o\'-Lantern': {
+ name: 'Jack-o\'-Lantern',
+ inherits: InheritanceType[Element.FIRE],
+ level: 2,
+ currentLevel: 2,
+ arcana: Arcana.MAGICIAN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.WEAK, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Agi', 0], ['Rakunda', 0], ['Sharp Student', 4], ['Dazzler', 5], ['Resist Sleep', 7] ],
+ stats: [2, 3, 3, 3, 2],
+ trait: 'Thermal Conduct'
+ },
+ 'Jatayu': {
+ name: 'Jatayu',
+ inherits: InheritanceType[Element.WIND],
+ level: 51,
+ currentLevel: 51,
+ arcana: Arcana.HANGEDMAN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.NEUTRAL],
+ skills: [
+ ['Garudyne', 0],
+ ['Masukukaja', 0],
+ ['Nocturnal Flash', 0],
+ ['Dizzy Boost', 52],
+ ['Wind Amp', 54],
+ ['Magarudyne', 55],
+ ['Speed Master', 57]
+ ],
+ stats: [31, 34, 29, 36, 30],
+ trait: 'Wind Bloodline'
+ },
+ 'Jikokuten': {
+ name: 'Jikokuten',
+ inherits: InheritanceType[Element.PHYS],
+ level: 22,
+ currentLevel: 22,
+ arcana: Arcana.TEMPERANCE,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK],
+ skills: [
+ ['Assault Dive', 0],
+ ['Defense Master', 0],
+ ['Rakunda', 0],
+ ['Kill Rush', 24],
+ ['Counter', 25],
+ ['Matarukaja', 27],
+ ['Adverse Resolve', 28]
+ ],
+ stats: [18, 11, 16, 15, 13],
+ trait: 'Internal Hypnosis'
+ },
+ 'Kaiwan': {
+ name: 'Kaiwan',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 36,
+ currentLevel: 36,
+ arcana: Arcana.STAR,
+ affinities: [Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Makajam', 0],
+ ['Psio', 0],
+ ['Forget Boost', 37],
+ ['Speed Master', 38],
+ ['Makajamaon', 39],
+ ['Psiodyne', 40],
+ ['Marakunda', 41]
+ ],
+ stats: [23, 26, 24, 22, 20],
+ trait: 'Psychic Bloodline'
+ },
+ 'Kali': {
+ name: 'Kali',
+ inherits: InheritanceType[Element.FIRE],
+ level: 63,
+ currentLevel: 63,
+ arcana: Arcana.EMPRESS,
+ affinities: [Affinity.NEUTRAL, Affinity.REPEL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST],
+ skills: [
+ ['Heat Wave', 0],
+ ['Bloodbath', 0],
+ ['Brave Blade', 0],
+ ['Charge', 65],
+ ['High Counter', 66],
+ ['Repel Psy', 67],
+ ['Vorpal Blade', 68]
+ ],
+ stats: [43, 41, 39, 39, 34],
+ trait: 'Relentless'
+ },
+ 'Kelpie': {
+ name: 'Kelpie',
+ inherits: InheritanceType[Element.WIND],
+ level: 6,
+ currentLevel: 6,
+ arcana: Arcana.STRENGTH,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Garu', 0], ['Lunge', 0], ['Resist Brainwash', 8], ['Sukukaja', 9], ['Terror Claw', 10] ],
+ stats: [5, 5, 5, 6, 4],
+ trait: 'Striking Weight'
+ },
+ 'Kikuri-Hime': {
+ name: 'Kikuri-Hime',
+ inherits: InheritanceType[Element.HEALING],
+ level: 40,
+ currentLevel: 40,
+ arcana: Arcana.PRIESTESS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL],
+ skills: [ ['Lullaby', 0], ['Marakukaja', 0], ['Energy Drop', 0], ['Mediarama', 41], ['Tetraja', 43], ['Divine Grace', 45] ],
+ stats: [22, 31, 24, 28, 22],
+ trait: 'Relief Bloodline'
+ },
+ 'Kin-Ki': {
+ name: 'Kin-Ki',
+ inherits: InheritanceType[Element.PHYS],
+ level: 25,
+ currentLevel: 25,
+ arcana: Arcana.CHARIOT,
+ affinities: [Affinity.RESIST, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Vajra Blast', 0],
+ ['Rakukaja', 0],
+ ['Regenerate 1', 0],
+ ['Dodge Psy', 27],
+ ['Sledgehammer', 28],
+ ['Bad Beat', 30],
+ ['Counterstrike', 31]
+ ],
+ stats: [21, 13, 21, 15, 12],
+ trait: 'Retaliating Body'
+ },
+ 'King Frost': {
+ name: 'King Frost',
+ inherits: InheritanceType[Element.ICE],
+ level: 61,
+ currentLevel: 61,
+ arcana: Arcana.EMPEROR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL],
+ skills: [
+ ['Bufudyne', 0],
+ ['Ice Break', 0],
+ ['Megaton Raid', 0],
+ ['Freeze Boost', 62],
+ ['Mabufudyne', 64],
+ ['Concentrate', 65],
+ ['Ice Amp', 67]
+ ],
+ stats: [40, 44, 43, 29, 34],
+ trait: 'Frigid Bloodline'
+ },
+ 'Kodama': {
+ name: 'Kodama',
+ inherits: InheritanceType[Element.AILMENT],
+ level: 11,
+ currentLevel: 11,
+ arcana: Arcana.STAR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Garu', 0],
+ ['Rakunda', 0],
+ ['Psi', 12],
+ ['Evil Touch', 13],
+ ['Tarukaja', 14],
+ ['Fear Boost', 15],
+ ['Resist Fear', 17]
+ ],
+ stats: [7, 11, 8, 10, 4],
+ trait: 'Skillful Combo'
+ },
+ 'Koh-i-Noor': {
+ name: 'Koh-i-Noor',
+ 'treasure': true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 25,
+ currentLevel: 25,
+ arcana: Arcana.PRIESTESS,
+ affinities: [Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Dodge Fire', 0],
+ ['Dodge Ice', 0],
+ ['Dodge Wind', 0],
+ ['Dodge Elec', 0],
+ ['Dodge Psy', 0],
+ ['Dodge Nuke', 0],
+ ['Dodge Bless', 0],
+ ['Dodge Curse', 0],
+ ['Crisis Control', 0],
+ ['Bloodstained Eyes', 0],
+ ['Rare Antibody', 0]
+ ],
+ stats: [25, 25, 25, 25, 25],
+ trait: 'Ultimate Vessel'
+ },
+ 'Kohryu': {
+ name: 'Kohryu',
+ special: true,
+ inherits: InheritanceType[Element.PSY],
+ level: 76,
+ currentLevel: 76,
+ arcana: Arcana.HIEROPHANT,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK, Affinity.NULL, Affinity.NEUTRAL],
+ skills: [
+ ['Psycho Force', 0],
+ ['Mediarahan', 0],
+ ['Mapsiodyne', 0],
+ ['Life Aid', 78],
+ ['Concentrate', 79],
+ ['Psy Amp', 80],
+ ['Spell Master', 82]
+ ],
+ stats: [43, 51, 50, 53, 38],
+ trait: 'Universal Law',
+ 'max': true
+ },
+ 'Koppa Tengu': {
+ name: 'Koppa Tengu',
+ inherits: InheritanceType[Element.WIND],
+ level: 11,
+ currentLevel: 11,
+ arcana: Arcana.TEMPERANCE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL],
+ skills: [ ['Garu', 0], ['Sukukaja', 0], ['Growth 1', 12], ['Taunt', 13], ['Rage Boost', 14], ['Wage War', 15] ],
+ stats: [7, 8, 8, 11, 6],
+ trait: 'Intense Focus'
+ },
+ 'Koropokkuru': {
+ name: 'Koropokkuru',
+ inherits: InheritanceType[Element.ICE],
+ level: 9,
+ currentLevel: 9,
+ arcana: Arcana.HERMIT,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Makajam', 0],
+ ['Bufu', 0],
+ ['Dodge Ice', 11],
+ ['Sukunda', 12],
+ ['Fire Wall', 13],
+ ['Mabufu', 14],
+ ['Climate Decorum', 15]
+ ],
+ stats: [5, 8, 6, 9, 6],
+ trait: 'Foul Odor'
+ },
+ 'Koumokuten': {
+ name: 'Koumokuten',
+ inherits: InheritanceType[Element.PHYS],
+ level: 49,
+ currentLevel: 49,
+ arcana: Arcana.HERMIT,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL],
+ skills: [
+ ['Assault Dive', 0],
+ ['Regenerate 2', 0],
+ ['Revolution', 0],
+ ['Attack Master', 51],
+ ['Ice Wall', 52],
+ ['Enduring Soul', 54],
+ ['Deadly Fury', 55]
+ ],
+ stats: [37, 29, 34, 29, 25],
+ trait: 'Gluttonmouth'
+ },
+ 'Kumbhanda': {
+ name: 'Kumbhanda',
+ inherits: InheritanceType[Element.AILMENT],
+ level: 42,
+ currentLevel: 42,
+ arcana: Arcana.HERMIT,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST],
+ skills: [
+ ['Magarula', 0],
+ ['Stagnant Air', 0],
+ ['Bloodbath', 0],
+ ['Tempest Slash', 43],
+ ['Dekaja', 45],
+ ['Fear Boost', 46],
+ ['Revolution', 47]
+ ],
+ stats: [25, 30, 25, 27, 26],
+ trait: 'Rare Antibody'
+ },
+ 'Kurama Tengu': {
+ name: 'Kurama Tengu',
+ inherits: InheritanceType[Element.WIND],
+ level: 31,
+ currentLevel: 31,
+ arcana: Arcana.HERMIT,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.RESIST],
+ skills: [ ['Double Shot', 0], ['Masukunda', 0], ['Magarula', 0], ['Wind Boost', 32], ['Brain Jack', 34], ['Growth 2', 36] ],
+ stats: [20, 19, 21, 24, 16],
+ trait: 'Skillful Combo'
+ },
+ 'Kushinada': {
+ name: 'Kushinada',
+ inherits: InheritanceType[Element.HEALING],
+ level: 42,
+ currentLevel: 42,
+ arcana: Arcana.LOVERS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.REPEL, Affinity.NEUTRAL],
+ skills: [
+ ['Hysterical Slap', 0],
+ ['Psy Wall', 0],
+ ['Mediarama', 0],
+ ['Matarukaja', 44],
+ ['Null Confuse', 45],
+ ['Wind Wall', 46],
+ ['Amrita Shower', 47],
+ ['Null Ice', 48]
+ ],
+ stats: [24, 30, 26, 28, 25],
+ trait: 'Savior Bloodline'
+ },
+ 'Kushi Mitama': {
+ name: 'Kushi Mitama',
+ inherits: InheritanceType[Element.HEALING],
+ level: 12,
+ currentLevel: 12,
+ arcana: Arcana.COUNCILLOR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Dia', 0], ['Media', 0], ['Makajam', 0], ['Regenerate 1', 13], ['Wind Wall', 14], ['Forget Boost', 16] ],
+ stats: [7, 11, 9, 8, 8],
+ trait: 'Gluttonmouth'
+ },
+ 'Lachesis': {
+ name: 'Lachesis',
+ inherits: InheritanceType[Element.ICE],
+ level: 35,
+ currentLevel: 35,
+ arcana: Arcana.FORTUNE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Mabaisudi', 0],
+ ['Bufula', 0],
+ ['Growth 2', 0],
+ ['Marakukaja', 36],
+ ['Elec Wall', 37],
+ ['Mabufula', 39],
+ ['Ice Boost', 41]
+ ],
+ stats: [18, 26, 22, 25, 21],
+ trait: 'Internal Hypnosis'
+ },
+ 'Lakshmi': {
+ name: 'Lakshmi',
+ inherits: InheritanceType[Element.HEALING],
+ level: 69,
+ currentLevel: 69,
+ arcana: Arcana.FORTUNE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL],
+ skills: [
+ ['Lullaby', 0],
+ ['Diarahan', 0],
+ ['Bufudyne', 0],
+ ['Mediarahan', 70],
+ ['Climate Decorum', 71],
+ ['Amrita Shower', 72],
+ ['Life Aid', 74]
+ ],
+ stats: [39, 49, 41, 47, 38],
+ trait: 'Wealth of Lotus',
+ 'max': true
+ },
+ 'Lamia': {
+ name: 'Lamia',
+ inherits: InheritanceType[Element.FIRE],
+ level: 26,
+ currentLevel: 26,
+ arcana: Arcana.EMPRESS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NULL],
+ skills: [
+ ['Mudo', 0],
+ ['Rakukaja', 0],
+ ['Rising Slash', 0],
+ ['Ominous Words', 27],
+ ['Foul Breath', 28],
+ ['Mamudo', 30],
+ ['Despair Boost', 31]
+ ],
+ stats: [21, 15, 18, 19, 12],
+ trait: 'Foul Odor'
+ },
+ 'Leanan Sidhe': {
+ name: 'Leanan Sidhe',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 19,
+ currentLevel: 19,
+ arcana: Arcana.LOVERS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Rakunda', 0], ['Psio', 0], ['Marin Karin', 20], ['Mamudo', 21], ['Mapsi', 22], ['Eiga', 23] ],
+ stats: [9, 17, 12, 16, 10],
+ trait: 'Skillful Technique'
+ },
+ 'Legion': {
+ name: 'Legion',
+ inherits: InheritanceType[Element.PSY],
+ level: 38,
+ currentLevel: 38,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [
+ ['Bloodbath', 0],
+ ['Life Drain', 0],
+ ['Evil Smile', 0],
+ ['Foul Breath', 39],
+ ['Tetra Break', 40],
+ ['Null Dizzy', 42],
+ ['Eigaon', 45]
+ ],
+ stats: [24, 24, 30, 23, 20],
+ trait: 'Draining Mouth'
+ },
+ 'Lilim': {
+ name: 'Lilim',
+ inherits: InheritanceType[Element.ICE],
+ level: 32,
+ currentLevel: 32,
+ arcana: Arcana.DEVIL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [
+ ['Bufula', 0],
+ ['Lullaby', 0],
+ ['Freeze Boost', 0],
+ ['Masukunda', 34],
+ ['Dodge Bless', 35],
+ ['Spirit Drain', 36],
+ ['Mabufula', 37]
+ ],
+ stats: [17, 23, 18, 25, 20],
+ trait: 'Cold-Blooded'
+ },
+ 'Lilith': {
+ name: 'Lilith',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 60,
+ currentLevel: 60,
+ arcana: Arcana.MOON,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NULL],
+ skills: [
+ ['Mabufudyne', 0],
+ ['Makarakarn', 0],
+ ['Freidyne', 0],
+ ['Mafreidyne', 62],
+ ['Spirit Drain', 63],
+ ['Freeze Boost', 64],
+ ['Nuke Amp', 65]
+ ],
+ stats: [33, 43, 37, 39, 35],
+ trait: 'Mighty Gaze'
+ },
+ 'Loa': {
+ name: 'Loa',
+ inherits: InheritanceType[Element.CURSE],
+ level: 70,
+ currentLevel: 70,
+ arcana: Arcana.HERMIT,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL],
+ skills: [
+ ['Mamudoon', 0],
+ ['Abysmal Surge', 0],
+ ['Life Drain', 0],
+ ['Maeigaon', 72],
+ ['Absorb Curse', 73],
+ ['Spirit Drain', 74],
+ ['Fortify Spirit', 75]
+ ],
+ stats: [42, 47, 43, 46, 39],
+ trait: 'Draining Mouth',
+ },
+ 'Lucifer': {
+ name: 'Lucifer',
+ special: true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 93,
+ currentLevel: 93,
+ arcana: Arcana.STAR,
+ affinities: [Affinity.NULL, Affinity.NULL, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.ABSORB],
+ skills: [
+ ['Gigantomachia', 0],
+ ['Absorb Curse', 0],
+ ['Morning Star', 94],
+ ['Spell Master', 95],
+ ['Heat Riser', 96],
+ ['Repel Bless', 97],
+ ['Insta-Heal', 98],
+ ['Absorb Phys', 99]
+ ],
+ stats: [61, 59, 59, 56, 51],
+ trait: 'Allure of Wisdom',
+ 'max': true
+ },
+ 'Macabre': {
+ name: 'Macabre',
+ inherits: InheritanceType[Element.CURSE],
+ level: 73,
+ currentLevel: 73,
+ arcana: Arcana.HANGEDMAN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [
+ ['DEATH Scythe', 0],
+ ['Evil Smile', 0],
+ ['Mamudoon', 0],
+ ['Auto-Masuku', 74],
+ ['Ghastly Wail', 75],
+ ['Myriad Slashes', 76],
+ ['Ali Dance', 78]
+ ],
+ stats: [48, 49, 42, 48, 39],
+ trait: 'Ailment Hunter',
+ },
+ 'Mada': {
+ name: 'Mada',
+ inherits: InheritanceType[Element.FIRE],
+ level: 90,
+ currentLevel: 90,
+ arcana: Arcana.TOWER,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Inferno', 0],
+ ['Fire Amp', 0],
+ ['Burn Boost', 0],
+ ['Fortify Spirit', 91],
+ ['Blazing Hell', 92],
+ ['Amrita Shower', 93],
+ ['Enduring Soul', 95],
+ ['Spell Master', 96]
+ ],
+ stats: [55, 54, 61, 59, 48],
+ trait: 'Drunken Passion',
+ 'max': true
+ },
+ 'Makami': {
+ name: 'Makami',
+ inherits: InheritanceType[Element.NUKE],
+ level: 15,
+ currentLevel: 15,
+ arcana: Arcana.TEMPERANCE,
+ affinities: [Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NULL, Affinity.NEUTRAL],
+ skills: [
+ ['Double Fangs', 0],
+ ['Frei', 0],
+ ['Energy Drop', 0],
+ ['Mafrei', 17],
+ ['Makajam', 18],
+ ['Resist Despair', 19],
+ ['Dodge Elec', 20]
+ ],
+ stats: [13, 12, 8, 11, 8],
+ trait: 'Skillful Technique'
+ },
+ 'Mandrake': {
+ name: 'Mandrake',
+ inherits: InheritanceType[Element.ELEC],
+ level: 3,
+ currentLevel: 3,
+ arcana: Arcana.DEATH,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Pulinpa', 0], ['Energy Drop', 0], ['Lunge', 4], ['Sukunda', 5] ],
+ stats: [2, 3, 3, 4, 4],
+ trait: 'Savior Bloodline'
+ },
+ 'Mara': {
+ name: 'Mara',
+ inherits: InheritanceType[Element.PSY],
+ level: 73,
+ currentLevel: 73,
+ arcana: Arcana.TOWER,
+ affinities: [Affinity.NEUTRAL, Affinity.NULL, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NULL],
+ skills: [
+ ['Mapsiodyne', 0],
+ ['One-shot Kill', 0],
+ ['Tetra Break', 0],
+ ['Charge', 74],
+ ['Brain Buster', 76],
+ ['Psy Amp', 77],
+ ['Psycho Force', 78]
+ ],
+ stats: [51, 43, 43, 45, 44],
+ trait: 'Mighty Gaze'
+ },
+ 'Maria': {
+ name: 'Maria',
+ inherits: InheritanceType[Element.HEALING],
+ level: 93,
+ currentLevel: 93,
+ arcana: Arcana.FAITH,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.NEUTRAL],
+ skills: [
+ ['Invigorate 3', 0],
+ ['Salvation', 0],
+ ['Holy Benevolence', 0],
+ ['Heat Riser', 94],
+ ['Holy Embrace', 96],
+ ['Angelic Grace', 97],
+ ['Holy Whisper', 98]
+ ],
+ stats: [52, 66, 53, 54, 61],
+ trait: 'Ave Maria',
+ 'max': true
+ },
+ 'Matador': {
+ name: 'Matador',
+ inherits: InheritanceType[Element.PSY],
+ level: 17,
+ currentLevel: 17,
+ arcana: Arcana.DEATH,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Psi', 0], ['Null Dizzy', 0], ['Sukukaja', 0], ['Mapsi', 18], ['Double Shot', 20], ['Swift Strike', 22] ],
+ stats: [11, 13, 10, 16, 8],
+ trait: 'Potent Hypnosis'
+ },
+ 'Melchizedek': {
+ name: 'Melchizedek',
+ inherits: InheritanceType[Element.BLESS],
+ level: 58,
+ currentLevel: 58,
+ arcana: Arcana.JUSTICE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.NULL],
+ skills: [
+ ['Megaton Raid', 0],
+ ['Hamaon', 0],
+ ['Hama Boost', 59],
+ ['Revolution', 60],
+ ['Mahamaon', 62],
+ ['Matarukaja', 63],
+ ['God\'s Hand', 65]
+ ],
+ stats: [37, 32, 40, 39, 33],
+ trait: 'DEATHly Illness'
+ },
+ 'Metatron': {
+ name: 'Metatron',
+ special: true,
+ inherits: InheritanceType[Element.BLESS],
+ level: 89,
+ currentLevel: 89,
+ arcana: Arcana.JUSTICE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.REPEL, Affinity.ABSORB, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.WEAK],
+ skills: [
+ ['Mahamaon', 0],
+ ['Sword Dance', 0],
+ ['Makougaon', 0],
+ ['Megidolaon', 91],
+ ['Hama Boost', 92],
+ ['Concentrate', 93],
+ ['Bless Amp', 94],
+ ['Divine JUDGEMENT', 95]
+ ],
+ stats: [54, 61, 60, 57, 42],
+ trait: 'Martyr\'s Gift'
+ },
+ 'Michael': {
+ name: 'Michael',
+ special: true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 87,
+ currentLevel: 87,
+ arcana: Arcana.JUDGEMENT,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NULL],
+ skills: [
+ ['Divine JUDGEMENT', 0],
+ ['Mabufudyne', 0],
+ ['Debilitate', 0],
+ ['Sword Dance', 89],
+ ['Mahamaon', 90],
+ ['Megidolaon', 91],
+ ['Cosmic Flare', 92]
+ ],
+ stats: [57, 54, 55, 56, 46],
+ trait: 'Potent Hypnosis'
+ },
+ 'Mishaguji': {
+ name: 'Mishaguji',
+ inherits: InheritanceType[Element.AILMENT],
+ level: 52,
+ currentLevel: 52,
+ arcana: Arcana.HIEROPHANT,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB],
+ skills: [
+ ['Regenerate 3', 0],
+ ['Brain Jack', 0],
+ ['Psiodyne', 0],
+ ['One-shot Kill', 54],
+ ['Endure', 55],
+ ['Deathbound', 56],
+ ['Ailment Boost', 57]
+ ],
+ stats: [32, 32, 32, 32, 35],
+ trait: 'Ailment Hunter'
+ },
+ 'Mithra': {
+ name: 'Mithra',
+ inherits: InheritanceType[Element.BLESS],
+ level: 33,
+ currentLevel: 33,
+ arcana: Arcana.TEMPERANCE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL],
+ skills: [
+ ['Kouga', 0],
+ ['Mahama', 0],
+ ['Diarama', 0],
+ ['Makouga', 34],
+ ['Dekunda', 35],
+ ['Bless Boost', 36],
+ ['Thermopylae', 38]
+ ],
+ stats: [19, 26, 19, 24, 18],
+ trait: 'Blessed Bloodline'
+ },
+ 'Mithras': {
+ name: 'Mithras',
+ inherits: InheritanceType[Element.NUKE],
+ level: 39,
+ currentLevel: 39,
+ arcana: Arcana.SUN,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Tentarafoo', 0],
+ ['Mafreila', 0],
+ ['Heat Wave', 0],
+ ['Tetra Break', 41],
+ ['Nuke Break', 42],
+ ['Mabaisudi', 43],
+ ['Freidyne', 45]
+ ],
+ stats: [27, 25, 27, 25, 20],
+ trait: 'Skillful Technique'
+ },
+ 'Mokoi': {
+ name: 'Mokoi',
+ inherits: InheritanceType[Element.AILMENT],
+ level: 9,
+ currentLevel: 9,
+ arcana: Arcana.DEATH,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Tarukaja', 0],
+ ['Dazzler', 0],
+ ['Skull Cracker', 10],
+ ['Marin Karin', 12],
+ ['Dodge Elec', 13],
+ ['Dekunda', 14]
+ ],
+ stats: [9, 5, 6, 10, 4],
+ trait: 'Gloomy Child'
+ },
+ 'Moloch': {
+ name: 'Moloch',
+ inherits: InheritanceType[Element.FIRE],
+ level: 60,
+ currentLevel: 60,
+ arcana: Arcana.HANGEDMAN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.WEAK, Affinity.RESIST, Affinity.RESIST, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL],
+ skills: [
+ ['Agidyne', 0],
+ ['Stagnant Air', 0],
+ ['Evil Smile', 0],
+ ['Maragidyne', 62],
+ ['Ghastly Wail', 63],
+ ['Absorb Fire', 64],
+ ['Fire Amp', 65]
+ ],
+ stats: [32, 45, 42, 31, 37],
+ trait: 'Immunity'
+ },
+ 'Mot': {
+ name: 'Mot',
+ inherits: InheritanceType[Element.AILMENT],
+ level: 72,
+ currentLevel: 72,
+ arcana: Arcana.DEATH,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL],
+ skills: [
+ ['Megidola', 0],
+ ['Matarukaja', 0],
+ ['Maeigaon', 0],
+ ['Concentrate', 74],
+ ['Megidolaon', 76],
+ ['Repel Elec', 77]
+ ],
+ stats: [43, 51, 48, 42, 39],
+ trait: 'Mighty Gaze'
+ },
+ 'Mother Harlot': {
+ name: 'Mother Harlot',
+ inherits: InheritanceType[Element.ICE],
+ level: 85,
+ currentLevel: 85,
+ arcana: Arcana.EMPRESS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [
+ ['Mabufudyne', 0],
+ ['Mamudoon', 0],
+ ['Mudo Boost', 0],
+ ['Ice Age', 86],
+ ['Ice Amp', 87],
+ ['Repel Bless', 88],
+ ['Debilitate', 90]
+ ],
+ stats: [55, 54, 48, 50, 55],
+ trait: 'Ghost Nest',
+ 'max': true
+ },
+ 'Mothman': {
+ name: 'Mothman',
+ inherits: InheritanceType[Element.ELEC],
+ level: 33,
+ currentLevel: 33,
+ arcana: Arcana.MOON,
+ affinities: [Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Skull Cracker', 0],
+ ['Mazionga', 0],
+ ['Shock Boost', 0],
+ ['Tentarafoo', 35],
+ ['Ambient Aid', 36],
+ ['Makajamaon', 37],
+ ['Ziodyne', 38]
+ ],
+ stats: [21, 24, 16, 24, 21],
+ trait: 'Static Electricity'
+ },
+ 'Naga': {
+ name: 'Naga',
+ inherits: InheritanceType[Element.ELEC],
+ level: 24,
+ currentLevel: 24,
+ arcana: Arcana.HERMIT,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Power Slash', 0],
+ ['Memory Blow', 0],
+ ['Zionga', 0],
+ ['Shock Boost', 26],
+ ['Counter', 27],
+ ['Mazionga', 28],
+ ['Marakukaja', 29]
+ ],
+ stats: [15, 17, 15, 17, 15],
+ trait: 'Striking Weight'
+ },
+ 'Narcissus': {
+ name: 'Narcissus',
+ inherits: InheritanceType[Element.AILMENT],
+ level: 48,
+ currentLevel: 48,
+ arcana: Arcana.LOVERS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NULL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL],
+ skills: [
+ ['Dazzler', 0],
+ ['Magarula', 0],
+ ['Energy Drop', 0],
+ ['Growth 3', 50],
+ ['Dizzy Boost', 51],
+ ['Mediarama', 52],
+ ['Ambient Aid', 53]
+ ],
+ stats: [27, 31, 29, 33, 31],
+ trait: 'Gluttonmouth'
+ },
+ 'Nebiros': {
+ name: 'Nebiros',
+ inherits: InheritanceType[Element.CURSE],
+ level: 74,
+ currentLevel: 74,
+ arcana: Arcana.DEVIL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST],
+ skills: [
+ ['Marin Karin', 0],
+ ['Mapsiodyne', 0],
+ ['Marakukaja', 0],
+ ['Brain Jack', 76],
+ ['Brainwash Boost', 77],
+ ['Megidolaon', 78],
+ ['Null Bless', 80]
+ ],
+ stats: [45, 52, 44, 46, 42],
+ trait: 'Psychic Bloodline'
+ },
+ 'Neko Shogun': {
+ name: 'Neko Shogun',
+ special: true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 30,
+ currentLevel: 30,
+ arcana: Arcana.STAR,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.RESIST],
+ skills: [
+ ['Psio', 0],
+ ['Diarama', 0],
+ ['Masukukaja', 0],
+ ['Invigorate 1', 31],
+ ['Cornered Fang', 33],
+ ['Defense Master', 35],
+ ['Fortified Moxy', 36]
+ ],
+ stats: [19, 20, 19, 21, 18],
+ trait: 'Pinch Anchor'
+ },
+ 'Nekomata': {
+ name: 'Nekomata',
+ inherits: InheritanceType[Element.AILMENT],
+ level: 17,
+ currentLevel: 17,
+ arcana: Arcana.MAGICIAN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Magaru', 0],
+ ['Terror Claw', 0],
+ ['Evil Touch', 0],
+ ['Hysterical Slap', 18],
+ ['Wind Break', 20],
+ ['Elec Wall', 21],
+ ['Dodge Elec', 22]
+ ],
+ stats: [13, 10, 12, 15, 8],
+ trait: 'Foul Odor'
+ },
+ 'Nigi Mitama': {
+ name: 'Nigi Mitama',
+ inherits: InheritanceType[Element.HEALING],
+ level: 22,
+ currentLevel: 22,
+ arcana: Arcana.COUNCILLOR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.RESIST],
+ skills: [ ['Baisudi', 0], ['Diarama', 0], ['Makouha', 0], ['Divine Grace', 24], ['Me Patra', 25], ['Climate Decorum', 26] ],
+ stats: [13, 15, 15, 16, 14],
+ trait: 'Relief Bloodline'
+ },
+ 'Norn': {
+ name: 'Norn',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 52,
+ currentLevel: 52,
+ arcana: Arcana.FORTUNE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL],
+ skills: [
+ ['Ziodyne', 0],
+ ['Garudyne', 0],
+ ['Nocturnal Flash', 0],
+ ['Diarahan', 54],
+ ['Amrita Drop', 55],
+ ['Tetraja', 56],
+ ['Samarecarm', 57]
+ ],
+ stats: [30, 38, 33, 34, 28],
+ trait: 'Intense Focus'
+ },
+ 'Nue': {
+ name: 'Nue',
+ inherits: InheritanceType[Element.CURSE],
+ level: 20,
+ currentLevel: 20,
+ arcana: Arcana.DEATH,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL],
+ skills: [
+ ['Maeiha', 0],
+ ['Skull Cracker', 0],
+ ['Mudo', 21],
+ ['Pulinpa', 22],
+ ['Mamudo', 24],
+ ['Assault Dive', 25],
+ ['Curse Boost', 26]
+ ],
+ stats: [16, 10, 17, 14, 10],
+ trait: 'Mighty Gaze'
+ },
+ 'Obariyon': {
+ name: 'Obariyon',
+ inherits: InheritanceType[Element.PHYS],
+ level: 8,
+ currentLevel: 8,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Snap', 0], ['Sukunda', 0], ['Lucky Punch', 9], ['Resist Fear', 10], ['Dekaja', 12] ],
+ stats: [7, 3, 9, 8, 4],
+ trait: 'Striking Weight'
+ },
+ 'Oberon': {
+ name: 'Oberon',
+ inherits: InheritanceType[Element.ELEC],
+ level: 66,
+ currentLevel: 66,
+ arcana: Arcana.EMPEROR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Ziodyne', 0],
+ ['Nocturnal Flash', 0],
+ ['Heat Wave', 0],
+ ['Matarukaja', 68],
+ ['Myriad Slashes', 69],
+ ['Evade Nuke', 70],
+ ['Samarecarm', 71],
+ ['Elec Amp', 72]
+ ],
+ stats: [40, 45, 42, 43, 35],
+ trait: 'Static Electricity'
+ },
+ 'Odin': {
+ name: 'Odin',
+ inherits: InheritanceType[Element.ELEC],
+ level: 84,
+ currentLevel: 84,
+ arcana: Arcana.EMPEROR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.REPEL],
+ skills: [
+ ['Thunder Reign', 0],
+ ['Myriad Slashes', 0],
+ ['Marakukaja', 0],
+ ['Wild Thunder', 86],
+ ['Concentrate', 87],
+ ['Fast Heal', 88],
+ ['Elec Amp', 89]
+ ],
+ stats: [53, 58, 54, 52, 42],
+ trait: 'Bargain Bolts',
+ 'max': true
+ },
+ 'Okuninushi': {
+ name: 'Okuninushi',
+ inherits: InheritanceType[Element.PSY],
+ level: 54,
+ currentLevel: 54,
+ arcana: Arcana.FAITH,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.WEAK, Affinity.NULL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Mapsio', 0],
+ ['Myriad Slashes', 0],
+ ['Matarukaja', 0],
+ ['Psy Boost', 55],
+ ['Psy Break', 56],
+ ['Evade Nuke', 57],
+ ['Heat Wave', 59]
+ ],
+ stats: [39, 35, 33, 32, 30],
+ trait: 'Psychic Bloodline'
+ },
+ 'Ongyo-Ki': {
+ name: 'Ongyo-Ki',
+ special: true,
+ inherits: InheritanceType[Element.PHYS],
+ level: 89,
+ currentLevel: 89,
+ arcana: Arcana.HERMIT,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.REPEL],
+ skills: [
+ ['Myriad Slashes', 0],
+ ['Makajamaon', 0],
+ ['Last Stand', 0],
+ ['Arms Master', 91],
+ ['Regenerate 3', 92],
+ ['Firm Stance', 93],
+ ['Agneyastra', 95]
+ ],
+ stats: [56, 53, 57, 59, 49],
+ trait: 'Demon\'s Bite',
+ 'max': true
+ },
+ 'Oni': {
+ name: 'Oni',
+ inherits: InheritanceType[Element.PHYS],
+ level: 20,
+ currentLevel: 20,
+ arcana: Arcana.STRENGTH,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Rampage', 0], ['Counter', 0], ['Snap', 0], ['Giant Slice', 22], ['Sharp Student', 23], ['Memory Blow', 24] ],
+ stats: [19, 9, 17, 12, 10],
+ trait: 'Retaliating Body'
+ },
+ 'Onmoraki': {
+ name: 'Onmoraki',
+ inherits: InheritanceType[Element.CURSE],
+ level: 12,
+ currentLevel: 12,
+ arcana: Arcana.MOON,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [ ['Eiha', 0], ['Ice Wall', 0], ['Agi', 13], ['Evil Touch', 14], ['Pulinpa', 15], ['Confuse Boost', 17] ],
+ stats: [9, 12, 7, 10, 5],
+ trait: 'Intense Focus'
+ },
+ 'Orichalcum': {
+ name: 'Orichalcum',
+ 'treasure': true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 60,
+ currentLevel: 60,
+ arcana: Arcana.FAITH,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL],
+ skills: [
+ ['Inferno', 0],
+ ['Diamond Dust', 0],
+ ['Panta Rhei', 0],
+ ['Thunder Reign', 0],
+ ['Psycho Force', 0],
+ ['Atomic Flare', 0],
+ ['Divine JUDGEMENT', 0],
+ ['Demonic Decree', 0],
+ ['Immunity', 0],
+ ['Mouth of Savoring', 0],
+ ['Blessed Bloodline', 0]
+ ],
+ stats: [60, 60, 60, 60, 60],
+ trait: 'Ultimate Vessel'
+ },
+ 'Orlov': {
+ name: 'Orlov',
+ 'treasure': true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 30,
+ currentLevel: 30,
+ arcana: Arcana.STRENGTH,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK],
+ skills: [
+ ['Maragion', 0],
+ ['Mabufula', 0],
+ ['Magarula', 0],
+ ['Mazionga', 0],
+ ['Mapsio', 0],
+ ['Mafreila', 0],
+ ['Makouga', 0],
+ ['Maeiga', 0],
+ ['Heated Bloodline', 0],
+ ['Electric Bloodline', 0],
+ ['Atomic Bloodline', 0]
+ ],
+ stats: [30, 30, 30, 30, 30],
+ trait: 'Ultimate Vessel'
+ },
+ 'Orobas': {
+ name: 'Orobas',
+ inherits: InheritanceType[Element.FIRE],
+ level: 17,
+ currentLevel: 17,
+ arcana: Arcana.HIEROPHANT,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST],
+ skills: [ ['Maragi', 0], ['Sukukaja', 0], ['Dekaja', 0], ['Marakunda', 19], ['Fire Break', 20], ['Makajamaon', 21] ],
+ stats: [11, 14, 15, 12, 6],
+ trait: 'Mighty Gaze'
+ },
+ 'Orthrus': {
+ name: 'Orthrus',
+ inherits: InheritanceType[Element.FIRE],
+ level: 21,
+ currentLevel: 21,
+ arcana: Arcana.HANGEDMAN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Agilao', 0],
+ ['Double Fangs', 0],
+ ['Maragi', 0],
+ ['Burn Boost', 22],
+ ['Cornered Fang', 24],
+ ['Matarukaja', 26]
+ ],
+ stats: [16, 14, 14, 19, 7],
+ trait: 'Thermal Conduct'
+ },
+ 'Ose': {
+ name: 'Ose',
+ inherits: InheritanceType[Element.AILMENT],
+ level: 42,
+ currentLevel: 42,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.NEUTRAL, Affinity.NULL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [
+ ['Oni Kagura', 0],
+ ['Counterstrike', 0],
+ ['Charge', 0],
+ ['Tempest Slash', 43],
+ ['Matarukaja', 45],
+ ['Heat Wave', 47]
+ ],
+ stats: [32, 24, 25, 31, 21],
+ trait: 'Retaliating Body'
+ },
+ 'Pale Rider': {
+ name: 'Pale Rider',
+ inherits: InheritanceType[Element.CURSE],
+ level: 54,
+ currentLevel: 54,
+ arcana: Arcana.DEATH,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.REPEL],
+ skills: [
+ ['Abysmal Surge', 0],
+ ['Eigaon', 0],
+ ['Brain Shake', 0],
+ ['Curse Boost', 55],
+ ['Megidola', 56],
+ ['Evade Bless', 58],
+ ['Deathbound', 59]
+ ],
+ stats: [32, 37, 33, 40, 27],
+ trait: 'Foul Stench'
+ },
+ 'Parvati': {
+ name: 'Parvati',
+ inherits: InheritanceType[Element.PSY],
+ level: 56,
+ currentLevel: 56,
+ arcana: Arcana.LOVERS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK],
+ skills: [
+ ['Diarama', 0],
+ ['Psiodyne', 0],
+ ['Psy Break', 0],
+ ['Energy Shower', 57],
+ ['Diarahan', 58],
+ ['Mapsiodyne', 59],
+ ['Null Ice', 61]
+ ],
+ stats: [33, 39, 33, 39, 31],
+ trait: 'Skillful Technique'
+ },
+ 'Pazuzu': {
+ name: 'Pazuzu',
+ inherits: InheritanceType[Element.CURSE],
+ level: 45,
+ currentLevel: 45,
+ arcana: Arcana.DEVIL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [
+ ['Maeiga', 0],
+ ['Tentarafoo', 0],
+ ['Mudoon', 0],
+ ['Ambient Aid', 47],
+ ['Evil Smile', 48],
+ ['Stagnant Air', 49],
+ ['Eigaon', 50]
+ ],
+ stats: [29, 33, 27, 26, 27],
+ trait: 'Cursed Bloodline'
+ },
+ 'Phoenix': {
+ name: 'Phoenix',
+ inherits: InheritanceType[Element.NUKE],
+ level: 21,
+ currentLevel: 21,
+ arcana: Arcana.FAITH,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Freila', 0], ['Dream Needle', 0], ['Diarama', 22], ['Recarm', 23], ['Nuke Boost', 25], ['Mafreila', 26] ],
+ stats: [12, 15, 15, 17, 11],
+ trait: 'Atomic Bloodline'
+ },
+ 'Pisaca': {
+ name: 'Pisaca',
+ inherits: InheritanceType[Element.CURSE],
+ level: 28,
+ currentLevel: 28,
+ arcana: Arcana.DEATH,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [
+ ['Dream Needle', 0],
+ ['Rampage', 0],
+ ['Stagnant Air', 0],
+ ['Mamudo', 29],
+ ['Abysmal Surge', 31],
+ ['Despair Boost', 32],
+ ['Mudoon', 33]
+ ],
+ stats: [19, 21, 21, 16, 14],
+ trait: 'Rare Antibody'
+ },
+ 'Pixie': {
+ name: 'Pixie',
+ inherits: InheritanceType[Element.ELEC],
+ level: 2,
+ currentLevel: 2,
+ arcana: Arcana.LOVERS,
+ affinities: [Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK],
+ skills: [ ['Zio', 0], ['Dia', 0], ['Patra', 3], ['Tarukaja', 5], ['Resist Confuse', 6] ],
+ stats: [1, 3, 3, 4, 2],
+ trait: 'Static Electricity'
+ },
+ 'Power': {
+ name: 'Power',
+ inherits: InheritanceType[Element.BLESS],
+ level: 41,
+ currentLevel: 41,
+ arcana: Arcana.JUSTICE,
+ affinities: [Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK],
+ skills: [
+ ['Hamaon', 0],
+ ['Brain Shake', 0],
+ ['Swift Strike', 42],
+ ['Makouga', 43],
+ ['Bless Boost', 44],
+ ['Masukukaja', 45],
+ ['Null Curse', 46]
+ ],
+ stats: [30, 26, 28, 25, 21],
+ trait: 'Internal Hypnosis'
+ },
+ 'Principality': {
+ name: 'Principality',
+ inherits: InheritanceType[Element.BLESS],
+ level: 29,
+ currentLevel: 29,
+ arcana: Arcana.JUSTICE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK],
+ skills: [
+ ['Makouga', 0],
+ ['Makajamaon', 0],
+ ['Tetraja', 0],
+ ['Mediarama', 30],
+ ['Forget Boost', 32],
+ ['Bless Boost', 34],
+ ['Mabaisudi', 35]
+ ],
+ stats: [17, 19, 18, 21, 19],
+ trait: 'Blessed Bloodline'
+ },
+ 'Queen Mab': {
+ name: 'Queen Mab',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 43,
+ currentLevel: 43,
+ arcana: Arcana.MAGICIAN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Mazionga', 0],
+ ['Makajamaon', 0],
+ ['Burn Boost', 0],
+ ['Matarunda', 44],
+ ['Makara Break', 46],
+ ['Agidyne', 47],
+ ['Concentrate', 48]
+ ],
+ stats: [23, 35, 26, 30, 22],
+ trait: 'Static Electricity'
+ },
+ 'Queen\'s Necklace': {
+ name: 'Queen\'s Necklace',
+ 'treasure': true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 15,
+ currentLevel: 15,
+ arcana: Arcana.EMPRESS,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Tarukaja', 0],
+ ['Rakukaja', 0],
+ ['Sukukaja', 0],
+ ['Recarm', 0],
+ ['Media', 0],
+ ['Tarunda', 0],
+ ['Rakunda', 0],
+ ['Sukunda', 0],
+ ['Potent Hypnosis', 0],
+ ['Relief Bloodline', 0],
+ ['Savior Bloodline', 0]
+ ],
+ stats: [15, 15, 15, 15, 15],
+ trait: 'Ultimate Vessel'
+ },
+ 'Quetzalcoatl': {
+ name: 'Quetzalcoatl',
+ inherits: InheritanceType[Element.WIND],
+ level: 66,
+ currentLevel: 66,
+ arcana: Arcana.SUN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Magarula', 0],
+ ['Garudyne', 0],
+ ['Memory Blow', 0],
+ ['Growth 3', 68],
+ ['Regenerate 3', 69],
+ ['Magarudyne', 70],
+ ['Wind Amp', 71]
+ ],
+ stats: [41, 46, 41, 43, 34],
+ trait: 'Wind Bloodline'
+ },
+ 'Raja Naga': {
+ name: 'Raja Naga',
+ inherits: InheritanceType[Element.ELEC],
+ level: 55,
+ currentLevel: 55,
+ arcana: Arcana.TEMPERANCE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Ziodyne', 0],
+ ['Elec Break', 0],
+ ['Tentarafoo', 0],
+ ['Shock Boost', 57],
+ ['Makarakarn', 58],
+ ['Maziodyne', 59],
+ ['Evade Wind', 60]
+ ],
+ stats: [33, 37, 36, 35, 31],
+ trait: 'Electric Bloodline'
+ },
+ 'Rakshasa': {
+ name: 'Rakshasa',
+ inherits: InheritanceType[Element.PHYS],
+ level: 24,
+ currentLevel: 24,
+ arcana: Arcana.STRENGTH,
+ affinities: [Affinity.RESIST, Affinity.NULL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST],
+ skills: [
+ ['Giant Slice', 0],
+ ['Wind Wall', 0],
+ ['Tarukaja', 0],
+ ['Regenerate 1', 26],
+ ['Mind Slice', 27],
+ ['Counterstrike', 28],
+ ['Adverse Resolve', 30]
+ ],
+ stats: [20, 15, 18, 17, 9],
+ trait: 'Skillful Combo'
+ },
+ 'Rangda': {
+ name: 'Rangda',
+ inherits: InheritanceType[Element.CURSE],
+ level: 48,
+ currentLevel: 48,
+ arcana: Arcana.MAGICIAN,
+ affinities: [Affinity.REPEL, Affinity.REPEL, Affinity.NULL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [ ['Swift Strike', 0], ['Bloodbath', 0], ['Counterstrike', 0], ['Eigaon', 49], ['Matarunda', 51], ['Mudoon', 53] ],
+ stats: [28, 34, 30, 33, 26],
+ trait: 'Cursed Bloodline'
+ },
+ 'Raphael': {
+ name: 'Raphael',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 78,
+ currentLevel: 78,
+ arcana: Arcana.LOVERS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL],
+ skills: [
+ ['Sword Dance', 0],
+ ['Charge', 0],
+ ['Dekaja', 0],
+ ['Heat Riser', 80],
+ ['Growth 3', 81],
+ ['Adverse Resolve', 82],
+ ['Arms Master', 83]
+ ],
+ stats: [57, 45, 49, 55, 35],
+ trait: 'Pinch Anchor'
+ },
+ 'Red Rider': {
+ name: 'Red Rider',
+ inherits: InheritanceType[Element.PSY],
+ level: 41,
+ currentLevel: 41,
+ arcana: Arcana.TOWER,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [
+ ['Rising Slash', 0],
+ ['Psy Break', 0],
+ ['Mapsio', 0],
+ ['Negative Pile', 42],
+ ['Despair Boost', 44],
+ ['Ominous Words', 45],
+ ['Last Stand', 46]
+ ],
+ stats: [26, 27, 25, 29, 23],
+ trait: 'Ailment Hunter'
+ },
+ 'Regent': {
+ name: 'Regent',
+ 'treasure': true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 10,
+ currentLevel: 10,
+ arcana: Arcana.EMPEROR,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Maragi', 0],
+ ['Mabufu', 0],
+ ['Magaru', 0],
+ ['Mazio', 0],
+ ['Mapsi', 0],
+ ['Mafrei', 0],
+ ['Makouha', 0],
+ ['Maeiha', 0],
+ ['Mighty Gaze', 0],
+ ['Skillful Technique', 0],
+ ['Skillful Combo', 0]
+ ],
+ stats: [10, 10, 10, 10, 10],
+ trait: 'Ultimate Vessel'
+ },
+ 'Saki Mitama': {
+ name: 'Saki Mitama',
+ inherits: InheritanceType[Element.HEALING],
+ level: 6,
+ currentLevel: 6,
+ arcana: Arcana.LOVERS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Bufu', 0], ['Energy Drop', 0], ['Wind Wall', 0], ['Growth 1', 7], ['Rakukaja', 8], ['Resist Dizzy', 10] ],
+ stats: [4, 6, 5, 6, 4],
+ trait: 'Internal Hypnosis'
+ },
+ 'Sandalphon': {
+ name: 'Sandalphon',
+ inherits: InheritanceType[Element.BLESS],
+ level: 75,
+ currentLevel: 75,
+ arcana: Arcana.MOON,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NULL],
+ skills: [
+ ['Mahamaon', 0],
+ ['Samarecarm', 0],
+ ['Amrita Shower', 0],
+ ['Angelic Grace', 77],
+ ['Repel Curse', 78],
+ ['Sword Dance', 79],
+ ['Megidolaon', 81]
+ ],
+ stats: [46, 51, 49, 48, 38],
+ trait: 'Omen',
+ 'max': true
+ },
+ 'Sandman': {
+ name: 'Sandman',
+ inherits: InheritanceType[Element.WIND],
+ level: 23,
+ currentLevel: 23,
+ arcana: Arcana.MAGICIAN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Dormina', 0],
+ ['Garula', 0],
+ ['Dormin Rush', 0],
+ ['Sukunda', 24],
+ ['Null Sleep', 26],
+ ['Magarula', 27],
+ ['Sleep Boost', 28]
+ ],
+ stats: [11, 13, 14, 17, 21],
+ trait: 'Foul Odor'
+ },
+ 'Sarasvati': {
+ name: 'Sarasvati',
+ inherits: InheritanceType[Element.HEALING],
+ level: 50,
+ currentLevel: 50,
+ arcana: Arcana.PRIESTESS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Mediarama', 0],
+ ['Ice Wall', 0],
+ ['Tentarafoo', 0],
+ ['Psy Wall', 51],
+ ['Dekaja', 52],
+ ['Matarunda', 53],
+ ['Diarahan', 54]
+ ],
+ stats: [30, 35, 32, 33, 27],
+ trait: 'Relief Bloodline'
+ },
+ 'Satan': {
+ name: 'Satan',
+ inherits: InheritanceType[Element.ICE],
+ level: 92,
+ currentLevel: 92,
+ arcana: Arcana.JUDGEMENT,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL],
+ skills: [
+ ['Diamond Dust', 0],
+ ['Ice Age', 0],
+ ['Regenerate 3', 0],
+ ['Black Viper', 94],
+ ['Invigorate 3', 95],
+ ['Fortify Spirit', 96],
+ ['Concentrate', 97],
+ ['Absorb Ice', 98]
+ ],
+ stats: [62, 59, 55, 52, 55],
+ trait: 'Cocytus',
+ 'max': true
+ },
+ 'Satanael': {
+ name: 'Satanael',
+ special: true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 95,
+ currentLevel: 95,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.NULL, Affinity.ABSORB],
+ skills: [
+ ['Maeigaon', 0],
+ ['Megidolaon', 0],
+ ['Survival Trick', 0],
+ ['Riot Gun', 0],
+ ['Black Viper', 96],
+ ['Heat Riser', 97],
+ ['Tyrant\'s Mind', 98],
+ ['Victory Cry', 99]
+ ],
+ stats: [63, 60, 57, 56, 56],
+ trait: 'Pagan Allure',
+ },
+ 'Scathach': {
+ name: 'Scathach',
+ inherits: InheritanceType[Element.WIND],
+ level: 77,
+ currentLevel: 77,
+ arcana: Arcana.PRIESTESS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL],
+ skills: [
+ ['Mabufudyne', 0],
+ ['Myriad Slashes', 0],
+ ['Makarakarn', 0],
+ ['Freeze Boost', 78],
+ ['Matarukaja', 79],
+ ['Vorpal Blade', 81],
+ ['Attack Master', 82]
+ ],
+ stats: [48, 52, 46, 48, 44],
+ trait: 'Skillful Technique'
+ },
+ 'Seiryu': {
+ name: 'Seiryu',
+ inherits: InheritanceType[Element.ICE],
+ level: 62,
+ currentLevel: 62,
+ arcana: Arcana.COUNCILLOR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Bufudyne', 0],
+ ['Diarahan', 0],
+ ['Marakukaja', 0],
+ ['Repel Nuke', 63],
+ ['Mabufudyne', 65],
+ ['Amrita Drop', 66],
+ ['Makarakarn', 67]
+ ],
+ stats: [38, 41, 43, 37, 34],
+ trait: 'Relentless'
+ },
+ 'Setanta': {
+ name: 'Setanta',
+ inherits: InheritanceType[Element.PHYS],
+ level: 25,
+ currentLevel: 25,
+ arcana: Arcana.EMPEROR,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Giant Slice', 0], ['Dormin Rush', 0], ['Counter', 0], ['Charge', 27], ['Rebellion', 29], ['Rising Slash', 30] ],
+ stats: [19, 16, 18, 13, 16],
+ trait: 'Retaliating Body'
+ },
+ 'Seth': {
+ name: 'Seth',
+ special: true,
+ inherits: InheritanceType[Element.FIRE],
+ level: 51,
+ currentLevel: 51,
+ arcana: Arcana.TOWER,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST],
+ skills: [
+ ['One-shot Kill', 0],
+ ['Agidyne', 0],
+ ['Masukukaja', 0],
+ ['Gun Amp', 53],
+ ['Fire Break', 54],
+ ['Fortify Spirit', 56]
+ ],
+ stats: [32, 35, 30, 35, 28],
+ trait: 'Potent Hypnosis'
+ },
+ 'Shiisaa': {
+ name: 'Shiisaa',
+ inherits: InheritanceType[Element.ELEC],
+ level: 15,
+ currentLevel: 15,
+ arcana: Arcana.STRENGTH,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK],
+ skills: [
+ ['Double Fangs', 0],
+ ['Skull Cracker', 0],
+ ['Frei', 0],
+ ['Dodge Curse', 16],
+ ['Rampage', 17],
+ ['Dodge Elec', 19]
+ ],
+ stats: [10, 11, 11, 11, 9],
+ trait: 'Atomic Bloodline'
+ },
+ 'Shiki-Ouji': {
+ name: 'Shiki-Ouji',
+ inherits: InheritanceType[Element.PSY],
+ level: 18,
+ currentLevel: 18,
+ arcana: Arcana.CHARIOT,
+ affinities: [Affinity.NULL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL, Affinity.NULL],
+ skills: [
+ ['Tarukaja', 0],
+ ['Taunt', 0],
+ ['Double Shot', 0],
+ ['Mapsi', 19],
+ ['Dekaja', 21],
+ ['Psio', 23],
+ ['Oni Kagura', 24]
+ ],
+ stats: [16, 14, 12, 9, 10],
+ trait: 'Psychic Bloodline'
+ },
+ 'Shiva': {
+ name: 'Shiva',
+ special: true,
+ inherits: InheritanceType[Element.PSY],
+ level: 82,
+ currentLevel: 82,
+ arcana: Arcana.JUDGEMENT,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.WEAK, Affinity.NULL, Affinity.NULL],
+ skills: [
+ ['Psycho Force', 0],
+ ['Maziodyne', 0],
+ ['Enduring Soul', 0],
+ ['Riot Gun', 85],
+ ['Megidolaon', 86],
+ ['Auto-Mataru', 87],
+ ['Psycho Blast', 88]
+ ],
+ stats: [55, 54, 53, 53, 38],
+ trait: 'Psychic Bloodline'
+ },
+ 'Siegfried': {
+ name: 'Siegfried',
+ inherits: InheritanceType[Element.PHYS],
+ level: 84,
+ currentLevel: 84,
+ arcana: Arcana.FAITH,
+ affinities: [Affinity.NULL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Brave Blade', 0],
+ ['Masukukaja', 0],
+ ['High Counter', 0],
+ ['Charge', 85],
+ ['Apt Pupil', 87],
+ ['Vorpal Blade', 89],
+ ['Auto-Mataru', 90]
+ ],
+ stats: [61, 43, 55, 55, 45],
+ trait: 'Retaliating Body'
+ },
+ 'Silky': {
+ name: 'Silky',
+ inherits: InheritanceType[Element.HEALING],
+ level: 6,
+ currentLevel: 6,
+ arcana: Arcana.PRIESTESS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Dormina', 0], ['Bufu', 0], ['Dia', 7], ['Patra', 9], ['Sharp Student', 10] ],
+ stats: [4, 7, 4, 5, 5],
+ trait: 'Intense Focus'
+ },
+ 'Skadi': {
+ name: 'Skadi',
+ inherits: InheritanceType[Element.ICE],
+ level: 53,
+ currentLevel: 53,
+ arcana: Arcana.PRIESTESS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL],
+ skills: [
+ ['Deadly Fury', 0],
+ ['Evil Smile', 0],
+ ['Fear Boost', 0],
+ ['Ghastly Wail', 54],
+ ['Mabufudyne', 56],
+ ['Maeigaon', 57],
+ ['Spirit Drain', 58]
+ ],
+ stats: [33, 39, 32, 34, 28],
+ trait: 'Bloodstained Eyes'
+ },
+ 'Slime': {
+ name: 'Slime',
+ inherits: InheritanceType[Element.CURSE],
+ level: 10,
+ currentLevel: 10,
+ arcana: Arcana.CHARIOT,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [ ['Lunge', 0], ['Evil Touch', 0], ['Tarunda', 11], ['Fire Wall', 13], ['Headbutt', 14] ],
+ stats: [9, 6, 11, 6, 5],
+ trait: 'Rare Antibody'
+ },
+ 'Sraosha': {
+ name: 'Sraosha',
+ special: true,
+ inherits: InheritanceType[Element.BLESS],
+ level: 80,
+ currentLevel: 80,
+ arcana: Arcana.STAR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.WEAK],
+ skills: [
+ ['Kougaon', 0],
+ ['Mahamaon', 0],
+ ['Hama Boost', 0],
+ ['Makougaon', 81],
+ ['Angelic Grace', 83],
+ ['Amrita Shower', 84],
+ ['Debilitate', 85]
+ ],
+ stats: [47, 56, 45, 56, 43],
+ trait: 'Blessed Bloodline'
+ },
+ 'Stone of Scone': {
+ name: 'Stone of Scone',
+ 'treasure': true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 20,
+ currentLevel: 20,
+ arcana: Arcana.FORTUNE,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Agilao', 0],
+ ['Bufula', 0],
+ ['Garula', 0],
+ ['Zionga', 0],
+ ['Psio', 0],
+ ['Freila', 0],
+ ['Kouga', 0],
+ ['Eiga', 0],
+ ['Relentless', 0],
+ ['Gluttonmouth', 0],
+ ['Intense Focus', 0]
+ ],
+ stats: [20, 20, 20, 20, 20],
+ trait: 'Ultimate Vessel'
+ },
+ 'Succubus': {
+ name: 'Succubus',
+ inherits: InheritanceType[Element.CURSE],
+ level: 7,
+ currentLevel: 7,
+ arcana: Arcana.MOON,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [ ['Dormina', 0], ['Rebellion', 0], ['Agi', 8], ['Dekaja', 10], ['Sleep Boost', 11], ['Mudo', 12] ],
+ stats: [4, 7, 5, 8, 4],
+ trait: 'Foul Odor'
+ },
+ 'Sudama': {
+ name: 'Sudama',
+ inherits: InheritanceType[Element.PSY],
+ level: 17,
+ currentLevel: 17,
+ arcana: Arcana.HERMIT,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Mapsi', 0],
+ ['Lucky Punch', 0],
+ ['Tarukaja', 0],
+ ['Ambient Aid', 20],
+ ['Wind Wall', 21],
+ ['Apt Pupil', 22],
+ ['Psio', 23]
+ ],
+ stats: [9, 14, 12, 13, 10],
+ trait: 'Gloomy Child'
+ },
+ 'Sui-Ki': {
+ name: 'Sui-Ki',
+ inherits: InheritanceType[Element.ICE],
+ level: 24,
+ currentLevel: 24,
+ arcana: Arcana.MOON,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Mabufu', 0],
+ ['Sledgehammer', 0],
+ ['Bufula', 0],
+ ['Null Ice', 26],
+ ['Wage War', 27],
+ ['Mabufula', 28],
+ ['Dodge Fire', 29]
+ ],
+ stats: [16, 15, 15, 18, 15],
+ trait: 'Frigid Bloodline'
+ },
+ 'Surt': {
+ name: 'Surt',
+ inherits: InheritanceType[Element.FIRE],
+ level: 83,
+ currentLevel: 83,
+ arcana: Arcana.MAGICIAN,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.ABSORB, Affinity.WEAK, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Blazing Hell', 0],
+ ['Attack Master', 0],
+ ['Brave Blade', 0],
+ ['Fire Amp', 84],
+ ['Marakunda', 85],
+ ['Evade Ice', 86],
+ ['Gigantomachia', 88]
+ ],
+ stats: [55, 54, 51, 50, 46],
+ trait: 'Heated Bloodline'
+ },
+ 'Suzaku': {
+ name: 'Suzaku',
+ inherits: InheritanceType[Element.NUKE],
+ level: 16,
+ currentLevel: 16,
+ arcana: Arcana.SUN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Frei', 0],
+ ['Tarunda', 0],
+ ['Marin Karin', 0],
+ ['Dekunda', 18],
+ ['Mafrei', 19],
+ ['Speed Master', 20],
+ ['Matarunda', 21]
+ ],
+ stats: [9, 12, 10, 15, 9],
+ trait: 'Gluttonmouth'
+ },
+ 'Take-Minakata': {
+ name: 'Take-Minakata',
+ inherits: InheritanceType[Element.ELEC],
+ level: 26,
+ currentLevel: 26,
+ arcana: Arcana.HANGEDMAN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST],
+ skills: [
+ ['Zionga', 0],
+ ['Assault Dive', 0],
+ ['Defense Master', 0],
+ ['Mazionga', 27],
+ ['Elec Boost', 29],
+ ['Swift Strike', 31],
+ ['Shock Boost', 32]
+ ],
+ stats: [17, 19, 18, 16, 15],
+ trait: 'Electric Bloodline'
+ },
+ 'Tam Lin': {
+ name: 'Tam Lin',
+ special: true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 27,
+ currentLevel: 27,
+ arcana: Arcana.FAITH,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.WEAK],
+ skills: [
+ ['Assault Dive', 0],
+ ['Brain Shake', 0],
+ ['Rebellion', 0],
+ ['Sharp Student', 28],
+ ['Brain Buster', 30],
+ ['Brainwash Boost', 31],
+ ['Heat Up', 32]
+ ],
+ stats: [21, 16, 18, 16, 17],
+ trait: 'Gluttonmouth'
+ },
+ 'Thor': {
+ name: 'Thor',
+ inherits: InheritanceType[Element.ELEC],
+ level: 64,
+ currentLevel: 64,
+ arcana: Arcana.CHARIOT,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.RESIST],
+ skills: [
+ ['Ziodyne', 0],
+ ['Megaton Raid', 0],
+ ['High Counter', 0],
+ ['Elec Amp', 66],
+ ['Maziodyne', 67],
+ ['Heat Up', 68],
+ ['Wild Thunder', 71]
+ ],
+ stats: [44, 39, 43, 38, 35],
+ trait: 'Intense Focus'
+ },
+ 'Thoth': {
+ name: 'Thoth',
+ inherits: InheritanceType[Element.NUKE],
+ level: 36,
+ currentLevel: 36,
+ arcana: Arcana.EMPEROR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL, Affinity.NULL, Affinity.RESIST],
+ skills: [
+ ['Taunt', 0],
+ ['Freila', 0],
+ ['Masukunda', 0],
+ ['Megido', 37],
+ ['Psy Wall', 39],
+ ['Concentrate', 40],
+ ['Growth 2', 42]
+ ],
+ stats: [21, 28, 21, 24, 21],
+ trait: 'Skillful Technique'
+ },
+ 'Throne': {
+ name: 'Throne',
+ inherits: InheritanceType[Element.BLESS],
+ level: 72,
+ currentLevel: 72,
+ arcana: Arcana.JUSTICE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.REPEL, Affinity.NEUTRAL],
+ skills: [
+ ['Agidyne', 0],
+ ['Hamaon', 0],
+ ['Burn Boost', 0],
+ ['Fire Amp', 74],
+ ['Makougaon', 75],
+ ['Invigorate 3', 76],
+ ['Inferno', 78]
+ ],
+ stats: [42, 49, 43, 46, 43],
+ trait: 'Crisis Control'
+ },
+ 'Thunderbird': {
+ name: 'Thunderbird',
+ inherits: InheritanceType[Element.ELEC],
+ level: 34,
+ currentLevel: 34,
+ arcana: Arcana.SUN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK],
+ skills: [
+ ['Mazionga', 0],
+ ['Tarukaja', 0],
+ ['Shock Boost', 0],
+ ['Rebellion', 35],
+ ['Ziodyne', 37],
+ ['Elec Boost', 38],
+ ['Maziodyne', 39]
+ ],
+ stats: [17, 24, 24, 26, 18],
+ trait: 'Electric Bloodline'
+ },
+ 'Titania': {
+ name: 'Titania',
+ inherits: InheritanceType[Element.NUKE],
+ level: 56,
+ currentLevel: 56,
+ arcana: Arcana.EMPRESS,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST],
+ skills: [ ['Freidyne', 0], ['Ziodyne', 0], ['Lullaby', 0], ['Concentrate', 59], ['Nuke Amp', 60], ['Mediarahan', 61] ],
+ stats: [32, 40, 35, 38, 30],
+ trait: 'Foul Stench'
+ },
+ 'Trumpeter': {
+ name: 'Trumpeter',
+ special: true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 59,
+ currentLevel: 59,
+ arcana: Arcana.JUDGEMENT,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NULL],
+ skills: [
+ ['Mafreidyne', 0],
+ ['Abysmal Surge', 0],
+ ['Brain Buster', 0],
+ ['Fortify Spirit', 61],
+ ['Gun Amp', 62],
+ ['Life Aid', 63],
+ ['Debilitate', 65]
+ ],
+ stats: [33, 42, 40, 38, 31],
+ trait: 'Relentless'
+ },
+ 'Unicorn': {
+ name: 'Unicorn',
+ inherits: InheritanceType[Element.BLESS],
+ level: 39,
+ currentLevel: 39,
+ arcana: Arcana.FAITH,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK],
+ skills: [
+ ['Assault Dive', 0],
+ ['Mahama', 0],
+ ['Dekunda', 0],
+ ['Samarecarm', 41],
+ ['Swift Strike', 42],
+ ['Kougaon', 43],
+ ['Hamaon', 44]
+ ],
+ stats: [20, 27, 25, 28, 24],
+ trait: 'Blessed Bloodline'
+ },
+ 'Uriel': {
+ name: 'Uriel',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 81,
+ currentLevel: 81,
+ arcana: Arcana.JUSTICE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.REPEL, Affinity.NEUTRAL],
+ skills: [
+ ['Deathbound', 0],
+ ['Myriad Slashes', 0],
+ ['Bloodbath', 0],
+ ['Repel Nuke', 83],
+ ['Megidolaon', 84],
+ ['Angelic Grace', 85],
+ ['Spell Master', 86]
+ ],
+ stats: [50, 54, 49, 55, 42],
+ trait: 'Mouth of Savoring'
+ },
+ 'Valkyrie': {
+ name: 'Valkyrie',
+ inherits: InheritanceType[Element.PHYS],
+ level: 44,
+ currentLevel: 44,
+ arcana: Arcana.STRENGTH,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL],
+ skills: [
+ ['Rising Slash', 0],
+ ['Counterstrike', 0],
+ ['Attack Master', 45],
+ ['Deathbound', 46],
+ ['Matarukaja', 47],
+ ['Dodge Phys', 49]
+ ],
+ stats: [33, 24, 28, 29, 25],
+ trait: 'Skillful Combo'
+ },
+ 'Vasuki': {
+ name: 'Vasuki',
+ special: true,
+ inherits: InheritanceType[Element.AILMENT],
+ level: 68,
+ currentLevel: 68,
+ arcana: Arcana.STAR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK],
+ skills: [
+ ['Mahamaon', 0],
+ ['Brain Jack', 0],
+ ['Triple Down', 0],
+ ['Trigger Happy', 70],
+ ['Makarakarn', 71],
+ ['Brainwash Boost', 72],
+ ['Null Curse', 73]
+ ],
+ stats: [42, 45, 44, 42, 38],
+ trait: 'Foul Stench'
+ },
+ 'Vishnu': {
+ name: 'Vishnu',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 83,
+ currentLevel: 83,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NULL],
+ skills: [
+ ['Megidolaon', 0],
+ ['Magarudyne', 0],
+ ['Ali Dance', 0],
+ ['Vacuum Wave', 85],
+ ['Concentrate', 86],
+ ['Repel Fire', 87],
+ ['Wind Amp', 88],
+ ['Riot Gun', 90]
+ ],
+ stats: [56, 51, 49, 57, 43],
+ trait: 'Vahana\'s Wings',
+ 'max': true
+ },
+ 'Vohu Manah': {
+ name: 'Vohu Manah',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 80,
+ currentLevel: 80,
+ arcana: Arcana.COUNCILLOR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.NULL],
+ skills: [
+ ['Divine Judgement', 0],
+ ['Bless Amp', 0],
+ ['Makougaon', 0],
+ ['Absorb Bless', 82],
+ ['Fortify Spirit', 83],
+ ['Invigorate 3', 84],
+ ['Salvation', 85]
+ ],
+ stats: [46, 59, 45, 56, 41],
+ trait: 'Positive Thoughts',
+ 'max': true
+ },
+ 'White Rider': {
+ name: 'White Rider',
+ inherits: InheritanceType[Element.CURSE],
+ level: 38,
+ currentLevel: 38,
+ arcana: Arcana.CHARIOT,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.REPEL],
+ skills: [
+ ['Triple Down', 0],
+ ['Evil Touch', 0],
+ ['Oni Kagura', 0],
+ ['Gun Boost', 40],
+ ['Maeiga', 41],
+ ['Masukukaja', 42],
+ ['Foul Breath', 43],
+ ['Ailment Boost', 44]
+ ],
+ stats: [22, 21, 26, 27, 25],
+ trait: 'Bloodstained Eyes'
+ },
+ 'Yaksini': {
+ name: 'Yaksini',
+ inherits: InheritanceType[Element.ICE],
+ level: 20,
+ currentLevel: 20,
+ arcana: Arcana.EMPRESS,
+ affinities: [Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Hysterical Slap', 0],
+ ['Wage War', 0],
+ ['Counter', 0],
+ ['Oni Kagura', 22],
+ ['Attack Master', 23],
+ ['Vicious Strike', 24]
+ ],
+ stats: [14, 11, 13, 16, 13],
+ trait: 'Foul Odor'
+ },
+ 'Yamata-no-Orochi': {
+ name: 'Yamata-no-Orochi',
+ inherits: InheritanceType[Element.ICE],
+ level: 64,
+ currentLevel: 64,
+ arcana: Arcana.JUDGEMENT,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.ABSORB, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST],
+ skills: [
+ ['One-shot Kill', 0],
+ ['Mabufudyne', 0],
+ ['Freeze Boost', 0],
+ ['Absorb Ice', 66],
+ ['Ice Amp', 67],
+ ['Diamond Dust', 69]
+ ],
+ stats: [44, 38, 48, 36, 33],
+ trait: 'Cold-Blooded'
+ },
+ 'Yatagarasu': {
+ name: 'Yatagarasu',
+ inherits: InheritanceType[Element.FIRE],
+ level: 57,
+ currentLevel: 57,
+ arcana: Arcana.COUNCILLOR,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK],
+ skills: [
+ ['Agidyne', 0],
+ ['Makara Break', 0],
+ ['Dekunda', 0],
+ ['Mediarahan', 59],
+ ['Last Stand', 60],
+ ['Wind Break', 61],
+ ['Null Wind', 64]
+ ],
+ stats: [35, 41, 30, 40, 32],
+ trait: 'Potent Hypnosis'
+ },
+ 'Yoshitsune': {
+ name: 'Yoshitsune',
+ special: true,
+ inherits: InheritanceType[Element.PHYS],
+ level: 87,
+ currentLevel: 87,
+ arcana: Arcana.TOWER,
+ affinities: [Affinity.NULL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL],
+ skills: [
+ ['Brave Blade', 0],
+ ['Charge', 0],
+ ['Ziodyne', 0],
+ ['Last Stand', 89],
+ ['Fast Heal', 90],
+ ['Elec Amp', 92],
+ ['Hassou Tobi', 94]
+ ],
+ stats: [63, 52, 50, 54, 49],
+ trait: 'Retaliating Body'
+ },
+ 'Yurlungur': {
+ name: 'Yurlungur',
+ inherits: InheritanceType[Element.ELEC],
+ level: 43,
+ currentLevel: 43,
+ arcana: Arcana.SUN,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL],
+ skills: [
+ ['Brain Jack', 0],
+ ['Mazionga', 0],
+ ['Megidola', 0],
+ ['Revolution', 45],
+ ['Elec Break', 46],
+ ['Tetra Break', 48],
+ ['Elec Boost', 49]
+ ],
+ stats: [26, 29, 30, 27, 24],
+ trait: 'Mouth of Savoring'
+ },
+ 'Zaou-Gongen': {
+ name: 'Zaou-Gongen',
+ inherits: InheritanceType[Element.FIRE],
+ level: 80,
+ currentLevel: 80,
+ arcana: Arcana.STRENGTH,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.REPEL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NULL],
+ skills: [
+ ['Maragidyne', 0],
+ ['Abysmal Surge', 0],
+ ['God\'s Hand', 0],
+ ['Evade Phys', 82],
+ ['Enduring Soul', 83],
+ ['Gun Amp', 84],
+ ['Blazing Hell', 86]
+ ],
+ stats: [57, 45, 50, 56, 39],
+ trait: 'Undying Fury',
+ 'max': true
+ },
+ 'Zouchouten': {
+ name: 'Zouchouten',
+ inherits: InheritanceType[Element.ELEC],
+ level: 31,
+ currentLevel: 31,
+ arcana: Arcana.STRENGTH,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Kill Rush', 0],
+ ['Zionga', 0],
+ ['Terror Claw', 32],
+ ['Sharp Student', 33],
+ ['Resist Fear', 34],
+ ['Swift Strike', 35],
+ ['Attack Master', 36]
+ ],
+ stats: [22, 19, 24, 18, 17],
+ trait: 'Electric Bloodline'
+ },
+ 'Ariadne': {
+ name: 'Ariadne',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 30,
+ currentLevel: 30,
+ arcana: Arcana.FORTUNE,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL, Affinity.RESIST, Affinity.NEUTRAL],
+ skills: [
+ ['Beast Weaver', 0],
+ ['Apt Pupil', 0],
+ ['Miracle Punch', 0],
+ ['Attack Master', 31],
+ ['Fortified Moxy', 32],
+ ['Evade Phys', 34],
+ ['Charge', 36]
+ ],
+ stats: [23, 19, 20, 17, 18],
+ trait: 'Tag Team',
+ 'dlc': true
+ },
+ 'Ariadne Picaro': {
+ name: 'Ariadne Picaro',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 42,
+ currentLevel: 42,
+ arcana: Arcana.FORTUNE,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL, Affinity.RESIST, Affinity.NEUTRAL],
+ skills: [
+ ['Beast Weaver', 0],
+ ['Apt Pupil', 0],
+ ['Miracle Punch', 0],
+ ['Auto-Mataru', 43],
+ ['Heat Up', 44],
+ ['Evade Phys', 46],
+ ['Charge', 48]
+ ],
+ stats: [36, 23, 29, 24, 21],
+ trait: 'Tag Team',
+ 'dlc': true
+ },
+ 'Asterius': {
+ name: 'Asterius',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 56,
+ currentLevel: 56,
+ arcana: Arcana.FORTUNE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL],
+ skills: [
+ ['Titanomachia', 0],
+ ['Maragidyne', 0],
+ ['Burn Boost', 0],
+ ['Auto-Mataru', 57],
+ ['Fire Amp', 59],
+ ['Tetrakarn', 60],
+ ['Gigantomachia', 62]
+ ],
+ stats: [43, 43, 32, 32, 25],
+ trait: 'Frenzied Bull',
+ 'dlc': true
+ },
+ 'Asterius Picaro': {
+ name: 'Asterius Picaro',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 62,
+ currentLevel: 62,
+ arcana: Arcana.FORTUNE,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL],
+ skills: [
+ ['Titanomachia', 0],
+ ['Maragidyne', 0],
+ ['Burn Boost', 0],
+ ['Auto-Masuku', 63],
+ ['Fire Amp', 65],
+ ['Makarakarn', 66],
+ ['Gigantomachia', 68]
+ ],
+ stats: [46, 46, 36, 36, 29],
+ trait: 'Frenzied Bull',
+ 'dlc': true
+ },
+ 'Athena': {
+ name: 'Athena',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 46,
+ currentLevel: 46,
+ arcana: Arcana.CHARIOT,
+ affinities: [Affinity.RESIST, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Akasha Arts', 0],
+ ['Marakukaja', 0],
+ ['Rising Slash', 0],
+ ['Diarahan', 47],
+ ['Matarukaja', 48],
+ ['Auto-Maraku', 50],
+ ['Samarecarm', 51],
+ ['Megaton Raid', 52]
+ ],
+ stats: [33, 27, 29, 29, 27],
+ trait: 'Grace of the Olive',
+ 'dlc': true
+ },
+ 'Athena Picaro': {
+ name: 'Athena Picaro',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 50,
+ currentLevel: 50,
+ arcana: Arcana.CHARIOT,
+ affinities: [Affinity.RESIST, Affinity.NULL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Akasha Arts', 0],
+ ['Matarukaja', 0],
+ ['Rising Slash', 0],
+ ['Diarahan', 51],
+ ['Marakukaja', 52],
+ ['Auto-Mataru', 54],
+ ['Samarecarm', 55],
+ ['Megaton Raid', 56]
+ ],
+ stats: [35, 30, 31, 32, 29],
+ trait: 'Grace of the Olive',
+ 'dlc': true
+ },
+ 'Izanagi': {
+ name: 'Izanagi',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 20,
+ currentLevel: 20,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL],
+ skills: [
+ ['Cross Slash', 0],
+ ['Zionga', 0],
+ ['Tarukaja', 0],
+ ['Rising Slash', 21],
+ ['Dodge Phys', 22],
+ ['Mazionga', 24],
+ ['Growth 3', 25]
+ ],
+ stats: [14, 13, 13, 14, 13],
+ trait: 'God Maker',
+ 'dlc': true
+ },
+ 'Izanagi Picaro': {
+ name: 'Izanagi Picaro',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 23,
+ currentLevel: 23,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL],
+ skills: [
+ ['Cross Slash', 0],
+ ['Zionga', 0],
+ ['Rakukaja', 0],
+ ['Rising Slash', 24],
+ ['Null Phys', 25],
+ ['Mazionga', 27],
+ ['Growth 3', 28]
+ ],
+ stats: [16, 15, 15, 16, 14],
+ trait: 'God Maker',
+ 'dlc': true
+ },
+ 'Izanagi-no-Okami': {
+ name: 'Izanagi-no-Okami',
+ special: true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 80,
+ currentLevel: 80,
+ arcana: Arcana.WORLD,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Myriad Truths', 0],
+ ['Victory Cry', 0],
+ ['Angelic Grace', 0],
+ ['Concentrate', 81],
+ ['Heat Riser', 82],
+ ['Heat Up', 83],
+ ['Salvation', 84],
+ ['Almighty Boost', 85]
+ ],
+ stats: [52, 56, 46, 48, 45],
+ trait: 'Country Maker',
+ 'dlc': true
+ },
+ 'Izanagi-no-Okami Picaro': {
+ name: 'Izanagi-no-Okami Picaro',
+ special: true,
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 89,
+ currentLevel: 89,
+ arcana: Arcana.WORLD,
+ affinities: [Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL],
+ skills: [
+ ['Myriad Truths', 0],
+ ['Victory Cry', 0],
+ ['Angelic Grace', 0],
+ ['Concentrate', 90],
+ ['Debilitate', 91],
+ ['Enduring Soul', 92],
+ ['Salvation', 93],
+ ['Almighty Boost', 94]
+ ],
+ stats: [54, 61, 56, 58, 45],
+ trait: 'Country Maker',
+ 'dlc': true
+ },
+ 'Kaguya': {
+ name: 'Kaguya',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 16,
+ currentLevel: 16,
+ arcana: Arcana.MOON,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NULL],
+ skills: [
+ ['Shining Arrows', 0],
+ ['Mediarama', 0],
+ ['Counterstrike', 0],
+ ['Divine Grace', 17],
+ ['Amrita Shower', 18],
+ ['Diarahan', 21],
+ ['Repel Phys', 22]
+ ],
+ stats: [11, 15, 12, 11, 6],
+ trait: 'Inviolable Beauty',
+ 'dlc': true
+ },
+ 'Kaguya Picaro': {
+ name: 'Kaguya Picaro',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 25,
+ currentLevel: 25,
+ arcana: Arcana.MOON,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NULL, Affinity.NULL],
+ skills: [
+ ['Shining Arrows', 0],
+ ['Mediarama', 0],
+ ['High Counter', 0],
+ ['Divine Grace', 26],
+ ['Amrita Shower', 27],
+ ['Diarahan', 30],
+ ['Repel Phys', 31]
+ ],
+ stats: [17, 20, 19, 15, 11],
+ trait: 'Inviolable Beauty',
+ 'dlc': true
+ },
+ 'Magatsu-Izanagi': {
+ name: 'Magatsu-Izanagi',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 44,
+ currentLevel: 44,
+ arcana: Arcana.TOWER,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL, Affinity.NULL],
+ skills: [
+ ['Magatsu Mandala', 0],
+ ['Megidola', 0],
+ ['Ghastly Wail', 0],
+ ['Maziodyne', 45],
+ ['Bloodbath', 46],
+ ['Attack Master', 48],
+ ['Heat Riser', 50]
+ ],
+ stats: [37, 35, 32, 25, 10],
+ trait: 'Hollow Jester',
+ 'dlc': true
+ },
+ 'Magatsu-Izanagi Picaro': {
+ name: 'Magatsu-Izanagi Picaro',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 48,
+ currentLevel: 48,
+ arcana: Arcana.TOWER,
+ affinities: [Affinity.NEUTRAL, Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL, Affinity.NULL],
+ skills: [
+ ['Magatsu Mandala', 0],
+ ['Megidola', 0],
+ ['Ghastly Wail', 0],
+ ['Magarudyne', 49],
+ ['Bloodbath', 50],
+ ['Speed Master', 52],
+ ['Heat Riser', 54]
+ ],
+ stats: [40, 38, 35, 27, 11],
+ trait: 'Hollow Jester',
+ 'dlc': true
+ },
+ 'Messiah': {
+ name: 'Messiah',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 81,
+ currentLevel: 81,
+ arcana: Arcana.JUDGEMENT,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.REPEL, Affinity.WEAK],
+ skills: [
+ ['Oratorio', 0],
+ ['Megidolaon', 0],
+ ['God\'s Hand', 0],
+ ['Regenerate 3', 82],
+ ['Enduring Soul', 83],
+ ['Invigorate 3', 84],
+ ['Absorb Phys', 85],
+ ['Almighty Boost', 87]
+ ],
+ stats: [50, 50, 50, 50, 50],
+ trait: 'Hallowed Spirit',
+ 'dlc': true
+ },
+ 'Messiah Picaro': {
+ name: 'Messiah Picaro',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 90,
+ currentLevel: 90,
+ arcana: Arcana.JUDGEMENT,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.RESIST, Affinity.REPEL, Affinity.WEAK],
+ skills: [
+ ['Oratorio', 0],
+ ['Megidolaon', 0],
+ ['Agneyastra', 0],
+ ['Insta-Heal', 91],
+ ['Enduring Soul', 92],
+ ['Life Aid', 93],
+ ['Firm Stance', 94],
+ ['Almighty Boost', 96]
+ ],
+ stats: [56, 56, 55, 55, 55],
+ trait: 'Hallowed Spirit',
+ 'dlc': true
+ },
+ 'Orpheus': {
+ name: 'Orpheus',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 26,
+ currentLevel: 26,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK],
+ skills: [
+ ['Cadenza', 0],
+ ['Agilao', 0],
+ ['Tarunda', 0],
+ ['Endure', 27],
+ ['Maragion', 29],
+ ['Marakukaja', 30],
+ ['Fire Boost', 32]
+ ],
+ stats: [17, 17, 17, 17, 17],
+ trait: 'Circle of Sadness',
+ 'dlc': true
+ },
+ 'Orpheus F': {
+ name: 'Orpheus F',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 11,
+ currentLevel: 11,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK],
+ skills: [
+ ['Neo Cadenza', 0],
+ ['Agi', 0],
+ ['Tarunda', 0],
+ ['Endure', 0],
+ ['Maragion', 12],
+ ['Marakukaja', 14],
+ ['Dodge Curse', 15]
+ ],
+ stats: [8, 9, 8, 9, 6],
+ trait: 'Circle of Sadness',
+ 'dlc': true
+ },
+ 'Orpheus F Picaro': {
+ name: 'Orpheus F Picaro',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 13,
+ currentLevel: 13,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK],
+ skills: [
+ ['Neo Cadenza', 0],
+ ['Maragi', 0],
+ ['Rakunda', 0],
+ ['Endure', 0],
+ ['Agilao', 14],
+ ['Marakukaja', 16],
+ ['Dodge Curse', 17]
+ ],
+ stats: [9, 11, 9, 10, 7],
+ trait: 'Circle of Sadness',
+ 'dlc': true
+ },
+ 'Orpheus Picaro': {
+ name: 'Orpheus Picaro',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 29,
+ currentLevel: 29,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.RESIST, Affinity.WEAK],
+ skills: [
+ ['Cadenza', 0],
+ ['Maragion', 0],
+ ['Matarunda', 0],
+ ['Endure', 30],
+ ['Agidyne', 32],
+ ['Matarukaja', 33],
+ ['Fire Boost', 35]
+ ],
+ stats: [19, 19, 19, 19, 18],
+ trait: 'Circle of Sadness',
+ 'dlc': true
+ },
+ 'Raoul': {
+ name: 'Raoul',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 76,
+ currentLevel: 76,
+ arcana: Arcana.FOOL,
+ affinities: [Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.NULL],
+ skills: [
+ ['Phantom Show', 0],
+ ['Eigaon', 0],
+ ['Ali Dance', 0],
+ ['Maeigaon', 78],
+ ['Heat Riser', 79],
+ ['Curse Amp', 80],
+ ['Concentrate', 81],
+ ['Life Aid', 82]
+ ],
+ stats: [47, 49, 43, 54, 42],
+ trait: 'Hazy Presence',
+ 'dlc': true
+ },
+ 'Thanatos': {
+ name: 'Thanatos',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 65,
+ currentLevel: 65,
+ arcana: Arcana.DEATH,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.REPEL],
+ skills: [
+ ['Door of Hades', 0],
+ ['Maeigaon', 0],
+ ['Mamudoon', 0],
+ ['Curse Amp', 66],
+ ['One-shot Kill', 68],
+ ['Fortified Moxy', 69],
+ ['Enduring Soul', 70]
+ ],
+ stats: [43, 49, 41, 38, 31],
+ trait: 'Iron Heart',
+ 'dlc': true
+ },
+ 'Thanatos Picaro': {
+ name: 'Thanatos Picaro',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 69,
+ currentLevel: 69,
+ arcana: Arcana.DEATH,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.REPEL],
+ skills: [
+ ['Door of Hades', 0],
+ ['Maeigaon', 0],
+ ['Mamudoon', 0],
+ ['Mudo Boost', 70],
+ ['One-shot Kill', 72],
+ ['Adverse Resolve', 73],
+ ['Enduring Soul', 74]
+ ],
+ stats: [45, 51, 43, 40, 35],
+ trait: 'Iron Heart',
+ 'dlc': true
+ },
+ 'Tsukiyomi': {
+ name: 'Tsukiyomi',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 50,
+ currentLevel: 50,
+ arcana: Arcana.MOON,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.REPEL],
+ skills: [
+ ['Abyssal Wings', 0],
+ ['Absorb Curse', 0],
+ ['Myriad Slashes', 0],
+ ['Life Drain', 0],
+ ['Curse Amp', 53],
+ ['Vorpal Blade', 55],
+ ['Arms Master', 56]
+ ],
+ stats: [38, 32, 33, 37, 17],
+ trait: 'Bolstering Force',
+ 'dlc': true
+ },
+ 'Tsukiyomi Picaro': {
+ name: 'Tsukiyomi Picaro',
+ inherits: InheritanceType[Element.ALMIGHTY],
+ level: 55,
+ currentLevel: 55,
+ arcana: Arcana.MOON,
+ affinities: [Affinity.RESIST, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.NEUTRAL, Affinity.WEAK, Affinity.RESIST, Affinity.REPEL],
+ skills: [
+ ['Abyssal Wings', 0],
+ ['Absorb Curse', 0],
+ ['Myriad Slashes', 0],
+ ['Spirit Drain', 0],
+ ['Curse Amp', 58],
+ ['Vorpal Blade', 60],
+ ['Spell Master', 61]
+ ],
+ stats: [41, 35, 36, 40, 20],
+ trait: 'Bolstering Force',
+ 'dlc': true
+ }
+};
+
+export const DlcPersonas: string [][] = [
+ ['Ariadne', 'Ariadne Picaro'],
+ ['Asterius', 'Asterius Picaro'],
+ ['Athena', 'Athena Picaro'],
+ ['Izanagi', 'Izanagi Picaro'],
+ ['Izanagi-no-Okami', 'Izanagi-no-Okami Picaro'],
+ ['Kaguya', 'Kaguya Picaro'],
+ ['Magatsu-Izanagi', 'Magatsu-Izanagi Picaro'],
+ ['Messiah', 'Messiah Picaro'],
+ ['Orpheus', 'Orpheus Picaro'],
+ ['Orpheus F', 'Orpheus F Picaro'],
+ ['Thanatos', 'Thanatos Picaro'],
+ ['Tsukiyomi', 'Tsukiyomi Picaro'],
+ ['Raoul'],
+];
+
+export const TreasurePersonas: string [] = [
+ 'Crystal Skull',
+ 'Koh-i-Noor',
+ 'Queen\'s Necklace',
+ 'Regent',
+ 'Stone of Scone',
+ 'Orlov',
+ 'Emperor\'s Amulet',
+ 'Hope Diamond',
+ 'Orichalcum',
+];
+
+interface TreasureModMap {
+ [index: string]: number[];
+}
+
+export const TreasureModifiers: TreasureModMap = {
+ [Arcana.FOOL]: [+2, +1, +1, -1, -1, -1, -1, +1, +1],
+ [Arcana.MAGICIAN]: [+1, -1, -1, +1, +2, +1, +1, +1, -2],
+ [Arcana.PRIESTESS]: [+1, +2, +1, -1, -1, +1, -1, +1, +1],
+ [Arcana.EMPRESS]: [+1, +1, +2, -1, -1, +1, +1, -1, +1],
+ [Arcana.EMPEROR]: [-1, -1, -1, +2, +1, -1, +1, +1, -1],
+ [Arcana.HIEROPHANT]: [-1, -2, -1, +1, +1, -1, -1, -1, +2],
+ [Arcana.LOVERS]: [+1, +1, +1, -1, -1, -1, -1, -2, -1],
+ [Arcana.CHARIOT]: [-1, -1, -1, +1, +1, +1, -2, -1, -1],
+ [Arcana.JUSTICE]: [+1, +2, -1, +1, -1, -2, +1, -1, +1],
+ [Arcana.HERMIT]: [-2, +1, -1, +2, -1, -1, +1, +1, -1],
+ [Arcana.FORTUNE]: [-1, -1, -1, +1, +2, +1, -1, +1, +1],
+ [Arcana.STRENGTH]: [-1, +1, +1, -1, +1, +2, +1, -1, -1],
+ [Arcana.HANGEDMAN]: [-1, -1, +1, +1, -1, +1, +2, -1, +1],
+ [Arcana.DEATH]: [+1, +1, -1, +1, +1, -1, -1, +2, +1],
+ [Arcana.TEMPERANCE]: [+2, -1, +1, -1, -1, +1, +1, -1, -1],
+ [Arcana.DEVIL]: [-1, +1, +1, -2, -1, -1, +2, -1, +1],
+ [Arcana.TOWER]: [-1, +1, -2, -1, +1, -1, +1, -1, -1],
+ [Arcana.STAR]: [+1, -1, -1, +1, +1, +2, -1, +1, +1],
+ [Arcana.MOON]: [-1, -1, +2, -1, -2, +1, -1, -1, -1],
+ [Arcana.SUN]: [+1, +1, -1, +1, -1, +1, -1, +2, +1],
+ [Arcana.JUDGEMENT]: [-1, -1, -1, -1, +1, -1, +1, -1, +1],
+ [Arcana.WORLD]: [+1, +1, +1, +1, +1, +1, +1, +1, +1],
+ [Arcana.FAITH]: [+1, +1, +1, -1, +1, -1, +1, +1, +2],
+ [Arcana.COUNCILLOR]: [+1, +1, +1, +1, +1, -1, +1, +1, +1],
+};
+
+export const getAllPersonasOfArcana = (arcana: Arcana, lockedDlc?: string[]): PersonaData[] => {
+ let arcanaPersonas: PersonaData[] = Object.values(Personas).filter(persona => persona.arcana === arcana).sort((a, b) => a.level - b.level);
+
+ if (lockedDlc && 0 < lockedDlc.length)
+ arcanaPersonas = arcanaPersonas.filter(persona => !lockedDlc.includes(persona.name));
+
+ return arcanaPersonas;
+}
+
+export const personaHasSkill = (persona: PersonaData, skill: SkillData): boolean => {
+ let has: boolean = false;
+ persona.skills.forEach(s => {
+ if (s[0] === skill.name)
+ has = true;
+ });
+ return has;
+}
+
+export const personaCanInherit = (persona: PersonaData, element: Element): boolean => {
+ const inherits = [ ...persona.inherits, Element.SUPPORT, Element.ALMIGHTY, Element.PASSIVE, Element.TRAIT];
+ return inherits.includes(element);
+}
+
+export const getPersonaSkillLevel = (persona: PersonaData, skill: SkillData): number => {
+ if (!personaHasSkill(persona, skill))
+ return -1;
+
+ let level = 0;
+ persona.skills.forEach(s => {
+ if (s[0] === skill.name)
+ level = s[1];
+ });
+
+ return 0 === level ? persona.level : level;
+}
+
+export const getPersonaApproxCost = (persona: PersonaData): number => {
+ return 2147 + (126 * persona.currentLevel) + (27 * persona.currentLevel * persona.currentLevel);
+}
+
+export const isPersonaData = (o: any): o is PersonaData => Object.values(Personas).includes(o);
\ No newline at end of file
diff --git a/src/data/skills.ts b/src/data/skills.ts
new file mode 100644
index 0000000..04c36dc
--- /dev/null
+++ b/src/data/skills.ts
@@ -0,0 +1,2546 @@
+import { Element } from './types';
+
+export interface SkillData {
+ name: string;
+ effect: string;
+ element: Element;
+
+ unique?: boolean;
+}
+
+interface SkillMap {
+ [index: string]: SkillData;
+}
+
+export const Skills: SkillMap = {
+ 'Absorb Bless': {
+ name: 'Absorb Bless',
+ effect: 'Absorb Bless attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Absorb Curse': {
+ name: 'Absorb Curse',
+ effect: 'Absorb Curse attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Absorb Elec': {
+ name: 'Absorb Elec', effect: 'Absorb Electric attacks.', element: Element.PASSIVE},
+ 'Absorb Fire': {
+ name: 'Absorb Fire',
+ effect: 'Absorb Fire attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Absorb Ice': {
+ name: 'Absorb Ice',
+ effect: 'Absorb Ice attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Absorb Nuke': {
+ name: 'Absorb Nuke',effect: 'Absorb Nuclear attacks.', element: Element.PASSIVE, },
+ 'Absorb Phys': {
+ name: 'Absorb Phys',
+ effect: 'Absorb Phys attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Absorb Psy': {
+ name: 'Absorb Psy',effect: 'Absorb Psy attacks.', element: Element.PASSIVE, },
+ 'Absorb Wind': {
+ name: 'Absorb Wind',effect: 'Absorb Wind attacks.', element: Element.PASSIVE, },
+ 'Abysmal Surge': {
+ name: 'Abysmal Surge',
+ effect: 'Inflict Despair (medium odds) to all foes.',
+ element: Element.AILMENT, },
+ 'Abyssal Eye': {
+ name: 'Abyssal Eye',
+ effect: 'Deal severe Almighty damage to all foes.',
+ element: Element.ALMIGHTY,
+ unique: true
+ },
+ 'Abyssal Wings': {
+ name: 'Abyssal Wings',
+ effect: 'Deal severe Curse damage to all foes.',
+ element: Element.CURSE,
+ unique: true
+ },
+ 'Active Support': {
+ name: 'Active Support',
+ effect: 'Moral Support may now Charge or recover SP.',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Adverse Resolve': {
+ name: 'Adverse Resolve',
+ effect: 'Increase critical rate when being ambushed.',
+ element: Element.PASSIVE,
+ },
+ 'Agi': {
+ name: 'Agi',
+ effect: 'Deal weak Fire damage to 1 foe.',
+ element: Element.FIRE,
+ },
+ 'Agidyne': {
+ name: 'Agidyne',
+ effect: 'Deal heavy Fire damage to 1 foe.',
+ element: Element.FIRE,
+
+ },
+ 'Agilao': {
+ name: 'Agilao',
+ effect: 'Deal medium Fire damage to 1 foe.',
+ element: Element.FIRE,
+ },
+ 'Agneyastra': {
+ name: 'Agneyastra',
+ effect: 'Deal 1 to 3 times medium Phys damage to all foes.',
+ element: Element.PHYS,
+ },
+ 'Ailment Boost': {
+ name: 'Ailment Boost',
+ effect: 'Increase chance of inflicting all ailments.',
+ element: Element.PASSIVE,
+ },
+ 'Ailment Hunter': {
+ name: 'Ailment Hunter',
+ effect: 'Damage +25% for each foe afflicted with an ailment',
+ element: Element.TRAIT,
+ },
+ 'Akasha Arts': {
+ name: 'Akasha Arts',
+ effect: 'Deal 1-2 times severe Phys damage to all foes.',
+ element: Element.PHYS,
+ unique: true
+ },
+ 'Ali Dance': {
+ name: 'Ali Dance',
+ effect: 'Half hit rate of all incoming attacks.',
+ element: Element.PASSIVE,
+ },
+ 'All-out Attack Boost': {
+ name: 'All-out Attack Boost',effect: 'Increases damage from All-out Attacks', element: Element.PASSIVE},
+ 'Almighty Amp': {
+ name: 'Almighty Amp', effect: 'Strengthen Almighty attacks by 50%.', element: Element.PASSIVE},
+ 'Allure of Wisdom': {
+ name: 'Allure of Wisdom',
+ effect: 'Reduces costs of magic skills by 75%',
+ element: Element.TRAIT,
+ },
+ 'Almighty Boost': {
+ name: 'Almighty Boost',
+ effect: 'Strengthen Almighty attacks by 25%.',
+ element: Element.PASSIVE,
+ },
+ 'Ambient Aid': {
+ name: 'Ambient Aid',
+ effect: 'Greatly increase inflicting rate of all status effects under rainy day or special weather warning.',
+ element: Element.PASSIVE,
+ },
+ 'Amrita Drop': {
+ name: 'Amrita Drop',
+ effect: 'Cure all ailments of 1 ally except for unique status.',
+ element: Element.HEALING,
+ },
+ 'Amrita Shower': {
+ name: 'Amrita Shower',
+ effect: 'Cure all ailments of party except for unique status.',
+ element: Element.HEALING,
+ },
+ 'Analysis': {
+ name: 'Analysis',
+ effect: 'Confirm affinities you have previously attacked.',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Angelic Grace': {
+ name: 'Angelic Grace',
+ effect: 'Double evasion against Fire/Ice/Elec/Wind/Nuke/Psy/Bless/Curse attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Apt Pupil': {
+ name: 'Apt Pupil',
+ effect: 'Increase critical rate.',
+ element: Element.PASSIVE,
+ },
+ 'Arms Master': {
+ name: 'Arms Master',
+ effect: 'Half HP cost for physical skills.',
+ element: Element.PASSIVE,
+ },
+ 'Assault Dive': {
+ name: 'Assault Dive',
+ effect: 'Deal heavy Phys damage to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Atomic Bloodline': {
+ name: 'Atomic Bloodline',
+ effect: 'Halves costs of Nuke skills',
+ element: Element.TRAIT,
+ },
+ 'Atomic Flare': {
+ name: 'Atomic Flare',
+ effect: 'Deal severe Nuclear damage to 1 foe.',
+ element: Element.NUKE,
+ },
+ 'Atomic Hellscape': {
+ name: 'Atomic Hellscape',effect: 'Reduces costs of Nuke skills by 75%', element: Element.TRAIT, },
+ 'Attack Master': {
+ name: 'Attack Master',
+ effect: 'Automatic Tarukaja at the start of battle.',
+ element: Element.PASSIVE,
+ },
+ 'Attract': {
+ name: 'Attract',
+ effect: 'Raises chance of being targeted',
+ element: Element.SUPPORT
+ },
+ 'Auto-Maraku': {
+ name: 'Auto-Maraku',
+ effect: 'Automatic Marakukaja at the start of battle. (Overwrites Defense Master)',
+ element: Element.PASSIVE,
+ },
+ 'Auto-Masuku': {
+ name: 'Auto-Masuku',
+ effect: 'Automatic Masukukaja at the start of battle. (Overwrites Speed Master)',
+ element: Element.PASSIVE,
+ },
+ 'Auto-Mataru': {
+ name: 'Auto-Mataru',
+ effect: 'Automatic Matarukaja at the start of battle. (Overwrites Attack Master)',
+ element: Element.PASSIVE,
+ },
+ 'Ave Maria': {
+ name: 'Ave Maria',effect: 'Reduces costs of Support spells by 75%', element: Element.TRAIT, },
+ 'Ayamur': {
+ name: 'Ayamur',
+ effect: 'Deal 3 times medium Phys damage to 1 foe. High accuracy.',
+ element: Element.PHYS,
+ unique: true
+ },
+ 'Bad Beat': {
+ name: 'Bad Beat',
+ effect: 'Deal medium Phys damage and inflict Despair (low odds) to all foes.',
+ element: Element.PHYS,
+ },
+ 'Baisudi': {
+ name: 'Baisudi',
+ effect: 'Cure Burn/Freeze/Shock of 1 ally.',
+ element: Element.HEALING,
+ },
+ 'Bargain Bolts': {
+ name: 'Bargain Bolts',effect: 'Reduces costs of Elec skills by 75%', element: Element.TRAIT, },
+ 'Beast Weaver': {
+ name: 'Beast Weaver',
+ effect: 'Deal grave Phys damage to 1 foe and user is debuffed with Tarunda.',
+ element: Element.PHYS,
+ unique: true
+ },
+ 'Black Viper': {
+ name: 'Black Viper',
+ effect: 'Deal severe Almighty damage to 1 foe.',
+ element: Element.ALMIGHTY,
+ unique: true
+ },
+ 'Blazing Hell': {
+ name: 'Blazing Hell',
+ effect: 'Deal severe Fire damage to all foes.',
+ element: Element.FIRE,
+ },
+ 'Bleeding Dry Brush': {
+ name: 'Bleeding Dry Brush',
+ effect: 'Drains next non-Almighty attack for 1 ally, Removes innate weaknesses',
+ element: Element.SUPPORT,
+ unique: true
+ },
+ 'Bless Amp': {
+ name: 'Bless Amp',
+ effect: 'Strengthen (non instant death) Bless attacks by 50%.',
+ element: Element.PASSIVE,
+ },
+ 'Bless Boost': {
+ name: 'Bless Boost',
+ effect: 'Strengthen (non instant death) Bless attacks by 25%.',
+ element: Element.PASSIVE,
+ },
+ 'Blessed Bloodline': {
+ name: 'Blessed Bloodline',
+ effect: 'Halves costs of Bless skills',
+ element: Element.TRAIT,
+ },
+ 'Bloodbath': {
+ name: 'Bloodbath',
+ effect: 'Deal heavy Phys damage and inflict Fear (low odds) to all foes.',
+ element: Element.PHYS,
+
+ },
+ 'Bloodstained Eyes': {
+ name: 'Bloodstained Eyes',
+ effect: 'Raises evasion against foes afflicted with ailments',
+ element: Element.TRAIT,
+ },
+ 'Bolstering Force': {
+ name: 'Bolstering Force',
+ effect: 'Damage dealt during 1 More +50%',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Brain Buster': {
+ name: 'Brain Buster',
+ effect: 'Deal heavy Phys damage and inflict Brainwash (low odds) to all foes.',
+ element: Element.PHYS,
+ },
+ 'Brain Jack': {
+ name: 'Brain Jack',
+ effect: 'Inflict Brainwash (medium odds) to all foes.',
+ element: Element.AILMENT,
+ },
+ 'Brain Shake': {
+ name: 'Brain Shake',
+ effect: 'Deal medium Phys damage and inflict Brainwash (medium odds) to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Brainwash Boost': {
+ name: 'Brainwash Boost',
+ effect: 'Increase chance of inflicting Brainwash.',
+ element: Element.PASSIVE,
+ },
+ 'Brave Blade': {
+ name: 'Brave Blade',
+ effect: 'Deal grave Phys damage to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Brave Step': {
+ name: 'Brave Step',
+ effect: 'Raises critical rate for 3 turns for all allies',
+ element: Element.SUPPORT,
+ unique: true
+ },
+ 'Bufu': {
+ name: 'Bufu',
+ effect: 'Deal weak Ice damage to 1 foe.',
+ element: Element.ICE,
+ },
+ 'Bufudyne': {
+ name: 'Bufudyne',
+ effect: 'Deal heavy Ice damage to 1 foe.',
+ element: Element.ICE,
+ },
+ 'Bufula': {
+ name: 'Bufula',
+ effect: 'Deal medium Ice damage to 1 foe.',
+ element: Element.ICE,
+ },
+ 'Burn Boost': {
+ name: 'Burn Boost',
+ effect: 'Increase chance of inflicting Burn.',
+ element: Element.PASSIVE,
+ },
+ 'Cadenza': {
+ name: 'Cadenza',
+ effect: 'Restore 50% HP of party and increase evasion rate.',
+ element: Element.HEALING,
+ unique: true
+ },
+ 'Champion\'s Cup': {
+ name: 'Champion\'s Cup',
+ effect: 'Diarama + Tarukaja',
+ element: Element.HEALING,
+ unique: true
+ },
+ 'Charge': {
+ name: 'Charge',
+ effect: 'Multiply user\'s next Phys attack damage by 2.5.',
+ element: Element.SUPPORT,
+ },
+ 'Checkmate': {
+ name: 'Checkmate', effect: 'Matarunda + Marakunda + Masukunda', element: Element.SUPPORT, unique: true},
+ 'Chi You\'s Blessing': {
+ name: 'Chi You\'s Blessing',
+ effect: 'Reduces costs of Psy skills by 75%',
+ element: Element.TRAIT,
+ },
+ 'Circle of Sadness': {
+ name: 'Circle of Sadness',
+ effect: 'Activates endure up to 4 times',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Cleave': {
+ name: 'Cleave',
+ effect: 'Deal weak Phys damage to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Climate Decorum': {
+ name: 'Climate Decorum',
+ effect: 'Greatly increase evasion under rainy day or special weather warning.',
+ element: Element.PASSIVE,
+ },
+ 'Cocytus': {
+ name: 'Cocytus',effect: 'Reduces costs of Ice skills by 75%', element: Element.TRAIT, },
+ 'Cold-Blooded': {
+ name: 'Cold-Blooded',
+ effect: 'Increases chance of inflicting Freeze during 1 More',
+ element: Element.TRAIT,
+ },
+ 'Conceal': {
+ name: 'Conceal',
+ effect: 'Lowers chance of being targeted',
+ element: Element.SUPPORT
+ },
+ 'Concentrate': {
+ name: 'Concentrate',
+ effect: 'Multiply user\'s next magical attack damage by 2.5.',
+ element: Element.SUPPORT,
+ },
+ 'Confuse Boost': {
+ name: 'Confuse Boost',
+ effect: 'Increase chance of inflicting Confuse.',
+ element: Element.PASSIVE,
+ },
+ 'Cool Customer': {
+ name: 'Cool Customer',
+ effect: 'Reduces ailment susceptibility by 50% for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Cornered Fang': {
+ name: 'Cornered Fang',
+ effect: 'Deal medium Phys damage to 1 foe. More powerful when being ambushed.',
+ element: Element.PHYS,
+ },
+ 'Cosmic Flare': {
+ name: 'Cosmic Flare',
+ effect: 'Deal severe Nuclear damage to all foes.',
+ element: Element.NUKE,
+ },
+ 'Counter': {
+ name: 'Counter',
+ effect: '10% chance of reflecting Phys attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Counterstrike': {
+ name: 'Counterstrike',
+ effect: '15% chance of reflecting Phys attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Country Maker': {
+ name: 'Country Maker',
+ effect: 'Scales damage dealt and received against Compendium completion rate',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Crisis Control': {
+ name: 'Crisis Control',
+ effect: 'Reduces damage taken when weakness struck',
+ element: Element.TRAIT,
+ },
+ 'Cross Slash': {
+ name: 'Cross Slash',
+ effect: 'Deal 2 times heavy Phys damage to 1 foe. High accuracy.',
+ element: Element.PHYS,
+ unique: true
+ },
+ 'Curse Amp': {
+ name: 'Curse Amp',
+ effect: 'Strengthen (non instant death) Curse attacks by 50%.',
+ element: Element.PASSIVE,
+ },
+ 'Curse Boost': {
+ name: 'Curse Boost',
+ effect: 'Strengthen (non instant death) Curse attacks by 25%.',
+ element: Element.PASSIVE,
+ },
+ 'Cursed Bloodline': {
+ name: 'Cursed Bloodline',
+ effect: 'Halves costs of Curse skills',
+ element: Element.TRAIT,
+ },
+ 'Dazzler': {
+ name: 'Dazzler',
+ effect: 'Inflict Dizzy (high odds) to 1 foe.',
+ element: Element.AILMENT,
+ },
+ 'Deadly Fury': {
+ name: 'Deadly Fury',
+ effect: 'Deal severe Phys damage to 1 foe. More powerful under Baton Pass.',
+ element: Element.PHYS,
+ },
+ 'Death Scythe': {
+ name: 'Death Scythe',
+ effect: 'Deal severe Phys damage and inflict Fear (medium odds) to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Deathbound': {
+ name: 'Deathbound',
+ effect: 'Deal 1 to 2 times medium Phys damage to all foes.',
+ element: Element.PHYS,
+ },
+ 'Deathly Illness': {
+ name: 'Deathly Illness',
+ effect: 'Increases success rate of instant death skills',
+ element: Element.TRAIT,
+ },
+ 'Debilitate': {
+ name: 'Debilitate',
+ effect: 'Decrease 1 foe\'s Attack, Defense and Agility for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Defense Master': {
+ name: 'Defense Master',
+ effect: 'Automatic Rakukaja at the start of battle.',
+ element: Element.PASSIVE,
+ },
+ 'Dekaja': {
+ name: 'Dekaja',
+ effect: 'Negate all -kaja buff effects of all foes.',
+ element: Element.SUPPORT,
+ },
+ 'Dekunda': {
+ name: 'Dekunda',
+ effect: 'Negate all -nda debuff effects of party.',
+ element: Element.SUPPORT,
+ },
+ 'Demon\'s Bite': {
+ name: 'Demon\'s Bite',effect: 'Doubles own HP recovery', element: Element.TRAIT, },
+ 'Demonic Decree': {
+ name: 'Demonic Decree',
+ effect: 'Half remaining HP of 1 foe.',
+ element: Element.CURSE,
+ },
+ 'Despair Boost': {
+ name: 'Despair Boost',
+ effect: 'Increase chance of inflicting Despair.',
+ element: Element.PASSIVE,
+ },
+ 'Dia': {
+ name: 'Dia',
+ effect: 'Slightly restore 1 ally\'s HP.',
+ element: Element.HEALING,
+ },
+ 'Diamond Dust': {
+ name: 'Diamond Dust',
+ effect: 'Deal severe Ice damage to 1 foe.',
+ element: Element.ICE,
+ },
+ 'Diarahan': {
+ name: 'Diarahan',
+ effect: 'Fully restore 1 ally\'s HP.',
+ element: Element.HEALING,
+ },
+ 'Diarama': {
+ name: 'Diarama',
+ effect: 'Moderately restore 1 ally\'s HP.',
+ element: Element.HEALING,
+ },
+ 'Die For Me!': {
+ name: 'Die For Me!',
+ effect: 'High chance of instantly killing all foes.',
+ element: Element.CURSE,
+ unique: true
+ },
+ 'Divine Grace': {
+ name: 'Divine Grace',
+ effect: 'Effects of healing magic are increased by 50%.',
+ element: Element.PASSIVE,
+ },
+ 'Divine Judgement': {
+ name: 'Divine Judgement',
+ effect: 'Half remaining HP of 1 foe.',
+ element: Element.BLESS,
+ },
+ 'Dizzy Boost': {
+ name: 'Dizzy Boost',
+ effect: 'Increase chance of inflicting Dizzy.',
+ element: Element.PASSIVE,
+ },
+ 'Dodge Bless': {
+ name: 'Dodge Bless',
+ effect: 'Double evasion rate against (non instant death) Bless attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Dodge Curse': {
+ name: 'Dodge Curse',
+ effect: 'Double evasion rate against (non instant death) Curse attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Dodge Elec': {
+ name: 'Dodge Elec',
+ effect: 'Double evasion rate against Electric attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Dodge Fire': {
+ name: 'Dodge Fire',
+ effect: 'Double evasion rate against Fire attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Dodge Ice': {
+ name: 'Dodge Ice',
+ effect: 'Double evasion rate against Ice attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Dodge Nuke': {
+ name: 'Dodge Nuke',
+ effect: 'Double evasion rate against Nuclear attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Dodge Phys': {
+ name: 'Dodge Phys',
+ effect: 'Doubles evasion rate against Phys attacks',
+ element: Element.PASSIVE,
+ },
+ 'Dodge Psy': {
+ name: 'Dodge Psy',
+ effect: 'Double evasion rate against Psy attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Dodge Wind': {
+ name: 'Dodge Wind',
+ effect: 'Double evasion rate against Wind attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Door of Hades': {
+ name: 'Door of Hades',
+ effect: 'Deal heavy Almighty damage to all foes with medium chance of instant kill.',
+ element: Element.ALMIGHTY,
+ unique: true
+ },
+ 'Dormin Rush': {
+ name: 'Dormin Rush',
+ effect: 'Deal medium Phys damage and inflict Sleep (low odds) to all foes.',
+ element: Element.PHYS,
+ },
+ 'Dormina': {
+ name: 'Dormina',
+ effect: 'Inflict Sleep (high odds) to 1 foe.',
+ element: Element.AILMENT,
+ },
+ 'Double Fangs': {
+ name: 'Double Fangs',
+ effect: 'Deal 2 times medium Phys damage to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Double Shot': {
+ name: 'Double Shot',
+ effect: 'Deal 2 times light Gun damage to 1 foe.',
+ element: Element.GUN,
+ },
+ 'Draining Mouth': {
+ name: 'Draining Mouth',
+ effect: 'Doubles effectiveness of absorption skills',
+ element: Element.TRAIT,
+ },
+ 'Dream Needle': {
+ name: 'Dream Needle',
+ effect: 'Deal weak Gun damage and inflict Sleep (medium odds) to 1 foe.',
+ element: Element.GUN,
+ },
+ 'Drunken Passion': {
+ name: 'Drunken Passion',effect: 'Reduces costs of Fire skills by 75%', element: Element.TRAIT, },
+ 'EXP Boost': {
+ name: 'EXP Boost',effect: 'EXP +15% after battle', element: Element.PASSIVE},
+ 'Eccentric Temper': {
+ name: 'Eccentric Temper',
+ effect: 'Low chance to strengthen Phys attacks by 80% for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Eiga': {
+ name: 'Eiga',
+ effect: 'Deal medium Curse damage to 1 foe.',
+ element: Element.CURSE,
+ },
+ 'Eigaon': {
+ name: 'Eigaon',
+ effect: 'Deal heavy Curse damage to 1 foe.',
+ element: Element.CURSE,
+ },
+ 'Eiha': {
+ name: 'Eiha',
+ effect: 'Deal weak Curse damage to 1 foe.',
+ element: Element.CURSE,
+ },
+ 'Elec Amp': {
+ name: 'Elec Amp',
+ effect: 'Strengthen Electric attacks by 50%.',
+ element: Element.PASSIVE,
+ },
+ 'Elec Boost': {
+ name: 'Elec Boost',
+ effect: 'Strengthen Electric attacks by 25%.',
+ element: Element.PASSIVE,
+ },
+ 'Elec Break': {
+ name: 'Elec Break',
+ effect: 'Negate Electric resistances of all foes.',
+ element: Element.SUPPORT,
+ },
+ 'Elec Wall': {
+ name: 'Elec Wall',
+ effect: 'Create a shield on 1 ally to reduce damage of Electric attacks for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Electric Bloodline': {
+ name: 'Electric Bloodline',
+ effect: 'Halves costs of Elec skills',
+ element: Element.TRAIT,
+ },
+ 'Emergency Shift': {
+ name: 'Emergency Shift',
+ effect: 'Chance to swap current party with backups when 2 or more people are KO\'d.',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Endure': {
+ name: 'Endure',
+ effect: 'Survive one fatal blow with 1 HP remaining.',
+ element: Element.PASSIVE,
+ },
+ 'Enduring Soul': {
+ name: 'Enduring Soul',
+ effect: 'Survive one fatal blow with HP completely recovered.',
+ element: Element.PASSIVE,
+ },
+ 'Energy Drop': {
+ name: 'Energy Drop',
+ effect: 'Cure Confuse/Fear/Despair/Rage/Brainwash of 1 ally.',
+ element: Element.HEALING,
+ },
+ 'Energy Shower': {
+ name: 'Energy Shower',
+ effect: 'Cure Confuse/Fear/Despair/Rage/Brainwash of party.',
+ element: Element.HEALING,
+ },
+ 'Evade Bless': {
+ name: 'Evade Bless',
+ effect: 'Triple evasion rate against (non instant death) Bless attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Evade Curse': {
+ name: 'Evade Curse',
+ effect: 'Triple evasion rate against (non instant death) Curse attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Evade Elec': {
+ name: 'Evade Elec',
+ effect: 'Triple evasion rate against Electric attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Evade Fire': {
+ name: 'Evade Fire',
+ effect: 'Triple evasion rate against Fire attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Evade Ice': {
+ name: 'Evade Ice',effect: 'Triple evasion rate against Ice attacks.', element: Element.PASSIVE, },
+ 'Evade Nuke': {
+ name: 'Evade Nuke',
+ effect: 'Triple evasion rate against Nuclear attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Evade Phys': {
+ name: 'Evade Phys',
+ effect: 'Triples evasion rate against Phys attacks',
+ element: Element.PASSIVE,
+ },
+ 'Evade Psy': {
+ name: 'Evade Psy',
+ effect: 'Triple evasion rate against Psy attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Evade Wind': {
+ name: 'Evade Wind',
+ effect: 'Triple evasion rate against Wind attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Evil Smile': {
+ name: 'Evil Smile',
+ effect: 'Inflict Fear (medium odds) to all foes.',
+ element: Element.AILMENT,
+ },
+ 'Evil Touch': {
+ name: 'Evil Touch',
+ effect: 'Inflict Fear (high odds) to 1 foe.',
+ element: Element.AILMENT,
+ },
+ 'Explosive Scheme': {
+ name: 'Explosive Scheme',
+ effect: 'Restores 25% HP after Futaba\'s All-Out Attack for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Famine\'s Scream': {
+ name: 'Famine\'s Scream',
+ effect: 'Inflict Hunger (medium odds) to all foes.',
+ element: Element.AILMENT,
+ unique: true
+ },
+ 'Fast Heal': {
+ name: 'Fast Heal',
+ effect: 'Half the time needed to recover from ailments.',
+ element: Element.PASSIVE,
+ },
+ 'Fear Boost': {
+ name: 'Fear Boost',
+ effect: 'Increase chance of inflicting Fear.',
+ element: Element.PASSIVE,
+ },
+ 'Fighting Spirit': {
+ name: 'Fighting Spirit',
+ effect: 'Next Phys attack +150% damage for all allies',
+ element: Element.SUPPORT,
+ unique: true
+ },
+ 'Final Guard': {
+ name: 'Final Guard',
+ effect: 'Chance to nullify a fatal attack to a current party member.',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Fire Amp': {
+ name: 'Fire Amp',
+ effect: 'Strengthen Fire attacks by 50%.',
+ element: Element.PASSIVE,
+ },
+ 'Fire Boost': {
+ name: 'Fire Boost',
+ effect: 'Strengthen Fire attacks by 25%.',
+ element: Element.PASSIVE,
+ },
+ 'Fire Break': {
+ name: 'Fire Break',
+ effect: 'Negate Fire resistances of all foes.',
+ element: Element.SUPPORT,
+ },
+ 'Fire Wall': {
+ name: 'Fire Wall',
+ effect: 'Create a shield on 1 ally to reduce damage of Fire attacks for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Firm Stance': {
+ name: 'Firm Stance',
+ effect: 'Half all incoming damage by sacrificing evasion completely.',
+ element: Element.PASSIVE,
+ },
+ 'Flash Bomb': {
+ name: 'Flash Bomb',
+ effect: 'Deal medium Phys damage and inflict Dizzy (low odds) to all foes.',
+ element: Element.PHYS,
+ },
+ 'Forget Boost': {
+ name: 'Forget Boost',
+ effect: 'Increase chance of inflicting Forget.',
+ element: Element.PASSIVE,
+ },
+ 'Fortified Moxy': {
+ name: 'Fortified Moxy',
+ effect: 'Increase critical rate when beginning battle with preemptive turn.',
+ element: Element.PASSIVE,
+ },
+ 'Fortify Spirit': {
+ name: 'Fortify Spirit',
+ effect: 'Reduce susceptibilities to all ailments.',
+ element: Element.PASSIVE,
+ },
+ 'Foul Breath': {
+ name: 'Foul Breath',
+ effect: 'Increase susceptibility to all ailments of 1 foe.',
+ element: Element.ALMIGHTY,
+ },
+ 'Foul Odor': {
+ name: 'Foul Odor',
+ effect: 'Increases chance of inflicting ailments after Baton Pass',
+ element: Element.TRAIT,
+ },
+ 'Foul Stench': {
+ name: 'Foul Stench',
+ effect: 'Increases chance of inflicting ailments',
+ element: Element.TRAIT,
+ },
+ 'Freeze Boost': {
+ name: 'Freeze Boost',
+ effect: 'Increase chance of inflicting Freeze.',
+ element: Element.PASSIVE,
+ },
+ 'Frei': {
+ name: 'Frei',
+ effect: 'Deal weak Nuclear damage to 1 foe.',
+ element: Element.NUKE,
+ },
+ 'Freidyne': {
+ name: 'Freidyne',
+ effect: 'Deal heavy Nuclear damage to 1 foe.',
+ element: Element.NUKE,
+ },
+ 'Freila': {
+ name: 'Freila',
+ effect: 'Deal medium Nuclear damage to 1 foe.',
+ element: Element.NUKE,
+ },
+ 'Frenzied Bull': {
+ name: 'Frenzied Bull',
+ effect: 'Scales damage dealt against lost HP under 50%',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Frigid Bloodline': {
+ name: 'Frigid Bloodline',
+ effect: 'Halves costs of Ice skills',
+ element: Element.TRAIT,
+ },
+ 'Gaia Blessing': {
+ name: 'Gaia Blessing',
+ effect: 'Increases chance of inflicting Burn, Freeze, and Shock by 50% for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Gaia Pact': {
+ name: 'Gaia Pact',
+ effect: 'Increases chance of inflicting Burn, Freeze, and Shock by 25% for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Gambler\'s Foresight': {
+ name: 'Gambler\'s Foresight',
+ effect: 'Masukukaja, Begins battle with Concentrate',
+ element: Element.SUPPORT,
+ unique: true
+ },
+ 'Garu': {
+ name: 'Garu',
+ effect: 'Deal weak Wind damage to 1 foe.',
+ element: Element.WIND,
+ },
+ 'Garudyne': {
+ name: 'Garudyne',
+ effect: 'Deal heavy Wind damage to 1 foe.',
+ element: Element.WIND,
+ },
+ 'Garula': {
+ name: 'Garula',
+ effect: 'Deal medium Wind damage to 1 foe.',
+ element: Element.WIND,
+ },
+ 'Gattling Blows': {
+ name: 'Gattling Blows',
+ effect: 'Deal 3 to 4 times light Phys damage to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Ghastly Wail': {
+ name: 'Ghastly Wail',
+ effect: 'Instantly kill all foes under Fear.',
+ element: Element.ALMIGHTY,
+ },
+ 'Ghost Nest': {
+ name: 'Ghost Nest',
+ effect: 'Increases chance of inflicting ailments on downed foes',
+ element: Element.TRAIT,
+ },
+ 'Giant Slice': {
+ name: 'Giant Slice',
+ effect: 'Deal medium Phys damage to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Gigantomachia': {
+ name: 'Gigantomachia',
+ effect: 'Deal grave Phys damage to all foes.',
+ element: Element.PHYS,
+ },
+ 'Gloomy Child': {
+ name: 'Gloomy Child',
+ effect: 'Activates all equipped special weather passives',
+ element: Element.TRAIT,
+ },
+ 'Gluttonmouth': {
+ name: 'Gluttonmouth',
+ effect: 'Strengthens own HP recovery by 50%',
+ element: Element.TRAIT,
+ },
+ 'God Maker': {
+ name: 'God Maker',
+ effect: 'Increases chance of ally traits activating',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'God\'s Hand': {
+ name: 'God\'s Hand',
+ effect: 'Deal grave Phys damage to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Grace of Mother': {
+ name: 'Grace of Mother',
+ effect: 'Reduces costs of Recovery skills by 75%',
+ element: Element.TRAIT,
+ },
+ 'Grace of the Olive': {
+ name: 'Grace of the Olive',
+ effect: 'Reduces costs of skills to 0 during 1 More',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Great Aim': {
+ name: 'Great Aim',effect: 'Gun hit rate +5%', element: Element.PASSIVE},
+ 'Growth 1': {
+ name: 'Growth 1',
+ effect: 'Persona gains 1/4 EXP while inactive.',
+ element: Element.PASSIVE,
+ },
+ 'Growth 2': {
+ name: 'Growth 2',
+ effect: 'Persona gains 1/2 EXP while inactive.',
+ element: Element.PASSIVE,
+ },
+ 'Growth 3': {
+ name: 'Growth 3',
+ effect: 'Persona gains full EXP even while inactive.',
+ element: Element.PASSIVE,
+ },
+ 'Guiding Tendril': {
+ name: 'Guiding Tendril',
+ effect: 'Downs all foes, Only usable when ambushing foe, Life Aid',
+ element: Element.SUPPORT,
+ unique: true
+ },
+ 'Gun Amp': {
+ name: 'Gun Amp',
+ effect: 'Gun damage +50%',
+ element: Element.PASSIVE,
+ },
+ 'Gun Boost': {
+ name: 'Gun Boost',effect: 'Gun damage +25%', element: Element.PASSIVE, },
+ 'Hallowed Spirit': {
+ name: 'Hallowed Spirit',
+ effect: 'Doubles own HP and SP recovery',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Hama': {
+ name: 'Hama',
+ effect: 'Small chance of instantly killing 1 foe.',
+ element: Element.BLESS,
+ },
+ 'Hama Boost': {
+ name: 'Hama Boost',
+ effect: 'Increase success rate of instant death by Bless skills.',
+ element: Element.PASSIVE,
+ },
+ 'Hamaon': {
+ name: 'Hamaon',
+ effect: 'Medium chance of instantly killing 1 foe.',
+ element: Element.BLESS,
+ },
+ 'Hassou Tobi': {
+ name: 'Hassou Tobi',
+ effect: 'Deal 8 times weak Phys damage to all foes.',
+ element: Element.PHYS,
+ unique: true
+ },
+ 'Hazy Presence': {
+ name: 'Hazy Presence',
+ effect: 'Increases chance of ally follow-up attacks',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Headbutt': {
+ name: 'Headbutt',
+ effect: 'Deal medium Phys damage and inflict Forget (medium odds) to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Heat Riser': {
+ name: 'Heat Riser',
+ effect: 'Increase 1 ally\'s Attack, Defense and Agility for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Heat Up': {
+ name: 'Heat Up',
+ effect: 'Recover 5% HP and 10 SP at the start of preemptive turn.',
+ element: Element.PASSIVE,
+ },
+ 'Heat Wave': {
+ name: 'Heat Wave',
+ effect: 'Deal heavy Phys damage to all foes.',
+ element: Element.PHYS,
+ },
+ 'Heated Bloodline': {
+ name: 'Heated Bloodline',
+ effect: 'Halves costs of Fire skills',
+ element: Element.TRAIT,
+ },
+ 'High Counter': {
+ name: 'High Counter',
+ effect: '20% chance of reflecting Phys attacks.',
+ element: Element.PASSIVE,
+ },
+ 'High Energy': {
+ name: 'High Energy',
+ effect: 'Next Magic attack +150% damage for all allies',
+ element: Element.SUPPORT,
+ unique: true
+ },
+ 'Hollow Jester': {
+ name: 'Hollow Jester',
+ effect: 'Damage +40% for each foe afflicted with an ailment',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Holy Benevolence': {
+ name: 'Holy Benevolence',
+ effect: 'Revive all allies with 100% HP',
+ element: Element.HEALING,
+ unique: true
+ },
+ 'Holy Embrace': {
+ name: 'Holy Embrace',
+ effect: 'Recover 25% max HP each turn in battle',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Holy Whisper': {
+ name: 'Holy Whisper',
+ effect: 'Recover 15% max HP and 15 SP each turn in battle',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Hyakka Ryouran': {
+ name: 'Hyakka Ryouran',
+ effect: 'Matarukaja + Marakukaja + Masukukaja',
+ element: Element.SUPPORT,
+ unique: true
+ },
+ 'Hysterical Slap': {
+ name: 'Hysterical Slap',
+ effect: 'Deal medium Phys damage and inflict Rage (medium odds) to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Ice Age': {
+ name: 'Ice Age',
+ effect: 'Deal severe Ice damage to all foes.',
+ element: Element.ICE,
+ },
+ 'Ice Amp': {
+ name: 'Ice Amp',
+ effect: 'Strengthen Ice attacks by 50%.',
+ element: Element.PASSIVE,
+ },
+ 'Ice Boost': {
+ name: 'Ice Boost',
+ effect: 'Strengthen Ice attacks by 25%.',
+ element: Element.PASSIVE,
+ },
+ 'Ice Break': {
+ name: 'Ice Break',
+ effect: 'Negate Ice resistances of all foes.',
+ element: Element.SUPPORT,
+ },
+ 'Ice Wall': {
+ name: 'Ice Wall',
+ effect: 'Create a shield on 1 ally to reduce damage of Ice attacks for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Icy Glare': {
+ name: 'Icy Glare',
+ effect: 'Reduces ailment susceptibility by 25% for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Immunity': {
+ name: 'Immunity',
+ effect: 'Nullifies ailments',
+ element: Element.TRAIT,
+ },
+ 'Inferno': {
+ name: 'Inferno',
+ effect: 'Deal severe Fire damage to 1 foe.',
+ element: Element.FIRE,
+ },
+ 'Infinite Scheme': {
+ name: 'Infinite Scheme',
+ effect: 'Restores 100% after Futaba\'s All-Out Attack for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Ingenious Spirit': {
+ name: 'Ingenious Spirit',
+ effect: 'Chance to halve Support and Almighty skill costs for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Insta-Heal': {
+ name: 'Insta-Heal',
+ effect: 'Recover from an ailment in 1 turn.',
+ element: Element.PASSIVE,
+ },
+ 'Intense Focus': {
+ name: 'Intense Focus',
+ effect: 'Single-target magic damage +20%',
+ element: Element.TRAIT,
+ },
+ 'Internal Hypnosis': {
+ name: 'Internal Hypnosis',
+ effect: 'Extends buffs received by 1 turn',
+ element: Element.TRAIT,
+ },
+ 'Invigorate 1': {
+ name: 'Invigorate 1',
+ effect: 'Recover 3 SP each turn in battle.',
+ element: Element.PASSIVE,
+ },
+ 'Invigorate 2': {
+ name: 'Invigorate 2',
+ effect: 'Recover 5 SP each turn in battle.',
+ element: Element.PASSIVE,
+ },
+ 'Invigorate 3': {
+ name: 'Invigorate 3',
+ effect: 'Recover 7 SP each turn in battle.',
+ element: Element.PASSIVE,
+ },
+ 'Inviolable Beauty': {
+ name: 'Inviolable Beauty',
+ effect: 'Triples damage dealt by Counter skills',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Iron Heart': {
+ name: 'Iron Heart',
+ effect: 'Halves costs of SP skills after Baton Pass',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Just Die': {
+ name: 'Just Die',effect: 'Reduces costs of instant death skills to 0', element: Element.TRAIT, },
+ 'Kill Rush': {
+ name: 'Kill Rush',
+ effect: 'Deal 1-3 times light Phys damage to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Kouga': {
+ name: 'Kouga',
+ effect: 'Deal medium Bless damage to 1 foe.',
+ element: Element.BLESS,
+ },
+ 'Kougaon': {
+ name: 'Kougaon',
+ effect: 'Deal heavy Bless damage to 1 foe.',
+ element: Element.BLESS,
+ },
+ 'Kouha': {
+ name: 'Kouha',
+ effect: 'Deal weak Bless damage to 1 foe.',
+ element: Element.BLESS,
+ },
+ 'Kuzunoha\'s Order': {
+ name: 'Kuzunoha\'s Order',effect: 'Reduces skill costs by 25%', element: Element.PASSIVE},
+ 'Laevateinn': {
+ name: 'Laevateinn', effect: 'Colossal damage to 1 foe', element: Element.PHYS, unique: true},
+ 'Last Stand': {
+ name: 'Last Stand',
+ effect: 'Reduces enemy hit rate by 2/3 when ambushed',
+ element: Element.PASSIVE,
+ },
+ 'Life Aid': {
+ name: 'Life Aid',
+ effect: 'Recover 8% HP and SP after a successful battle.',
+ element: Element.PASSIVE,
+ },
+ 'Life Boost': {
+ name: 'Life Boost',effect: 'All Stats +3, SP +20', element: Element.PASSIVE},
+ 'Life Drain': {
+ name: 'Life Drain',
+ effect: 'Drains HP from 1 foe.',
+ element: Element.ALMIGHTY,
+ },
+ 'Life Leech': {
+ name: 'Life Leech',effect: 'Drains 150 HP from 1 foe.', element: Element.ALMIGHTY, unique: true},
+ 'Life Wall': {
+ name: 'Life Wall',
+ effect: 'Repels next non-Almighty attack for all allies',
+ element: Element.SUPPORT,
+ unique: true
+ },
+ 'Linked Bloodline': {
+ name: 'Linked Bloodline',
+ effect: 'Greatly raises damage dealt after Baton Pass',
+ element: Element.TRAIT,
+ },
+ 'Lucky Punch': {
+ name: 'Lucky Punch',
+ effect: 'Deal minuscule Phys damage to 1 foe. High critical rate.',
+ element: Element.PHYS,
+ },
+ 'Lullaby': {
+ name: 'Lullaby',
+ effect: 'Inflict Sleep (medium odds) to all foes.',
+ element: Element.AILMENT,
+ },
+ 'Lunge': {
+ name: 'Lunge',
+ effect: 'Deal weak Phys damage to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Mabaisudi': {
+ name: 'Mabaisudi',
+ effect: 'Cure Burn/Freeze/Shock of party.',
+ element: Element.HEALING,
+ },
+ 'Mabufu': {
+ name: 'Mabufu',
+ effect: 'Deal weak Ice damage to all foes.',
+ element: Element.ICE,
+ },
+ 'Mabufudyne': {
+ name: 'Mabufudyne',
+ effect: 'Deal heavy Ice damage to all foes.',
+ element: Element.ICE,
+ },
+ 'Mabufula': {
+ name: 'Mabufula',
+ effect: 'Deal medium Ice damage to all foes.',
+ element: Element.ICE,
+ },
+ 'Maeiga': {
+ name: 'Maeiga',
+ effect: 'Deal medium Curse damage to all foes.',
+ element: Element.CURSE,
+ },
+ 'Maeigaon': {
+ name: 'Maeigaon',
+ effect: 'Deal heavy Curse damage to all foes.',
+ element: Element.CURSE,
+ },
+ 'Maeiha': {
+ name: 'Maeiha',
+ effect: 'Deal weak Curse damage to all foes.',
+ element: Element.CURSE,
+ },
+ 'Mafrei': {
+ name: 'Mafrei',
+ effect: 'Deal weak Nuclear damage to all foes.',
+ element: Element.NUKE,
+ },
+ 'Mafreidyne': {
+ name: 'Mafreidyne',
+ effect: 'Deal heavy Nuclear damage to all foes.',
+ element: Element.NUKE,
+ },
+ 'Mafreila': {
+ name: 'Mafreila',
+ effect: 'Deal medium Nuclear damage to all foes.',
+ element: Element.NUKE,
+ },
+ 'Magaru': {
+ name: 'Magaru',
+ effect: 'Deal small Wind damage to all foes.',
+ element: Element.WIND,
+ },
+ 'Magarudyne': {
+ name: 'Magarudyne',
+ effect: 'Deal heavy Wind damage to all foes.',
+ element: Element.WIND,
+ },
+ 'Magarula': {
+ name: 'Magarula',
+ effect: 'Deal medium Wind damage to all foes.',
+ element: Element.WIND,
+ },
+ 'Magatsu Mandala': {
+ name: 'Magatsu Mandala',
+ effect: 'Deal heavy Curse damage to all foes and inflict Confuse/Fear/Despair (medium odds).',
+ element: Element.CURSE,
+ unique: true
+ },
+ 'Magic Ability': {
+ name: 'Magic Ability',
+ effect: 'Strengthen all magical attacks by 25%.',
+ element: Element.PASSIVE
+ },
+ 'Mahama': {
+ name: 'Mahama',
+ effect: 'Small chance of instantly killing all foes.',
+ element: Element.BLESS,
+ },
+ 'Mahamaon': {
+ name: 'Mahamaon',
+ effect: 'Medium chance of instantly killing all foes.',
+ element: Element.BLESS,
+ },
+ 'Majestic Presence': {
+ name: 'Majestic Presence',
+ effect: 'Doubles effectiveness and decreases costs of Recovery skills for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Makajam': {
+ name: 'Makajam',
+ effect: 'Inflict Forget (high odds) to 1 foe.',
+ element: Element.AILMENT,
+ },
+ 'Makajamaon': {
+ name: 'Makajamaon',
+ effect: 'Inflict Forget (medium odds) to all foes.',
+ element: Element.AILMENT,
+ },
+ 'Makara Break': {
+ name: 'Makara Break',
+ effect: 'Remove magic-repellent shields from all foes.',
+ element: Element.SUPPORT,
+ },
+ 'Makarakarn': {
+ name: 'Makarakarn',
+ effect: 'Create a shield on 1 ally to repel 1 magical attack.',
+ element: Element.SUPPORT,
+ },
+ 'Makouga': {
+ name: 'Makouga',
+ effect: 'Deal medium Bless damage to all foes.',
+ element: Element.BLESS,
+ },
+ 'Makougaon': {
+ name: 'Makougaon',
+ effect: 'Deal heavy Bless damage to all foes.',
+ element: Element.BLESS,
+ },
+ 'Makouha': {
+ name: 'Makouha',
+ effect: 'Deal weak Bless damage to all foes.',
+ element: Element.BLESS,
+ },
+ 'Mamudo': {
+ name: 'Mamudo',
+ effect: 'Small chance of instantly killing all foes.',
+ element: Element.CURSE,
+ },
+ 'Mamudoon': {
+ name: 'Mamudoon',
+ effect: 'Medium chance of instantly killing all foes.',
+ element: Element.CURSE,
+ },
+ 'Mapsi': {
+ name: 'Mapsi',
+ effect: 'Deal weak Psy damage to all foes.',
+ element: Element.PSY,
+ },
+ 'Mapsio': {
+ name: 'Mapsio',
+ effect: 'Deal medium Psy damage to all foes.',
+ element: Element.PSY,
+ },
+ 'Mapsiodyne': {
+ name: 'Mapsiodyne',
+ effect: 'Deal heavy Psy damage to all foes.',
+ element: Element.PSY,
+ },
+ 'Maragi': {
+ name: 'Maragi',
+ effect: 'Deal weak Fire damage to all foes.',
+ element: Element.FIRE,
+ },
+ 'Maragidyne': {
+ name: 'Maragidyne',
+ effect: 'Deal heavy Fire damage to all foes.',
+ element: Element.FIRE,
+ },
+ 'Maragion': {
+ name: 'Maragion',
+ effect: 'Deal medium Fire damage to all foes.',
+ element: Element.FIRE,
+ },
+ 'Marakukaja': {
+ name: 'Marakukaja',
+ effect: 'Increase party\'s Defense for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Marakunda': {
+ name: 'Marakunda',
+ effect: 'Decrease all foes\' Defense for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Marin Karin': {
+ name: 'Marin Karin',
+ effect: 'Inflict Brainwash (high odds) to 1 foe.',
+ element: Element.AILMENT,
+ },
+ 'Martyr\'s Gift': {
+ name: 'Martyr\'s Gift',
+ effect: 'Reduces costs of Bless skills by 75%',
+ element: Element.TRAIT,
+ },
+ 'Masquerade': {
+ name: 'Masquerade', effect: 'Severe damage to 1 foe, x2 hits', element: Element.PHYS, unique: true},
+ 'Mastery of Magic': {
+ name: 'Mastery of Magic',
+ effect: 'Low chance to decrease attack spell costs for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Masukukaja': {
+ name: 'Masukukaja',
+ effect: 'Increase party\'s Agility for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Masukunda': {
+ name: 'Masukunda',
+ effect: 'Decrease all foes\' Agility for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Matarukaja': {
+ name: 'Matarukaja',
+ effect: 'Increase party\'s Attack power for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Matarunda': {
+ name: 'Matarunda',
+ effect: 'Decrease all foes\' Attack power for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Mazio': {
+ name: 'Mazio',
+ effect: 'Deal weak Electric damage to all foes.',
+ element: Element.ELEC,
+ },
+ 'Maziodyne': {
+ name: 'Maziodyne',
+ effect: 'Deal heavy Electric damage to all foes.',
+ element: Element.ELEC,
+ },
+ 'Mazionga': {
+ name: 'Mazionga',
+ effect: 'Deal medium Electric damage to all foes.',
+ element: Element.ELEC,
+ },
+ 'Me Patra': {
+ name: 'Me Patra',
+ effect: 'Cure Dizzy/Forget/Sleep/Hunger of party.',
+ element: Element.HEALING,
+ },
+ 'Media': {
+ name: 'Media',
+ effect: 'Slightly restore party\'s HP.',
+ element: Element.HEALING,
+ },
+ 'Mediarahan': {
+ name: 'Mediarahan',
+ effect: 'Fully restore party\'s HP.',
+ element: Element.HEALING,
+ },
+ 'Mediarama': {
+ name: 'Mediarama',
+ effect: 'Moderately restore party\'s HP.',
+ element: Element.HEALING,
+ },
+ 'Megaton Raid': {
+ name: 'Megaton Raid',
+ effect: 'Deal severe Phys damage to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Megido': {
+ name: 'Megido',
+ effect: 'Deal medium Almighty damage to all foes.',
+ element: Element.ALMIGHTY,
+ },
+ 'Megidola': {
+ name: 'Megidola',
+ effect: 'Deal heavy Almighty damage to all foes.',
+ element: Element.ALMIGHTY,
+ },
+ 'Megidolaon': {
+ name: 'Megidolaon',
+ effect: 'Deal severe Almighty damage to all foes.',
+ element: Element.ALMIGHTY,
+ },
+ 'Mementos Scan': {
+ name: 'Mementos Scan',
+ effect: 'Chance to fully map a floor of Mementos when entering that floor.',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Memory Blow': {
+ name: 'Memory Blow',
+ effect: 'Deal light Phys damage and inflict Forget (low odds) to all foes.',
+ element: Element.PHYS,
+ },
+ 'Mighty Gaze': {
+ name: 'Mighty Gaze',
+ effect: 'All-target magic damage +20%',
+ element: Element.TRAIT,
+ },
+ 'Mind Slice': {
+ name: 'Mind Slice',
+ effect: 'Deal medium Phys damage and inflict Confuse (low odds) to all foes.',
+ element: Element.PHYS,
+ },
+ 'Miracle Punch': {
+ name: 'Miracle Punch',
+ effect: 'Deal medium Phys damage to 1 foe. High critical rate.',
+ element: Element.PHYS,
+ },
+ 'Miracle Rush': {
+ name: 'Miracle Rush',
+ effect: 'Deal medium Phys damage to all foes. High critical rate.',
+ element: Element.PHYS,
+ unique: true
+ },
+ 'Money Boost': {
+ name: 'Money Boost',effect: 'Doubles money earned after battle', element: Element.PASSIVE},
+ 'Moral Support': {
+ name: 'Moral Support',
+ effect: 'Chance to cast Kaja or party-healing magic during battle.',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Morning Star': {
+ name: 'Morning Star',
+ effect: 'Deal severe Almighty damage to all foes.',
+ element: Element.ALMIGHTY,
+ unique: true
+ },
+ 'Mother\'s Lament': {
+ name: 'Mother\'s Lament',
+ effect: 'Reduces costs of Curse skills by 75%',
+ element: Element.TRAIT,
+ },
+ 'Mouth of Savoring': {
+ name: 'Mouth of Savoring',
+ effect: 'Strengthens own SP recovery by 50%',
+ element: Element.TRAIT,
+ },
+ 'Mudo': {
+ name: 'Mudo',
+ effect: 'Small chance of instantly killing 1 foe.',
+ element: Element.CURSE,
+ },
+ 'Mudo Boost': {
+ name: 'Mudo Boost',
+ effect: 'Increase success rate of instant death by Curse skills.',
+ element: Element.PASSIVE,
+ },
+ 'Mudoon': {
+ name: 'Mudoon',
+ effect: 'medium chance of instantly killing 1 foe.',
+ element: Element.CURSE,
+ },
+ 'Myriad Slashes': {
+ name: 'Myriad Slashes',
+ effect: 'Deal 2 to 3 times medium Phys damage to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Myriad Truths': {
+ name: 'Myriad Truths',
+ effect: 'Deal 3 times heavy Almighty damage to all foes.',
+ element: Element.ALMIGHTY,
+ unique: true
+ },
+ 'Naranari': {
+ name: 'Naranari',effect: 'Doubles effectiveness of SP regeneration skills', element: Element.TRAIT, },
+ 'Negative Pile': {
+ name: 'Negative Pile',
+ effect: 'Deal heavy Phys damage and inflict Despair (medium odds) to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Neo Cadenza': {
+ name: 'Neo Cadenza',
+ effect: 'Restore 50% HP of party and increase attack, defense, and evasion rate.',
+ element: Element.HEALING,
+ unique: true
+ },
+ 'Nocturnal Flash': {
+ name: 'Nocturnal Flash',
+ effect: 'Inflict Dizzy (medium odds) to all foes.',
+ element: Element.AILMENT,
+ },
+ 'Nuke Amp': {
+ name: 'Nuke Amp',
+ effect: 'Strengthen Nuclear attacks by 50%.',
+ element: Element.PASSIVE,
+ },
+ 'Nuke Boost': {
+ name: 'Nuke Boost',
+ effect: 'Strengthen Nuclear attacks by 25%.',
+ element: Element.PASSIVE,
+ },
+ 'Nuke Break': {
+ name: 'Nuke Break',
+ effect: 'Negate Nuclear resistances of all foes.',
+ element: Element.SUPPORT,
+ },
+ 'Nuke Wall': {
+ name: 'Nuke Wall',
+ effect: 'Create a shield on 1 ally to reduce damage of Nuclear attacks for 3 turns.',
+ element: Element.SUPPORT
+ },
+ 'Null Bless': {
+ name: 'Null Bless',
+ effect: 'Impart immunity against Bless attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Null Brainwash': {
+ name: 'Null Brainwash',
+ effect: 'Impart immunity against Brainwash.',
+ element: Element.PASSIVE,
+ },
+ 'Null Burn': {
+ name: 'Null Burn',effect: 'Immune to Burn', element: Element.PASSIVE},
+ 'Null Confuse': {
+ name: 'Null Confuse',effect: 'Impart immunity against Confuse.', element: Element.PASSIVE, },
+ 'Null Curse': {
+ name: 'Null Curse',
+ effect: 'Impart immunity against Curse attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Null Despair': {
+ name: 'Null Despair',effect: 'Impart immunity against Despair.', element: Element.PASSIVE},
+ 'Null Dizzy': {
+ name: 'Null Dizzy',
+ effect: 'Impart immunity against Dizzy.',
+ element: Element.PASSIVE,
+ },
+ 'Null Elec': {
+ name: 'Null Elec',
+ effect: 'Impart immunity against Electric attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Null Fear': {
+ name: 'Null Fear',effect: 'Impart immunity against Fear.', element: Element.PASSIVE},
+ 'Null Fire': {
+ name: 'Null Fire',
+ effect: 'Impart immunity against Fire attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Null Forget': {
+ name: 'Null Forget',effect: 'Impart immunity against Forget.', element: Element.PASSIVE, },
+ 'Null Freeze': {
+ name: 'Null Freeze',effect: 'Immune to Freeze', element: Element.PASSIVE},
+ 'Null Hunger': {
+ name: 'Null Hunger',effect: 'Immune to Hunger', element: Element.PASSIVE},
+ 'Null Ice': {
+ name: 'Null Ice',
+ effect: 'Impart immunity against Ice attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Null Mortal': {
+ name: 'Null Mortal',effect: 'Nullifies damage from Bless and Curse attacks', element: Element.PASSIVE},
+ 'Null Nuke': {
+ name: 'Null Nuke',effect: 'Impart immunity against Nuclear attacks.', element: Element.PASSIVE},
+ 'Null Phys': {
+ name: 'Null Phys',
+ effect: 'Impart immunity against Phys attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Null Psy': {
+ name: 'Null Psy',effect: 'Impart immunity against Psy attacks.', element: Element.PASSIVE},
+ 'Null Rage': {
+ name: 'Null Rage',
+ effect: 'Impart immunity against Rage.',
+ element: Element.PASSIVE,
+ },
+ 'Null Shock': {
+ name: 'Null Shock',effect: 'Immune to Shock', element: Element.PASSIVE},
+ 'Null Sleep': {
+ name: 'Null Sleep',effect: 'Impart immunity against Sleep.', element: Element.PASSIVE, },
+ 'Null Wind': {
+ name: 'Null Wind',
+ effect: 'Impart immunity against Wind attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Omen': {
+ name: 'Omen',
+ effect: 'Greatly increases success rate of instant death skills',
+ element: Element.TRAIT,
+ },
+ 'Ominous Words': {
+ name: 'Ominous Words',
+ effect: 'Inflict Despair (high odds) to 1 foe.',
+ element: Element.AILMENT,
+ },
+ 'One-shot Kill': {
+ name: 'One-shot Kill',
+ effect: 'Deal severe Gun damage to 1 foe. High critical rate.',
+ element: Element.GUN,
+ },
+ 'Oni Kagura': {
+ name: 'Oni Kagura',
+ effect: 'Deal medium Phys damage and inflict Rage (low odds) to all foes.',
+ element: Element.PHYS,
+ },
+ 'Oratorio': {
+ name: 'Oratorio',
+ effect: 'Fully restore party\'s HP and negate all -nda debuffs.',
+ element: Element.HEALING,
+ unique: true
+ },
+ 'Pagan Allure': {
+ name: 'Pagan Allure',
+ effect: 'Magic damage +50%, Cannot exceed 100% limit',
+ element: Element.TRAIT,
+ },
+ 'Panta Rhei': {
+ name: 'Panta Rhei',
+ effect: 'Deal severe Wind damage to 1 foe',
+ element: Element.WIND,
+ },
+ 'Patra': {
+ name: 'Patra',
+ effect: 'Cure Dizzy/Forget/Sleep/Hunger of 1 ally.',
+ element: Element.HEALING,
+ },
+ 'Phantom Show': {
+ name: 'Phantom Show',
+ effect: 'Inflict Sleep (high odds) to all foes.',
+ element: Element.AILMENT,
+ unique: true
+ },
+ 'Pinch Anchor': {
+ name: 'Pinch Anchor',
+ effect: 'Allows use of ambush-only skills after Baton Pass',
+ element: Element.TRAIT,
+ },
+ 'Pinnacle of Magic': {
+ name: 'Pinnacle of Magic',
+ effect: 'Low chance to halve attack spell costs for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Position Hack': {
+ name: 'Position Hack',
+ effect: 'Chance to instantly Hold Up enemies when starting a battle.',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Positive Thoughts': {
+ name: 'Positive Thoughts',
+ effect: 'Extends buffs received by 2 turns',
+ element: Element.TRAIT,
+ },
+ 'Potent Hypnosis': {
+ name: 'Potent Hypnosis',
+ effect: 'Extends buffs cast by 1 turn',
+ element: Element.TRAIT,
+ },
+ 'Power Slash': {
+ name: 'Power Slash',
+ effect: 'Deal medium Phys damage to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'President\'s Insight': {
+ name: 'President\'s Insight',
+ effect: 'Next Magic attack +150% damage for 1 ally, Attack Master',
+ element: Element.SUPPORT,
+ unique: true
+ },
+ 'Proud Presence': {
+ name: 'Proud Presence',
+ effect: 'Doubles effectiveness of Recovery skills for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Psi': {
+ name: 'Psi',
+ effect: 'Deal weak Psy damage to 1 foe.',
+ element: Element.PSY,
+ },
+ 'Psio': {
+ name: 'Psio',
+ effect: 'Deal medium Psy damage to 1 foe.',
+ element: Element.PSY,
+ },
+ 'Psiodyne': {
+ name: 'Psiodyne',
+ effect: 'Deal heavy Psy damage to 1 foe.',
+ element: Element.PSY,
+ },
+ 'Psy Amp': {
+ name: 'Psy Amp',
+ effect: 'Strengthen Psy attacks by 50%.',
+ element: Element.PASSIVE,
+ },
+ 'Psy Boost': {
+ name: 'Psy Boost',effect: 'Strengthen Psy attacks by 25%.', element: Element.PASSIVE, },
+ 'Psy Break': {
+ name: 'Psy Break',
+ effect: 'Negate Psy resistances of all foes.',
+ element: Element.SUPPORT,
+ },
+ 'Psy Wall': {
+ name: 'Psy Wall',
+ effect: 'Create a shield on 1 ally to reduce damage of Psy attacks for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Psychic Bloodline': {
+ name: 'Psychic Bloodline',
+ effect: 'Halves costs of Psy skills',
+ element: Element.TRAIT,
+ },
+ 'Psycho Blast': {
+ name: 'Psycho Blast',
+ effect: 'Deal severe Psy damage to all foes.',
+ element: Element.PSY,
+ },
+ 'Psycho Force': {
+ name: 'Psycho Force',
+ effect: 'Deal severe Psy damage to 1 foe.',
+ element: Element.PSY,
+ },
+ 'Pulinpa': {
+ name: 'Pulinpa',
+ effect: 'Inflict Confuse (high odds) to 1 foe.',
+ element: Element.AILMENT,
+ },
+ 'Rage Boost': {
+ name: 'Rage Boost',
+ effect: 'Increase chance of inflicting Rage.',
+ element: Element.PASSIVE,
+ },
+ 'Raging Temper': {
+ name: 'Raging Temper',
+ effect: 'Low chance to strengthen Phys attacks by 40% for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Rakukaja': {
+ name: 'Rakukaja',
+ effect: 'Increase 1 ally\'s Defense for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Rakunda': {
+ name: 'Rakunda',
+ effect: 'Decrease 1 foe\'s Defense for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Rampage': {
+ name: 'Rampage',
+ effect: 'Deal 1 to 3 times weak Phys damage to all foes.',
+ element: Element.PHYS,
+ },
+ 'Rare Antibody': {
+ name: 'Rare Antibody',
+ effect: 'Reduces susceptibility to ailments',
+ element: Element.TRAIT,
+ },
+ 'Rebellion': {
+ name: 'Rebellion',
+ effect: 'Increase 1 ally\'s critical rate for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Rebellion Blade': {
+ name: 'Rebellion Blade',
+ effect: 'Colossal damage to 1 foe, Damage +150% when target downed',
+ element: Element.ALMIGHTY,
+ unique: true
+ },
+ 'Recarm': {
+ name: 'Recarm',
+ effect: 'Revive 1 ally with 50% HP recovered.',
+ element: Element.HEALING,
+ },
+ 'Regenerate 1': {
+ name: 'Regenerate 1',
+ effect: 'Restore 2% of max HP each turn in battle.',
+ element: Element.PASSIVE,
+ },
+ 'Regenerate 2': {
+ name: 'Regenerate 2',
+ effect: 'Recover 4% of max HP each turn in battle.',
+ element: Element.PASSIVE,
+ },
+ 'Regenerate 3': {
+ name: 'Regenerate 3',
+ effect: 'Recover 6% of max HP each turn in battle.',
+ element: Element.PASSIVE,
+ },
+ 'Relentless': {
+ name: 'Relentless',
+ effect: 'Damage that strikes foe weaknesses +50%',
+ element: Element.TRAIT,
+ },
+ 'Relief Bloodline': {
+ name: 'Relief Bloodline',
+ effect: 'Halves costs of Support skills',
+ element: Element.TRAIT,
+ },
+ 'Repel Bless': {
+ name: 'Repel Bless',
+ effect: 'Repel Bless attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Repel Curse': {
+ name: 'Repel Curse',effect: 'Repel Curse attacks.', element: Element.PASSIVE, },
+ 'Repel Elec': {
+ name: 'Repel Elec',effect: 'Repel Electric attacks.', element: Element.PASSIVE, },
+ 'Repel Fire': {
+ name: 'Repel Fire',
+ effect: 'Repel Fire attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Repel Ice': {
+ name: 'Repel Ice',
+ effect: 'Repel Ice attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Repel Nuke': {
+ name: 'Repel Nuke',
+ effect: 'Repel Nuclear attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Repel Phys': {
+ name: 'Repel Phys',
+ effect: 'Repel Phys attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Repel Psy': {
+ name: 'Repel Psy',effect: 'Repel Psy attacks.', element: Element.PASSIVE, },
+ 'Repel Wind': {
+ name: 'Repel Wind',
+ effect: 'Repel Wind attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Resist Bless': {
+ name: 'Resist Bless',effect: 'Reduce damage from Bless attacks.', element: Element.PASSIVE, },
+ 'Resist Brainwash': {
+ name: 'Resist Brainwash',
+ effect: 'Reduce susceptibility to Brainwash.',
+ element: Element.PASSIVE,
+ },
+ 'Resist Burn': {
+ name: 'Resist Burn',effect: 'Halves susceptibility to Burn', element: Element.PASSIVE},
+ 'Resist Confuse': {
+ name: 'Resist Confuse',effect: 'Reduce susceptibility to Confuse.', element: Element.PASSIVE, },
+ 'Resist Curse': {
+ name: 'Resist Curse',effect: 'Reduce damage from Curse attacks.', element: Element.PASSIVE},
+ 'Resist Despair': {
+ name: 'Resist Despair',
+ effect: 'Reduce susceptibility to Despair.',
+ element: Element.PASSIVE,
+ },
+ 'Resist Dizzy': {
+ name: 'Resist Dizzy',
+ effect: 'Reduce susceptibility to Dizzy.',
+ element: Element.PASSIVE,
+ },
+ 'Resist Elec': {
+ name: 'Resist Elec',effect: 'Reduce damage from Electric attacks.', element: Element.PASSIVE},
+ 'Resist Fear': {
+ name: 'Resist Fear',
+ effect: 'Reduce susceptibility to Fear.',
+ element: Element.PASSIVE,
+ },
+ 'Resist Fire': {
+ name: 'Resist Fire',effect: 'Reduce damage from Fire attacks.', element: Element.PASSIVE},
+ 'Resist Forget': {
+ name: 'Resist Forget',
+ effect: 'Reduce susceptibility to Forget.',
+ element: Element.PASSIVE,
+ },
+ 'Resist Freeze': {
+ name: 'Resist Freeze',effect: 'Halves susceptibility to Freeze', element: Element.PASSIVE},
+ 'Resist Hunger': {
+ name: 'Resist Hunger',effect: 'Halves susceptibility to Hunger', element: Element.PASSIVE},
+ 'Resist Ice': {
+ name: 'Resist Ice',effect: 'Reduce damage from Ice attacks.', element: Element.PASSIVE},
+ 'Resist Nuke': {
+ name: 'Resist Nuke',effect: 'Reduce damage from Nuclear attacks.', element: Element.PASSIVE},
+ 'Resist Phys': {
+ name: 'Resist Phys',effect: 'Reduce damage from Phys attacks.', element: Element.PASSIVE},
+ 'Resist Psy': {
+ name: 'Resist Psy',effect: 'Reduce damage from Psy attacks.', element: Element.PASSIVE, },
+ 'Resist Rage': {
+ name: 'Resist Rage',effect: 'Reduce susceptibility to Rage.', element: Element.PASSIVE},
+ 'Resist Shock': {
+ name: 'Resist Shock',effect: 'Halves susceptibility to Shock', element: Element.PASSIVE},
+ 'Resist Sleep': {
+ name: 'Resist Sleep',
+ effect: 'Reduce susceptibility to Sleep.',
+ element: Element.PASSIVE,
+ },
+ 'Resist Wind': {
+ name: 'Resist Wind',effect: 'Reduce damage from Wind attacks.', element: Element.PASSIVE, },
+ 'Retaliating Body': {
+ name: 'Retaliating Body',
+ effect: 'Doubles damage from Counter skills',
+ element: Element.TRAIT,
+ },
+ 'Reverse Rub': {
+ name: 'Reverse Rub',effect: 'Inflict Rage (100%) to 1 ally.', element: Element.AILMENT, unique: true},
+ 'Revolution': {
+ name: 'Revolution',
+ effect: 'Increase all foes and allies\' critical rate for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Riot Gun': {
+ name: 'Riot Gun',
+ effect: 'Deal severe Gun damage to all foes.',
+ element: Element.GUN,
+ },
+ 'Rising Slash': {
+ name: 'Rising Slash',
+ effect: 'Deal heavy Phys damage to 1 foe. More powerful under Baton Pass.',
+ element: Element.PHYS,
+ },
+ 'Salvation': {
+ name: 'Salvation',
+ effect: 'Fully restore HP and cure all ailments of party except for unique status.',
+ element: Element.HEALING,
+ },
+ 'Samarecarm': {
+ name: 'Samarecarm',
+ effect: 'Revive 1 ally with all HP recovered.',
+ element: Element.HEALING,
+ },
+ 'Samsara': {
+ name: 'Samsara',
+ effect: 'High chance of instantly killing all foes.',
+ element: Element.BLESS,
+ unique: true
+ },
+ 'Samurai\'s Ruling': {
+ name: 'Samurai\'s Ruling',effect: 'Raises critical rate and Magic evasion', element: Element.PASSIVE},
+ 'Savior Bloodline': {
+ name: 'Savior Bloodline',
+ effect: 'Halves costs of Recovery skills',
+ element: Element.TRAIT,
+ },
+ 'Scoundrel Eyes': {
+ name: 'Scoundrel Eyes',
+ effect: 'Raises evasion rate against Phys attacks for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Self-Destruct': {
+ name: 'Self-Destruct',
+ effect: 'Sacrifice self and deal medium Almighty damage to all.',
+ element: Element.ALMIGHTY,
+ unique: true
+ },
+ 'Sharp Student': {
+ name: 'Sharp Student',
+ effect: 'Lower odds of receiving critical hit.',
+ element: Element.PASSIVE,
+ },
+ 'Shining Arrows': {
+ name: 'Shining Arrows',
+ effect: 'Deal 4 to 8 times weak Bless damage to all foes.',
+ element: Element.BLESS,
+ unique: true
+ },
+ 'Shock Boost': {
+ name: 'Shock Boost',
+ effect: 'Increase chance of inflicting Shock.',
+ element: Element.PASSIVE,
+ },
+ 'Skillful Combo': {
+ name: 'Skillful Combo',
+ effect: 'Raises damage dealt after Baton Pass',
+ element: Element.TRAIT,
+ },
+ 'Skillful Technique': {
+ name: 'Skillful Technique',
+ effect: 'Technical damage +25%',
+ element: Element.TRAIT,
+ },
+ 'Skull Cracker': {
+ name: 'Skull Cracker',
+ effect: 'Deal medium Phys damage and inflict Confuse (medium odds) to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Sledgehammer': {
+ name: 'Sledgehammer',
+ effect: 'Deal medium Phys damage and inflict Dizzy (medium odds) to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Sleep Boost': {
+ name: 'Sleep Boost',
+ effect: 'Increase chance of inflicting Sleep.',
+ element: Element.PASSIVE,
+ },
+ 'Snap': {
+ name: 'Snap',
+ effect: 'Deal medium Gun damage to 1 foe.',
+ element: Element.GUN,
+ },
+ 'Soul Chain': {
+ name: 'Soul Chain',
+ effect: 'Recover 20 SP when performing Baton Pass.',
+ element: Element.PASSIVE
+ },
+ 'Soul Touch': {
+ name: 'Soul Touch',effect: 'Recover 5 SP after Baton Pass', element: Element.PASSIVE},
+ 'Speed Master': {
+ name: 'Speed Master',
+ effect: 'Automatic Sukukaja at the start of battle.',
+ element: Element.PASSIVE,
+ },
+ 'Spell Master': {
+ name: 'Spell Master',
+ effect: 'Half SP cost for magic skills.',
+ element: Element.PASSIVE,
+ },
+ 'Spirit Drain': {
+ name: 'Spirit Drain',
+ effect: 'Drains SP from 1 foe.',
+ element: Element.ALMIGHTY,
+ },
+ 'Spirit Leech': {
+ name: 'Spirit Leech',effect: 'Drains 150 SP from 1 foe.', element: Element.ALMIGHTY, unique: true},
+ 'Stagnant Air': {
+ name: 'Stagnant Air',
+ effect: 'Increase susceptibility to all ailments of all foes and allies.',
+ element: Element.ALMIGHTY,
+ },
+ 'Static Electricity': {
+ name: 'Static Electricity',
+ effect: 'Increases chance of inflicting Shock on downed foes',
+ element: Element.TRAIT,
+ },
+ 'Stealth': {
+ name: 'Stealth',effect: 'Lowers chance of being targeted', element: Element.PASSIVE},
+ 'Stomach Blow': {
+ name: 'Stomach Blow',
+ effect: 'Medium Physical damage to 1 foe and inflict Hunger.',
+ element: Element.PHYS,
+ unique: true
+ },
+ 'Striking Weight': {
+ name: 'Striking Weight',
+ effect: 'Phys damage +20%',
+ element: Element.TRAIT,
+ },
+ 'Subrecover HP': {
+ name: 'Subrecover HP',
+ effect: 'After battle, 10% HP recovery for backup allies.',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Subrecover HP EX': {
+ name: 'Subrecover HP EX',
+ effect: 'After battle, 20% HP recovery for backup allies.',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Subrecover SP': {
+ name: 'Subrecover SP',
+ effect: 'After battle, 1% SP recovery for backup allies.',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Subrecover SP EX': {
+ name: 'Subrecover SP EX',
+ effect: 'After battle, 3% SP recovery for backup allies.',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Sukukaja': {
+ name: 'Sukukaja',
+ effect: 'Increase 1 ally\'s Agility for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Sukunda': {
+ name: 'Sukunda',
+ effect: 'Decrease 1 foe\'s Agility for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Summon': {
+ name: 'Summon',effect: 'Summon ally reinforcements.', element: Element.ALMIGHTY, unique: true},
+ 'Support Plus 1': {
+ name: 'Support Plus 1',
+ effect: 'Adds Masukunda to Moral Support pool',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Support Plus 2': {
+ name: 'Support Plus 2',
+ effect: 'Adds Masukunda and Marakunda to Moral Support pool',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Support Plus 3': {
+ name: 'Support Plus 3',
+ effect: 'Adds Masukunda, Marakunda, and Matarunda to Moral Support pool',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Support Rate Up': {
+ name: 'Support Rate Up',
+ effect: 'Raises chance of Moral Support activating',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Survival Trick': {
+ name: 'Survival Trick',
+ effect: 'Survive one instant death attack with 1 HP remaining.',
+ element: Element.PASSIVE,
+ },
+ 'Swift Strike': {
+ name: 'Swift Strike',
+ effect: 'Deal 2 to 4 times weak Phys damage to all foes.',
+ element: Element.PHYS,
+ },
+ 'Sword Dance': {
+ name: 'Sword Dance',
+ effect: 'Deal grave Phys damage to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Tactical Spirit': {
+ name: 'Tactical Spirit',
+ effect: 'Chance to halve Support skill costs for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Tag Team': {
+ name: 'Tag Team',
+ effect: 'Allows use of consumables without expending them after Baton Pass',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Tarukaja': {
+ name: 'Tarukaja',
+ effect: 'Increase 1 ally\'s Attack power for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Tarunda': {
+ name: 'Tarunda',
+ effect: 'Decrease 1 foe\'s Attack power for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Taunt': {
+ name: 'Taunt',
+ effect: 'Inflict Rage (high odds) to 1 foe.',
+ element: Element.AILMENT,
+ },
+ 'Tempest Slash': {
+ name: 'Tempest Slash',
+ effect: 'Deal 3 to 5 times minuscule Phys damage to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Tentarafoo': {
+ name: 'Tentarafoo',
+ effect: 'Inflict Confuse (medium odds) to all foes.',
+ element: Element.AILMENT,
+ },
+ 'Terror Claw': {
+ name: 'Terror Claw',
+ effect: 'Deal medium Phys damage and inflict Fear (medium odds) to 1 foe.',
+ element: Element.PHYS,
+ },
+ 'Tetra Break': {
+ name: 'Tetra Break',
+ effect: 'Remove physical-repellent shields from all foes.',
+ element: Element.SUPPORT,
+ },
+ 'Tetraja': {
+ name: 'Tetraja',
+ effect: 'Create shields on party to nullify one instant death attack of Bless or Curse types.',
+ element: Element.SUPPORT,
+ },
+ 'Tetrakarn': {
+ name: 'Tetrakarn',
+ effect: 'Create a shield on 1 ally to repel 1 Phys attack.',
+ element: Element.SUPPORT,
+ },
+ 'Thermal Conduct': {
+ name: 'Thermal Conduct',
+ effect: 'Increases chance of inflicting Burn after Baton Pass',
+ element: Element.TRAIT,
+ },
+ 'Thermopylae': {
+ name: 'Thermopylae',
+ effect: 'Increase party\'s Attack, Defense and Agility for 3 turns. Only usable if the party is being ambushed.',
+ element: Element.SUPPORT,
+ },
+ 'Thunder Reign': {
+ name: 'Thunder Reign',
+ effect: 'Deal severe Electric damage to 1 foe.',
+ element: Element.ELEC,
+ },
+ 'Titanomachia': {
+ name: 'Titanomachia',
+ effect: 'Deal severe Fire damage to all foes and inflict Fear (high odds).',
+ element: Element.FIRE,
+ unique: true
+ },
+ 'Touch n\' Go': {
+ name: 'Touch n\' Go',
+ effect: 'Apply Sukukaja when performing Baton Pass.',
+ element: Element.PASSIVE,
+ },
+ 'Treasure Reboot': {
+ name: 'Treasure Reboot',
+ effect: 'Chance to revive search objects in the area after battle.',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Treasure Skimmer': {
+ name: 'Treasure Skimmer',
+ effect: 'Find out if a foe is carrying a rare item ahead of time.',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Trigger Happy': {
+ name: 'Trigger Happy',
+ effect: 'Increase critical rate of Gun attacks.',
+ element: Element.PASSIVE,
+ },
+ 'Triple Down': {
+ name: 'Triple Down',
+ effect: 'Deal 3 times small Gun damage to all foes.',
+ element: Element.GUN,
+ },
+ 'Tyrant\'s Mind': {
+ name: 'Tyrant\'s Mind',
+ effect: 'All damage +25%, Can exceed 100% limit',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Tyrant\'s Will': {
+ name: 'Tyrant\'s Will',
+ effect: 'Next Phys attack +150% damage for 1 ally, Defense Master',
+ element: Element.SUPPORT,
+ unique: true
+ },
+ 'Ultimate Support': {
+ name: 'Ultimate Support',
+ effect: 'Moral Support may now fully recover and buff all allies',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Ultimate Vessel': {
+ name: 'Ultimate Vessel',
+ effect: 'Carries multiple traits to pass down during fusion',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Undying Fury': {
+ name: 'Undying Fury',effect: 'Phys damage +30%', element: Element.TRAIT, },
+ 'Universal Law': {
+ name: 'Universal Law',effect: 'Technical damage +50%', element: Element.TRAIT, },
+ 'Unparalleled Eyes': {
+ name: 'Unparalleled Eyes',
+ effect: 'Greatly raises evasion rate against Phys attacks for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Unshaken Will': {
+ name: 'Unshaken Will',
+ effect: 'Impart immunity against all mental ailments.',
+ element: Element.PASSIVE,
+ unique: true
+ },
+ 'Vacuum Wave': {
+ name: 'Vacuum Wave',
+ effect: 'Deal severe Wind damage to all foes.',
+ element: Element.WIND,
+ },
+ 'Vahana\'s Wings': {
+ name: 'Vahana\'s Wings',effect: 'Reduces costs of Wind skills by 75%', element: Element.TRAIT, },
+ 'Vajra Blast': {
+ name: 'Vajra Blast',
+ effect: 'Deal medium Phys damage to all foes.',
+ element: Element.PHYS,
+ },
+ 'Vault Guardian': {
+ name: 'Vault Guardian',
+ effect: 'Marakukaja, Begins battle with Tetrakarn + Makarakarn',
+ element: Element.SUPPORT,
+ unique: true
+ },
+ 'Veil of Midnight': {
+ name: 'Veil of Midnight',
+ effect: 'Chance to prevent down when weakness struck for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Veil of Sunrise': {
+ name: 'Veil of Sunrise',
+ effect: 'High chance to prevent down when weakness struck for all allies',
+ element: Element.TRAIT,
+ unique: true
+ },
+ 'Vicious Strike': {
+ name: 'Vicious Strike',
+ effect: 'Deal medium Phys damage to all foes.',
+ element: Element.PHYS,
+ },
+ 'Victory Cry': {
+ name: 'Victory Cry',
+ effect: 'Recover full HP and SP after a successful battle.',
+ element: Element.PASSIVE,
+ },
+ 'Vitality of the Tree': {
+ name: 'Vitality of the Tree',
+ effect: 'Allows use of ambush-only skills under normal conditions',
+ element: Element.TRAIT,
+ },
+ 'Vorpal Blade': {
+ name: 'Vorpal Blade',
+ effect: 'Deal severe Phys damage to all foes.',
+ element: Element.PHYS,
+ },
+ 'Wage War': {
+ name: 'Wage War',
+ effect: 'Inflict Rage (medium odds) to all foes.',
+ element: Element.AILMENT,
+ },
+ 'Wealth of Lotus': {
+ name: 'Wealth of Lotus',effect: 'Extends buffs cast by 2 turns', element: Element.TRAIT, },
+ 'Wild Thunder': {
+ name: 'Wild Thunder',
+ effect: 'Deal severe Electric damage to all foes.',
+ element: Element.ELEC,
+ },
+ 'Will of the Sword': {
+ name: 'Will of the Sword',
+ effect: 'Charge-type effects +200% damage instead, Begins battle with Concentrate',
+ element: Element.TRAIT,
+ },
+ 'Wind Amp': {
+ name: 'Wind Amp',
+ effect: 'Strengthen Wind attacks by 50%.',
+ element: Element.PASSIVE,
+ },
+ 'Wind Bloodline': {
+ name: 'Wind Bloodline',
+ effect: 'Halves costs of Wind skills',
+ element: Element.TRAIT,
+ },
+ 'Wind Boost': {
+ name: 'Wind Boost',
+ effect: 'Strengthen Wind attacks by 25%.',
+ element: Element.PASSIVE,
+ },
+ 'Wind Break': {
+ name: 'Wind Break',
+ effect: 'Negate Wind resistances of all foes.',
+ element: Element.SUPPORT,
+ },
+ 'Wind Wall': {
+ name: 'Wind Wall',
+ effect: 'Create a shield on 1 ally to reduce damage of Wind attacks for 3 turns.',
+ element: Element.SUPPORT,
+ },
+ 'Wings of Wisdom': {
+ name: 'Wings of Wisdom',
+ effect: 'Amrita Shower, Speed Master',
+ element: Element.SUPPORT,
+ unique: true
+ },
+ 'Zio': {
+ name: 'Zio',
+ effect: 'Deal weak Electric damage to 1 foe.',
+ element: Element.ELEC,
+ },
+ 'Ziodyne': {
+ name: 'Ziodyne',
+ effect: 'Deal heavy Electric damage to 1 foe.',
+ element: Element.ELEC,
+ },
+ 'Zionga': {
+ name: 'Zionga',
+ effect: 'Deal medium Electric damage to 1 foe.',
+ element: Element.ELEC,
+ }
+}
+
+export const getAllSkillsOfElement = (element: Element): SkillMap => {
+ const elementSkills: SkillMap = {};
+ Object.keys(Skills).forEach(skill => {
+ if (element === Skills[skill].element)
+ elementSkills[skill] = Skills[skill];
+ });
+
+ return elementSkills;
+};
\ No newline at end of file
diff --git a/src/data/types.ts b/src/data/types.ts
new file mode 100644
index 0000000..349fa2f
--- /dev/null
+++ b/src/data/types.ts
@@ -0,0 +1,88 @@
+export enum Arcana {
+ FOOL = 'Fool',
+ MAGICIAN = 'Magician',
+ PRIESTESS = 'Priestess',
+ EMPRESS = 'Empress',
+ EMPEROR = 'Emperor',
+ HIEROPHANT = 'Hieropant',
+ LOVERS = 'Lovers',
+ CHARIOT = 'Chariot',
+ JUSTICE = 'Justice',
+ HERMIT = 'Hermit',
+ FORTUNE = 'Fortune',
+ STRENGTH = 'Strength',
+ HANGEDMAN = 'Hanged Man',
+ DEATH = 'Death',
+ TEMPERANCE = 'Temperance',
+ DEVIL = 'Devil',
+ TOWER = 'Tower',
+ STAR = 'Star',
+ MOON = 'Moon',
+ SUN = 'Sun',
+ JUDGEMENT = 'Judgement',
+ WORLD = 'World',
+ FAITH = 'Faith',
+ COUNCILLOR = 'Councillor',
+};
+
+export enum Element {
+ PHYS = 'Physical',
+ GUN = 'Gun',
+ FIRE = 'Fire',
+ ICE = 'Ice',
+ ELEC = 'Electricity',
+ WIND = 'Wind',
+ PSY = 'Psychokinesis',
+ NUKE = 'Nuclear',
+ BLESS = 'Bless',
+ CURSE = 'Curse',
+ HEALING = 'Healing',
+ AILMENT = 'Ailment',
+ SUPPORT = 'Support',
+ ALMIGHTY = 'Almighty',
+ PASSIVE = 'Passive',
+ TRAIT = 'Trait',
+};
+
+export const enum Affinity {
+ NEUTRAL = '-',
+ WEAK = 'wk',
+ RESIST = 'rs',
+ NULL = 'nu',
+ REPEL = 'rp',
+ ABSORB = 'ab',
+};
+
+interface InheritanceMap {
+ [index: string]: Element [];
+}
+
+export const InheritanceType: InheritanceMap = {
+ [ Element.PHYS ]: [ Element.PHYS, Element.GUN, Element.HEALING, Element.AILMENT ],
+ [ Element.FIRE ]: [ Element.PHYS, Element.GUN, Element.FIRE, Element.ELEC, Element.WIND, Element.PSY, Element.NUKE, Element.BLESS, Element.CURSE, Element.HEALING, Element.AILMENT ],
+ [ Element.ICE ]: [ Element.PHYS, Element.GUN, Element.ICE, Element.ELEC, Element.WIND, Element.PSY, Element.NUKE, Element.BLESS, Element.CURSE, Element.HEALING, Element.AILMENT ],
+ [ Element.ELEC ]: [ Element.PHYS, Element.GUN, Element.FIRE, Element.ICE, Element.ELEC, Element.PSY, Element.NUKE, Element.BLESS, Element.CURSE, Element.HEALING, Element.AILMENT ],
+ [ Element.WIND ]: [ Element.PHYS, Element.GUN, Element.FIRE, Element.ICE, Element.WIND, Element.PSY, Element.NUKE, Element.BLESS, Element.CURSE, Element.HEALING, Element.AILMENT ],
+ [ Element.PSY ]: [ Element.PHYS, Element.GUN, Element.FIRE, Element.ICE, Element.ELEC, Element.WIND, Element.PSY, Element.BLESS, Element.CURSE, Element.HEALING, Element.AILMENT ],
+ [ Element.NUKE ]: [ Element.PHYS, Element.GUN, Element.FIRE, Element.ICE, Element.ELEC, Element.WIND, Element.NUKE, Element.BLESS, Element.CURSE, Element.HEALING, Element.AILMENT ],
+ [ Element.BLESS ]: [ Element.FIRE, Element.ICE, Element.ELEC, Element.WIND, Element.PSY, Element.NUKE, Element.BLESS, Element.HEALING ],
+ [ Element.CURSE ]: [ Element.FIRE, Element.ICE, Element.ELEC, Element.WIND, Element.PSY, Element.NUKE, Element.CURSE, Element.AILMENT ],
+ [ Element.HEALING ]: [ Element.FIRE, Element.ICE, Element.ELEC, Element.WIND, Element.PSY, Element.NUKE, Element.BLESS, Element.HEALING, Element.AILMENT ],
+ [ Element.AILMENT ]: [ Element.PHYS, Element.GUN, Element.FIRE, Element.ICE, Element.ELEC, Element.WIND, Element.PSY, Element.NUKE, Element.CURSE, Element.AILMENT ],
+ [ Element.ALMIGHTY ]: [ Element.PHYS, Element.GUN, Element.FIRE, Element.ICE, Element.ELEC, Element.WIND, Element.PSY, Element.NUKE, Element.BLESS, Element.CURSE, Element.HEALING, Element.AILMENT ],
+};
+
+interface InheritQty {
+ parents: number;
+ result: number;
+}
+
+export const InheritanceQuantities: InheritQty [] = [
+ { parents: 0, result: 1 },
+ { parents: 6, result: 2 },
+ { parents: 9, result: 3 },
+ { parents: 13, result: 4 },
+ { parents: 24, result: 5 },
+ { parents: 32, result: 6 },
+ { parents: 42, result: 8 }
+];
\ No newline at end of file
diff --git a/src/helpers.ts b/src/helpers.ts
new file mode 100644
index 0000000..087c805
--- /dev/null
+++ b/src/helpers.ts
@@ -0,0 +1,13 @@
+const LOCK_SEPARATOR: string = '__';
+const LOCK_LOCAL_ITEM_KEY = 'UNAVAILABLEDLCPERSONAS';
+
+const serializeLockedDlc = (lockedDlc: string[]) => lockedDlc.join(LOCK_SEPARATOR);
+const deserializeLockedDlc = (result: string|null) => result ? result.split(LOCK_SEPARATOR) : ([] as string[]);
+export const getLockedDlc = () => deserializeLockedDlc(localStorage.getItem(LOCK_LOCAL_ITEM_KEY));
+export const setLockedDlc = (lockedDlc: string[]) =>
+ localStorage.setItem(LOCK_LOCAL_ITEM_KEY, serializeLockedDlc(lockedDlc));
+
+export const serializeName = (s: string) => s.replaceAll(" ", "0").replaceAll("-", "1").replaceAll("'", "2");
+export const deserializeName = (s: string) => s.replaceAll("0", " ").replaceAll("1", "-").replaceAll("2", "'");
+
+export const getKeyOfValue = (o: {}, v: any) => Object.keys(o)[Object.values(o).findIndex(_ => v === _)];
\ No newline at end of file
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 0000000..4fbe28f
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,7 @@
+import { createApp } from "vue";
+import router from './router';
+import AppEntry from './Entry.vue';
+
+import './assets/main.css';
+
+createApp(AppEntry).use(router).mount('#app');
\ No newline at end of file
diff --git a/src/router/index.ts b/src/router/index.ts
new file mode 100644
index 0000000..e375274
--- /dev/null
+++ b/src/router/index.ts
@@ -0,0 +1,32 @@
+import { createRouter, createWebHistory } from 'vue-router';
+
+import MainPage from '@/views/MainPage.vue';
+import PersonaPage from '@/views/PersonaPage.vue';
+import FusionPage from '@/views/FusionPage.vue';
+
+const routes = [
+ {
+ path: '/',
+ name: 'Main',
+ component: MainPage
+ },
+ {
+ path: '/persona!:name',
+ name: 'Persona',
+ component: PersonaPage
+ },
+ {
+ path: '/fusion!:name!:skills?',
+ name: 'Fusion',
+ component: FusionPage
+ }
+];
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes,
+ scrollBehavior (to, from, savedPosition) {
+ return { top: 0, behavior: 'smooth' };
+ }
+});
+export default router;
\ No newline at end of file
diff --git a/src/shims-vue.d.ts b/src/shims-vue.d.ts
new file mode 100644
index 0000000..37e44c8
--- /dev/null
+++ b/src/shims-vue.d.ts
@@ -0,0 +1,5 @@
+declare module '*.vue' {
+ import type { DefineComponent } from 'vue';
+ const component: DefineComponent<{}, {}, any>;
+ export default component;
+}
\ No newline at end of file
diff --git a/src/views/FusionPage.vue b/src/views/FusionPage.vue
new file mode 100644
index 0000000..63c29b8
--- /dev/null
+++ b/src/views/FusionPage.vue
@@ -0,0 +1,281 @@
+
+
+
+
+
+
+ {{ skill.name }}
+
+
+
+
+
+
+
+ << Back to Persona
+
+
+ Fusion Results for {{ name }}
+
+
+ searchQuery = event.target ? (event.target as HTMLTextAreaElement).value : ''" />
+
+
+
+
+
+
+
+
+
+
+
+ Approx. Cost
+ Parents
+
+
+
+
+
+
+ {{ getRecipeApproxCost(recipe) }}
+
+
+
+ {{ parent?.level }}
+
+
+ {{ parent?.name }}
+
+
+
+ {{ parent?.name }}
+
+
+
+ {{ parent?.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/MainPage.vue b/src/views/MainPage.vue
new file mode 100644
index 0000000..5034fdf
--- /dev/null
+++ b/src/views/MainPage.vue
@@ -0,0 +1,154 @@
+
+
+
+
+
+ P5R Calculator
+
+ searchQuery = event.target ? (event.target as HTMLTextAreaElement).value : ''" />
+
+
+
+
+ Level
+ Arcana
+ Name
+ Stats
+ Affinities
+
+
+ St
+ Ma
+ En
+ Ag
+ Lu
+
+
+
+
+
+
+
+ {{ persona.level }}
+ {{ persona.arcana }}
+
+
+ {{ persona.name }}
+
+
+ {{ stat }}
+ {{ aff }}
+
+
+ Fuse >
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/PersonaPage.vue b/src/views/PersonaPage.vue
new file mode 100644
index 0000000..f7dead1
--- /dev/null
+++ b/src/views/PersonaPage.vue
@@ -0,0 +1,162 @@
+
+
+
+
+ << Back to List
+
+
+ {{ name }}
+
+
+
+
+ Level
+ Arcana
+ Stats
+ Affinities
+
+
+ St
+ Ma
+ En
+ Ag
+ Lu
+
+
+
+
+
+
+
+ {{ persona.level }}
+ {{ persona.arcana }}
+ {{ stat }}
+ {{ aff }}
+
+
+
+
+
+
+
+
+ Skill elements that can be inherited:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skills
+
+
+ Level
+ Element
+ Name
+ Effect
+ Unique?
+
+
+
+
+ -
+
+
+
+ {{ persona.trait }}
+ {{ trait ? trait.effect : '' }}
+
+
+ {{ 0 < skill[1] ? skill[1] : '-' }}
+
+
+
+ {{ skill[0] }}
+ {{ getSkillData(skill[0]).effect }}
+ {{ getSkillData(skill[0]).unique ? 'x' : '' }}
+
+
+
+
+
+ Fuse >>
+
+
+
+
\ No newline at end of file
diff --git a/tsconfig.config.json b/tsconfig.config.json
new file mode 100644
index 0000000..424084a
--- /dev/null
+++ b/tsconfig.config.json
@@ -0,0 +1,8 @@
+{
+ "extends": "@vue/tsconfig/tsconfig.node.json",
+ "include": ["vite.config.*", "vitest.config.*", "cypress.config.*", "playwright.config.*"],
+ "compilerOptions": {
+ "composite": true,
+ "types": ["node"]
+ }
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..a5c78e6
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "@vue/tsconfig/tsconfig.web.json",
+ "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
+ "compilerOptions": {
+ "lib": [ "es2017", "es2021", "dom" ],
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ },
+
+ "references": [
+ {
+ "path": "./tsconfig.config.json"
+ }
+ ]
+}
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 0000000..de5cb31
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,14 @@
+import { fileURLToPath, URL } from 'node:url'
+
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [vue()],
+ resolve: {
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url))
+ }
+ }
+})