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 @@ + + + + + \ 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 @@ + + + + + + + \ 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 @@ + + + + + \ 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)) + } + } +})