diff --git a/.gitignore b/.gitignore index 845b9a07..26c33c6a 100644 --- a/.gitignore +++ b/.gitignore @@ -10,5 +10,5 @@ PHEx/src/web-ext-artifacts/prodigy_hacking_extension_phex_-2.0.1.zip # macOS **/.DS_Store -# IntelliJ IDEA -/.idea/ +# PHEx metadata folder??? +PHEx/src/_metadata diff --git a/PHEx/build/extension.crx b/PHEx/build/extension.crx index 483bcbbc..3040096e 100644 Binary files a/PHEx/build/extension.crx and b/PHEx/build/extension.crx differ diff --git a/PHEx/build/extension.xpi b/PHEx/build/extension.xpi index 483bcbbc..3040096e 100644 Binary files a/PHEx/build/extension.xpi and b/PHEx/build/extension.xpi differ diff --git a/PHEx/build/extension.zip b/PHEx/build/extension.zip index 483bcbbc..3040096e 100644 Binary files a/PHEx/build/extension.zip and b/PHEx/build/extension.zip differ diff --git a/PHEx/input.css b/PHEx/input.css new file mode 100644 index 00000000..ddaf472f --- /dev/null +++ b/PHEx/input.css @@ -0,0 +1,13 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer components { + .input { + @apply border-0 px-3 py-3 placeholder-gray-500 text-gray-700 bg-white rounded text-sm shadow-lg focus:outline-none focus:ring w-full ease-linear transition-all duration-150; + } + + .toggler { + @apply right-0 border-green-400 absolute block w-6 h-6 rounded-full bg-white border-4 appearance-none cursor-pointer + } +} diff --git a/PHEx/package-lock.json b/PHEx/package-lock.json index 5bd3c210..36a3d863 100644 --- a/PHEx/package-lock.json +++ b/PHEx/package-lock.json @@ -12,6 +12,207 @@ "dir-archiver": "^1.1.2", "simple-archiver": "^1.0.1", "zip-dir": "^2.0.0" + }, + "devDependencies": { + "tailwindcss": "^3.0.22" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/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/@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/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, "node_modules/archiver": { @@ -65,11 +266,45 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/arg": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", + "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==", + "dev": true + }, "node_modules/async": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" }, + "node_modules/autoprefixer": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", + "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==", + "dev": true, + "peer": true, + "dependencies": { + "browserslist": "^4.19.1", + "caniuse-lite": "^1.0.30001297", + "fraction.js": "^4.1.2", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -80,6 +315,15 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/bl": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", @@ -99,6 +343,42 @@ "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/browserslist": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "dev": true, + "peer": true, + "dependencies": { + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, "node_modules/buffer": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", @@ -116,11 +396,113 @@ "node": "*" } }, + "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/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001311", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001311.tgz", + "integrity": "sha512-mleTFtFKfykEeW34EyfhGIFjGCqzhh38Y0LhdQ9aWF+HorZTtdgKV/1hEE0NlFkG2ubvisPV6l400tlbPys98A==", + "dev": true, + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "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/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, + "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/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/compress-commons": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-3.0.0.tgz", @@ -159,6 +541,22 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/crc": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", @@ -179,6 +577,47 @@ "node": ">= 6.9.0" } }, + "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/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "dev": true, + "dependencies": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + }, + "bin": { + "detective": "bin/detective.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, "node_modules/dir-archiver": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/dir-archiver/-/dir-archiver-1.1.2.tgz", @@ -190,6 +629,19 @@ "dir-archiver": "cli.js" } }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.68", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.68.tgz", + "integrity": "sha512-cId+QwWrV8R1UawO6b9BR1hnkJ4EJPCPAr4h315vliHUtVUJDk39Sg1PMNnaWKfj5x+93ssjeJ9LKL6r8LaMiA==", + "dev": true, + "peer": true + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -198,6 +650,97 @@ "once": "^1.4.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/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "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/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fraction.js": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.3.tgz", + "integrity": "sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -219,6 +762,26 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "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/glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -235,11 +798,44 @@ "node": "*" } }, + "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/graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, + "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-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/ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", @@ -250,6 +846,22 @@ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" }, + "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/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -264,11 +876,83 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "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": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "node_modules/jszip": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", @@ -327,6 +1011,21 @@ "immediate": "~3.0.5" } }, + "node_modules/lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -357,6 +1056,28 @@ "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=" }, + "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.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -407,6 +1128,25 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/nanoid": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "dev": true, + "peer": true + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -415,6 +1155,25 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -428,6 +1187,36 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, + "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": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -436,11 +1225,176 @@ "node": ">=0.10.0" } }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "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/postcss": { + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz", + "integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==", + "dev": true, + "dependencies": { + "nanoid": "^3.2.0", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", + "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.3.tgz", + "integrity": "sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.4", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", + "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.6" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "node_modules/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/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -451,7 +1405,78 @@ "util-deprecate": "^1.0.1" }, "engines": { - "node": ">= 6" + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "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/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-buffer": { @@ -542,6 +1567,15 @@ "node": ">= 6" } }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -550,6 +1584,70 @@ "safe-buffer": "~5.1.0" } }, + "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/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/tailwindcss": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.22.tgz", + "integrity": "sha512-F8lt74RlNZirnkaSk310+vGQta7c0/hgx7/bqxruM4wS9lp8oqV93lzavajC3VT0Lp4UUtUVIt8ifKcmGzkr0A==", + "dev": true, + "dependencies": { + "arg": "^5.0.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "cosmiconfig": "^7.0.1", + "detective": "^5.2.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "normalize-path": "^3.0.0", + "object-hash": "^2.2.0", + "postcss": "^8.4.6", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.0", + "postcss-nested": "5.0.6", + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "autoprefixer": "^10.0.2", + "postcss": "^8.0.9" + } + }, "node_modules/tar": { "version": "5.0.7", "resolved": "https://registry.npmjs.org/tar/-/tar-5.0.7.tgz", @@ -581,6 +1679,18 @@ "node": ">=6" } }, + "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/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -591,11 +1701,29 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/zip-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-2.0.0.tgz", @@ -620,6 +1748,158 @@ } }, "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "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" + } + }, + "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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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" + } + } + } + }, + "@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/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "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" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, "archiver": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/archiver/-/archiver-4.0.2.tgz", @@ -667,11 +1947,32 @@ } } }, + "arg": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", + "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==", + "dev": true + }, "async": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" }, + "autoprefixer": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", + "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==", + "dev": true, + "peer": true, + "requires": { + "browserslist": "^4.19.1", + "caniuse-lite": "^1.0.30001297", + "fraction.js": "^4.1.2", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -682,6 +1983,12 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, "bl": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", @@ -701,6 +2008,29 @@ "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" + } + }, + "browserslist": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "dev": true, + "peer": true, + "requires": { + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, "buffer": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", @@ -715,11 +2045,82 @@ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001311", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001311.tgz", + "integrity": "sha512-mleTFtFKfykEeW34EyfhGIFjGCqzhh38Y0LhdQ9aWF+HorZTtdgKV/1hEE0NlFkG2ubvisPV6l400tlbPys98A==", + "dev": true, + "peer": true + }, + "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" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "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" + } + } + } + }, "chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, + "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 + }, "compress-commons": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-3.0.0.tgz", @@ -757,6 +2158,19 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, "crc": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", @@ -774,6 +2188,35 @@ "readable-stream": "^3.4.0" } }, + "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 + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "dev": true, + "requires": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + } + }, + "didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, "dir-archiver": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/dir-archiver/-/dir-archiver-1.1.2.tgz", @@ -782,6 +2225,19 @@ "archiver": "^4.0.2" } }, + "dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.68", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.68.tgz", + "integrity": "sha512-cId+QwWrV8R1UawO6b9BR1hnkJ4EJPCPAr4h315vliHUtVUJDk39Sg1PMNnaWKfj5x+93ssjeJ9LKL6r8LaMiA==", + "dev": true, + "peer": true + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -790,6 +2246,77 @@ "once": "^1.4.0" } }, + "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" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "peer": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "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" + } + } + } + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fraction.js": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.3.tgz", + "integrity": "sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg==", + "dev": true, + "peer": true + }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -808,6 +2335,19 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "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 + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -821,11 +2361,35 @@ "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" + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, + "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-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 + }, "ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", @@ -836,6 +2400,16 @@ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" }, + "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" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -850,11 +2424,68 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "jszip": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", @@ -914,6 +2545,18 @@ "immediate": "~3.0.5" } }, + "lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -944,6 +2587,22 @@ "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=" }, + "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.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -982,11 +2641,37 @@ "minimist": "^1.2.5" } }, + "nanoid": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "dev": true + }, + "node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "dev": true, + "peer": true + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true, + "peer": true + }, + "object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "dev": true + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1000,16 +2685,128 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, + "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": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "postcss": { + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz", + "integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==", + "dev": true, + "requires": { + "nanoid": "^3.2.0", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", + "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", + "dev": true, + "requires": { + "camelcase-css": "^2.0.1" + } + }, + "postcss-load-config": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.3.tgz", + "integrity": "sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw==", + "dev": true, + "requires": { + "lilconfig": "^2.0.4", + "yaml": "^1.10.2" + } + }, + "postcss-nested": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", + "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.6" + } + }, + "postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "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 + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -1020,6 +2817,47 @@ "util-deprecate": "^1.0.1" } }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "requires": { + "is-core-module": "^2.8.1", + "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 + }, + "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-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -1100,6 +2938,12 @@ } } }, + "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==", + "dev": true + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -1108,6 +2952,50 @@ "safe-buffer": "~5.1.0" } }, + "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" + } + }, + "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 + }, + "tailwindcss": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.22.tgz", + "integrity": "sha512-F8lt74RlNZirnkaSk310+vGQta7c0/hgx7/bqxruM4wS9lp8oqV93lzavajC3VT0Lp4UUtUVIt8ifKcmGzkr0A==", + "dev": true, + "requires": { + "arg": "^5.0.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "cosmiconfig": "^7.0.1", + "detective": "^5.2.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "normalize-path": "^3.0.0", + "object-hash": "^2.2.0", + "postcss": "^8.4.6", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.0", + "postcss-nested": "5.0.6", + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.0" + } + }, "tar": { "version": "5.0.7", "resolved": "https://registry.npmjs.org/tar/-/tar-5.0.7.tgz", @@ -1133,6 +3021,15 @@ "readable-stream": "^3.1.1" } }, + "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" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -1143,11 +3040,23 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, "zip-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-2.0.0.tgz", diff --git a/PHEx/package.json b/PHEx/package.json index d03c1363..1f4a4b50 100644 --- a/PHEx/package.json +++ b/PHEx/package.json @@ -4,11 +4,13 @@ "description": "", "main": "build.js", "scripts": { - "build": "node build.js" + "build": "node build.js", + "watch_css": "tailwindcss -i ./input.css -o ./src/index.css --watch", + "build_css": "tailwindcss -i ./input.css -o ./src/index.css" }, "repository": { "type": "git", - "url": "git+https://github.com/UntrustableRus/PMGH-ext.git" + "url": "https://github.com/Prodigy-Hacking/ProdigyMathGameHacking" }, "keywords": [], "author": "", @@ -21,5 +23,8 @@ "dir-archiver": "^1.1.2", "simple-archiver": "^1.0.1", "zip-dir": "^2.0.0" + }, + "devDependencies": { + "tailwindcss": "^3.0.22" } } diff --git a/PHEx/src/background.js b/PHEx/src/background.js deleted file mode 100644 index bd23b3ae..00000000 --- a/PHEx/src/background.js +++ /dev/null @@ -1,70 +0,0 @@ -const browser = chrome || browser; - -// Ignore X-Frame Headers -const HEADERS_TO_STRIP_LOWERCASE = [ - "content-security-policy", - "x-frame-options", -]; - -browser.webRequest.onHeadersReceived.addListener( - details => ({ - responseHeaders: details.responseHeaders.filter(header => !HEADERS_TO_STRIP_LOWERCASE.includes(header.name.toLowerCase())) - }), - { urls: [""] }, - ["blocking", "responseHeaders", "extraHeaders"] -); - -function get(key) { - return new Promise(resolve => { - browser.storage.local.get([key], result => { - resolve(result[key]); - }); - }); -}; - -// Redirect Requests -browser.webRequest.onBeforeRequest.addListener(async details => { - // get options from local - const url = await get("url"); - const checked = await get("checked"); - const redirectorDomain = (url && checked) ? url : "https://hacks.prodigyhacking.com"; - - if (details.url.startsWith("https://code.prodigygame.com/code/") && details.url.includes("/game.min.js")) { - fetch("https://raw.githubusercontent.com/Prodigy-Hacking/ProdigyMathGameHacking/master/PHEx/status.json").then(response => response.json()).then(async data => { - if (data.offline == true) { - eval(await (await fetch("https://unpkg.com/sweetalert2")).text()) - if (swal) { - swal.fire({ - title: "Oh no!", - html: `Our hacks are currently having some issues, and we're working on it.`, - icon: "error" - }) - } else { - const res = confirm(`Uh Oh! Hacks look to be down. Hit OK to go to our discord to get updates on when they'll go back up!`); - - if (res) location = "https://discord.gg/XQDfbfq"; - } - } - }); - - // Blocking gamemin - browser.webRequest.onBeforeRequest.addListener( - _ => ({ cancel: true }), - { urls: ["*://code.prodigygame.com/code/*"] }, - ["blocking"] - ); - - // see disableIntegrity.js, we append the new game.min to the document - return { cancel: true }; - } else if (details.url.startsWith("https://code.prodigygame.com/js/public-game")) { - return { - redirectUrl: `${redirectorDomain}/public-game.min.js?hash=${details.url.split("public-game-")[1].split(".")[0]}&updated=${Date.now()}` - }; - } -}, { - urls: [ - "https://code.prodigygame.com/code/*/game.min.js?v=*", - "https://code.prodigygame.com/js/public-game-*.min.js" - ], - types: ["script", "xmlhttprequest"], -}, ["blocking"]); \ No newline at end of file diff --git a/PHEx/src/disableIntegrity.js b/PHEx/src/disableIntegrity.js index c2fca6e8..b8711423 100644 --- a/PHEx/src/disableIntegrity.js +++ b/PHEx/src/disableIntegrity.js @@ -1,68 +1,70 @@ -(async () => { - function get(key) { - return new Promise(resolve => { - chrome.storage.local.get([key], result => { - resolve(result[key]); - }); +function get(key) { + return new Promise(resolve => { + chrome.storage.local.get([key], result => { + resolve(result[key]); }); - } + }); +} - if (!window.scriptIsInjected) { - // get options from local - const url = await get("url"); - const checked = await get("checked"); - const redirectorDomain = (url && checked) ? url : "https://hacks.prodigyhacking.com"; +async function insertCode (redirectorDomain) { + try { + const request = await (await fetch(`${redirectorDomain}/game.min.js?updated=${Date.now()}`)).text() - window.scriptIsInjected = true; + const script = document.createElement("script") + script.innerHTML = request + document.body.appendChild(script) + } catch (error) { + eval(await (await fetch('https://unpkg.com/sweetalert2')).text()); + if (swal) { + swal.fire({ + title: "Oh no!", + html: `An error occurred when trying to fetch the hacks, this usually happens when your school blocks https://hacks.prodigyhacking.com.
More info:

 ${error} 

If this continues to happen, join our Discord server for support at https://discord.gg/XQDfbfq.`, + icon: "error" + }) + } else { + const res = confirm(`Oh No! Something went wrong while trying to connect to the server! Try reloading this page. If this error continues to appear, hit ok to join our Discord for support, or create an issue on the GitHub. More info ${error}. This is normally caused by your school or organization blocking the hacks.`); + if (res) location = "https://discord.gg/XQDfbfq"; + } + } +} - function redirectorCheck() { - fetch(`${redirectorDomain}/game.min.js?updated=${Date.now()}`) - .then(res => res.text()) - .then(response => { - console.log("Connection to server was Successful!"); +async function start () { + const url = await get("url") + const checked = await get("checked") + const redirectorDomain = (url && checked) ? url : "https://hacks.prodigyhacking.com" - // - // we cancel the real game.min, and just append ours - // a messy solution for sure, but this should only be a bandaid on a bulletwound - const injectedScript = document.createElement("script"); - injectedScript.innerHTML = response; + setTimeout(insertCode, 1000, redirectorDomain) - document.body.append(injectedScript); - }) - .catch(async (error) => { - // If fetch spits out error, trigger dialog box - eval(await (await fetch('https://unpkg.com/sweetalert2')).text()); - if (swal) { - swal.fire({ - title: "Oh no!", - html: `An error occurred when trying to fetch the hacks, this usually happens when your school blocks https://hacks.prodigyhacking.com.
More info:

 ${error} 

If this continues to happen, join our Discord server for support at https://discord.gg/XQDfbfq.`, - icon: "error" - }) - } else { - const res = confirm(`Oh No! Something went wrong while trying to connect to the server! Try reloading this page. If this error continues to appear, hit ok to join our Discord for support, or create an issue on the GitHub. More info ${error}. This is normally caused by your school or organization blocking the hacks.`); - if (res) location = "https://discord.gg/XQDfbfq"; - } - }); - } - setTimeout(redirectorCheck, 1000); + const pluginVersion = chrome.runtime.getManifest().version + const supportedVersion = (await (await fetch(`${redirectorDomain}/version`)).text()) - const pluginVersion = chrome.runtime.getManifest().version; - const supportedVersion = (await (await fetch(`${redirectorDomain}/version`)).text()); - // Checks for plugin version. If outdated, triggers dialog box. - if (pluginVersion !== supportedVersion) { - const res = confirm("The PMGH extension is outdated. If you expierence any errors, please update. If you are on the Chrome Webstore version or any webstore, please wait. Updates take some time."); + if (pluginVersion !== supportedVersion) { + eval(await (await fetch('https://unpkg.com/sweetalert2')).text()); + if (swal) { + swal.fire({ + title: "Oh no!", + html: `Your version of PHEx is outdated! Please update to the latest version to continue using PHEx.`, + icon: "error" + }) + } else { + const res = confirm(`Your version of PHEx is outdated! Please update to the latest version to continue using PHEx.`); + if (res) location = "https://github.com/Prodigy-Hacking/ProdigyMathGameHacking/wiki/How-to-Update" + } + } - if (res) location = "https://github.com/Prodigy-Hacking/ProdigyMathGameHacking/wiki/How-to-Update"; + // Disable integrity + console.group("integrity patches"); + [...document.getElementsByTagName("script"), ...document.getElementsByTagName("link")].forEach(v => { + if (v.integrity) { + console.log(v.integrity); + v.removeAttribute("integrity"); } + }); + console.groupEnd() +} - // Disable integrity - console.groupCollapsed("integrity patches"); - [...document.getElementsByTagName("script"), ...document.getElementsByTagName("link")].forEach(v => { - if (v.integrity) { - console.log(v.integrity); - v.removeAttribute("integrity"); - } - }); - console.groupEnd("integrity patches"); - } -})(); +if (!window.scriptIsInjected) { + window.scriptIsInjected = true; + + start() +} diff --git a/PHEx/src/index.css b/PHEx/src/index.css new file mode 100644 index 00000000..79c7ed95 --- /dev/null +++ b/PHEx/src/index.css @@ -0,0 +1,808 @@ +/* +! tailwindcss v3.0.22 | MIT License | https://tailwindcss.com +*/ + +/* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ + +*, +::before, +::after { + box-sizing: border-box; + /* 1 */ + border-width: 0; + /* 2 */ + border-style: solid; + /* 2 */ + border-color: #e5e7eb; + /* 2 */ +} + +::before, +::after { + --tw-content: ''; +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +*/ + +html { + line-height: 1.5; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ + -moz-tab-size: 4; + /* 3 */ + -o-tab-size: 4; + tab-size: 4; + /* 3 */ + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + /* 4 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { + margin: 0; + /* 1 */ + line-height: inherit; + /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; + /* 1 */ + color: inherit; + /* 2 */ + border-top-width: 1px; + /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font family by default. +2. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + +/* +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; + /* 1 */ + border-color: inherit; + /* 2 */ + border-collapse: collapse; + /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + line-height: inherit; + /* 1 */ + color: inherit; + /* 1 */ + margin: 0; + /* 2 */ + padding: 0; + /* 3 */ +} + +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +[type='button'], +[type='reset'], +[type='submit'] { + -webkit-appearance: button; + /* 1 */ + background-color: transparent; + /* 2 */ + background-image: none; + /* 2 */ +} + +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type='search'] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +legend { + padding: 0; +} + +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} + +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::-moz-placeholder, textarea::-moz-placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +input:-ms-input-placeholder, textarea:-ms-input-placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +input::placeholder, +textarea::placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +/* +Set the default cursor for buttons. +*/ + +button, +[role="button"] { + cursor: pointer; +} + +/* +Make sure disabled buttons don't get the pointer cursor. +*/ + +:disabled { + cursor: default; +} + +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; + /* 1 */ + vertical-align: middle; + /* 2 */ +} + +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +/* +Ensure the default browser behavior of the `hidden` attribute. +*/ + +[hidden] { + display: none; +} + +*, ::before, ::after { + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; +} + +.input { + width: 100%; + border-radius: 0.25rem; + border-width: 0px; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + padding-left: 0.75rem; + padding-right: 0.75rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + font-size: 0.875rem; + line-height: 1.25rem; + --tw-text-opacity: 1; + color: rgb(55 65 81 / var(--tw-text-opacity)); +} + +.input::-moz-placeholder { + --tw-placeholder-opacity: 1; + color: rgb(107 114 128 / var(--tw-placeholder-opacity)); +} + +.input:-ms-input-placeholder { + --tw-placeholder-opacity: 1; + color: rgb(107 114 128 / var(--tw-placeholder-opacity)); +} + +.input::placeholder { + --tw-placeholder-opacity: 1; + color: rgb(107 114 128 / var(--tw-placeholder-opacity)); +} + +.input { + --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; + transition-timing-function: linear; +} + +.input:focus { + outline: 2px solid transparent; + outline-offset: 2px; + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} + +.absolute { + position: absolute; +} + +.relative { + position: relative; +} + +.left-1\/2 { + left: 50%; +} + +.top-0 { + top: 0px; +} + +.bottom-0 { + bottom: 0px; +} + +.right-0 { + right: 0px; +} + +.mx-3 { + margin-left: 0.75rem; + margin-right: 0.75rem; +} + +.mt-3 { + margin-top: 0.75rem; +} + +.mb-5 { + margin-bottom: 1.25rem; +} + +.ml-4 { + margin-left: 1rem; +} + +.block { + display: block; +} + +.flex { + display: flex; +} + +.hidden { + display: none; +} + +.h-48 { + height: 12rem; +} + +.h-full { + height: 100%; +} + +.h-10 { + height: 2.5rem; +} + +.h-6 { + height: 1.5rem; +} + +.w-72 { + width: 18rem; +} + +.w-48 { + width: 12rem; +} + +.w-full { + width: 100%; +} + +.w-16 { + width: 4rem; +} + +.w-6 { + width: 1.5rem; +} + +.flex-shrink-0 { + flex-shrink: 0; +} + +.-translate-x-1\/2 { + --tw-translate-x: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.appearance-none { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.items-center { + align-items: center; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.rounded-full { + border-radius: 9999px; +} + +.rounded-md { + border-radius: 0.375rem; +} + +.rounded { + border-radius: 0.25rem; +} + +.border { + border-width: 1px; +} + +.border-red-400 { + --tw-border-opacity: 1; + border-color: rgb(248 113 113 / var(--tw-border-opacity)); +} + +.bg-blue-500 { + --tw-bg-opacity: 1; + background-color: rgb(59 130 246 / var(--tw-bg-opacity)); +} + +.bg-pink-400 { + --tw-bg-opacity: 1; + background-color: rgb(244 114 182 / var(--tw-bg-opacity)); +} + +.bg-gray-300 { + --tw-bg-opacity: 1; + background-color: rgb(209 213 219 / var(--tw-bg-opacity)); +} + +.bg-red-100 { + --tw-bg-opacity: 1; + background-color: rgb(254 226 226 / var(--tw-bg-opacity)); +} + +.fill-current { + fill: currentColor; +} + +.p-2 { + padding: 0.5rem; +} + +.p-1 { + padding: 0.25rem; +} + +.py-2 { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.px-4 { + padding-left: 1rem; + padding-right: 1rem; +} + +.py-3 { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} + +.text-center { + text-align: center; +} + +.text-3xl { + font-size: 1.875rem; + line-height: 2.25rem; +} + +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem; +} + +.font-bold { + font-weight: 700; +} + +.text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} + +.text-blue-600 { + --tw-text-opacity: 1; + color: rgb(37 99 235 / var(--tw-text-opacity)); +} + +.text-red-700 { + --tw-text-opacity: 1; + color: rgb(185 28 28 / var(--tw-text-opacity)); +} + +.text-red-500 { + --tw-text-opacity: 1; + color: rgb(239 68 68 / var(--tw-text-opacity)); +} + +.duration-300 { + transition-duration: 300ms; +} + +.ease-in-out { + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} + +.after\:h-8::after { + content: var(--tw-content); + height: 2rem; +} + +.after\:w-8::after { + content: var(--tw-content); + width: 2rem; +} + +.after\:rounded-full::after { + content: var(--tw-content); + border-radius: 9999px; +} + +.after\:bg-white::after { + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +} + +.after\:shadow-md::after { + content: var(--tw-content); + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.after\:duration-300::after { + content: var(--tw-content); + transition-duration: 300ms; +} + +.hover\:bg-blue-700:hover { + --tw-bg-opacity: 1; + background-color: rgb(29 78 216 / var(--tw-bg-opacity)); +} + +.hover\:bg-pink-300:hover { + --tw-bg-opacity: 1; + background-color: rgb(249 168 212 / var(--tw-bg-opacity)); +} + +.peer:checked ~ .peer-checked\:bg-green-400 { + --tw-bg-opacity: 1; + background-color: rgb(74 222 128 / var(--tw-bg-opacity)); +} + +.peer:checked ~ .peer-checked\:after\:translate-x-6::after { + content: var(--tw-content); + --tw-translate-x: 1.5rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +@media (min-width: 640px) { + .sm\:inline { + display: inline; + } +} diff --git a/PHEx/src/manifest.json b/PHEx/src/manifest.json index 57a7d5d2..f5fc0e37 100644 --- a/PHEx/src/manifest.json +++ b/PHEx/src/manifest.json @@ -2,28 +2,32 @@ "name": "Prodigy Hacking Extension (PHEx)", "version": "2.1.8", "description": "PHEx is an extension made to raise awareness of security issues for Prodigy", - "permissions": [ - "webRequest", - "webRequestBlocking", + + "permissions": ["declarativeNetRequest", "storage"], + "declarative_net_request": { + "rule_resources": [ + { + "id": "anti_csp", + "enabled": true, + "path": "rulesets/no_csp_rules.json" + }, { + "id": "block_js", + "enabled": true, + "path": "rulesets/block_js_files_rules.json" + } + ] + }, + "host_permissions": [ "*://*.prodigygame.com/*", - "https://raw.githubusercontent.com/*", - "storage" + "https://raw.githubusercontent.com/*" ], - "icons": { - "16": "assets/x16.png", - "48": "assets/x48.png", - "128": "assets/x128.png" - }, - "background": { - "scripts": ["background.js"], - "persistent": true - }, "content_scripts": [{ "matches": ["https://math.prodigygame.com/*"], "js": ["disableIntegrity.js"] }], - "browser_action": { - "default_popup": "popup.html" - }, - "manifest_version": 2 + + "action": { "default_popup": "popup.html" }, + "icons": { "16": "assets/x16.png", "48": "assets/x48.png", "128": "assets/x128.png" }, + + "manifest_version": 3 } diff --git a/PHEx/src/popup.html b/PHEx/src/popup.html index d0fc4041..75a1b767 100644 --- a/PHEx/src/popup.html +++ b/PHEx/src/popup.html @@ -2,81 +2,53 @@ PHEX - - - - + - -
- -

PHEX

- -
- +
+

PHEX

+ + - -

- -
- + +
- -

- -
- Developer Options - -

Developer Options

- -

Only touch if you know what you're doing! To use the hack, just go to prodigy. If you need help, go to our discord server

- -

Custom PNP URL

- - -

Use Custom URL

- - -

Save

-

Only touch if you know what you're doing! To save options, type in "nootnoot", and submit.

- - - -

- - -
- - - +
+ +
+ +
diff --git a/PHEx/src/popup.js b/PHEx/src/popup.js index 86022888..654cff0a 100644 --- a/PHEx/src/popup.js +++ b/PHEx/src/popup.js @@ -1,50 +1,60 @@ -(async() => { - function set(key, value) { - chrome.storage.local.set({ [key]: value }) - }; - function get(key) { - return new Promise(resolve => { - chrome.storage.local.get([key], result => { - resolve(result[key]) - }) +function set(key, value) { + chrome.storage.local.set({ [key]: value }) +} + +function get(key) { + return new Promise(resolve => { + chrome.storage.local.get([key], result => { + resolve(result[key]) }) - }; - function validURL(str) { + }) +} + +function validURL(str) { + try { var pattern = new RegExp('^(https?:\\/\\/)?'+ // protocol '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // domain name '((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // port and path '(\\?[;&a-z\\d%_.~+=-]*)?'+ // query string - '(\\#[-a-z\\d_]*)?$','i'); // fragment locator - return !!pattern.test(str) || new URL(str).hostname === "localhost"; + '(\\#[-a-z\\d_]*)?$','i') // fragment locator + return !!pattern.test(str) || new URL(str).hostname === "localhost" + } catch { + return false } - - const checkbox = document.querySelector(".check") - const input = document.querySelector("input") +} - input.value = await get("url") || ""; - checkbox.checked = await get("checked") || false; +const developerForm = document.querySelector("form#dev") +const revealButton = document.getElementById("reveal-button") +const checkbox = document.querySelector("input#checkbox") +const pnpUrl = document.querySelector("input#pnp-url") +const alert = document.getElementById("alert") +const closeButton = document.getElementById("close-button") - input.onchange = () => { - document.querySelector("p").innerHTML = "" +revealButton.addEventListener("click", () => { + if (developerForm.classList.length === 1) { + developerForm.classList.remove("hidden") + } else { + developerForm.classList.add("hidden") } +}) - checkbox.addEventListener("click", async (event) => { - if (await get("checked")) { - // if already checked, no need to run checks - // set checked to new value, which should be false - set("checked", checkbox.checked); +checkbox.addEventListener("change", () => { + if (!validURL(pnpUrl.value)) { + if (checkbox.checked) { + alert.classList.remove("hidden") } else { - // if we're turning on checked, we need to run a few checks - if (validURL(input.value)) { - // if the URL is valid, update url and checked to their latest values. - set("url", input.value); - set("checked", checkbox.checked); - } else { - // if the URL is invalid, scream at them until they burst into tears - document.querySelector("p").innerHTML = "Invalid URL"; - checkbox.checked = false; - } + alert.classList.add("hidden") } - }) -})() \ No newline at end of file + checkbox.checked = false + set("url", "") + set("checked", false) + return + } + set("url", pnpUrl.value) + set("checked", checkbox.checked) +}) + +closeButton.addEventListener("click", () => { + alert.classList.add("hidden") +}) diff --git a/PHEx/src/rulesets/block_js_files_rules.json b/PHEx/src/rulesets/block_js_files_rules.json new file mode 100644 index 00000000..e310e0be --- /dev/null +++ b/PHEx/src/rulesets/block_js_files_rules.json @@ -0,0 +1,14 @@ +[ + { + "id": 1, + "priority": 1, + "action": { "type": "block" }, + "condition": { "urlFilter": "https://code.prodigygame.com/code/*/game.min.js?v=*" } + }, + { + "id": 2, + "priority": 1, + "action": { "type": "block" }, + "condition": { "urlFilter": "https://code.prodigygame.com/js/public-game-*.min.js" } + } +] \ No newline at end of file diff --git a/PHEx/src/rulesets/no_csp_rules.json b/PHEx/src/rulesets/no_csp_rules.json new file mode 100644 index 00000000..edd6773f --- /dev/null +++ b/PHEx/src/rulesets/no_csp_rules.json @@ -0,0 +1,14 @@ +[ + { + "id": 1, + "priority": 1, + "action": { + "type": "modifyHeaders", + "responseHeaders": [ + { "header": "content-security-policy", "operation": "remove" }, + { "header": "x-frame-options", "operation": "remove" } + ] + }, + "condition": { "urlFilter": "*://*.prodigygame.com/*", "resourceTypes": ["main_frame"] } + } +] \ No newline at end of file diff --git a/PHEx/tailwind.config.js b/PHEx/tailwind.config.js new file mode 100644 index 00000000..54537ff4 --- /dev/null +++ b/PHEx/tailwind.config.js @@ -0,0 +1,8 @@ +module.exports = { + content: ["./src/**/*.{html,js}"], + theme: { + extend: {}, + }, + plugins: [], + mode: "jit" +} \ No newline at end of file diff --git a/willsCheatMenu/dist/bundle.js b/willsCheatMenu/dist/bundle.js index d0abd781..583e538b 100644 --- a/willsCheatMenu/dist/bundle.js +++ b/willsCheatMenu/dist/bundle.js @@ -1 +1 @@ -(()=>{var __webpack_modules__={8844:(e,t,n)=>{var o,a;function r(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function s(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var s=e.apply(t,n);function i(e){r(s,o,a,i,c,"next",e)}function c(e){r(s,o,a,i,c,"throw",e)}i(void 0)}))}}o=[n,t,n(4759),n(9820),n(2852)],void 0===(a=function(e,t,n,o,a){"use strict";new o.Toggler(o.category.battle,"Disable math").setEnabled(s((function*(){a._.constants.constants["GameConstants.Debug.EDUCATION_ENABLED"]=!1}))).setDisabled(s((function*(){a._.constants.constants["GameConstants.Debug.EDUCATION_ENABLED"]=!0}))),new o.Hack(o.category.battle,"Escape Battle","Escape any battle!").setClick(s((function*(){var e=a.game.state.current;"PVP"===e?Object.fromEntries(a._.instance.game.state.states).PVP.endPVP():"CoOp"===e?a.prodigy.world.$(a._.player.data.zone):["Battle","SecureBattle"].includes(e)?(Object.fromEntries(a._.instance.game.state.states)[e].runAwayCallback(),n.Toast.fire("Escaped!","You have successfully escaped from the battle.","success")):n.Toast.fire("Invalid State.","You are currently not in a battle.","error")}))),new o.Hack(o.category.battle,"Win Battle","Instantly win a monster battle.").setClick(s((function*(){var e=a.game.state.current;if("PVP"===e||"CoOp"===e)return n.Toast.fire("Invalid State.","PVP is not supported for this hack.","error");"Battle"===e?(Object.fromEntries(a._.instance.game.state.states).Battle.startVictory(),n.Toast.fire("Victory!","You have successfully won the battle.","success")):"SecureBattle"===e?(Object.fromEntries(a._.instance.game.state.states).SecureBattle.battleVictory(),n.Toast.fire("Victory!","You have successfully won the battle.","success")):n.Toast.fire("Invalid State.","You are currently not in a battle.","error")}))),new o.Hack(o.category.battle,"Set Battle Hearts","Sets your hearts in battle. Automatically raises max hearts.").setClick(s((function*(){var e=yield n.NumberInput.fire("Health Amount","How much HP do you want?","question");void 0!==e.value&&(a._.player.getMaxHearts=()=>+e.value,a._.player.pvpHP=+e.value,a._.player.data.hp=+e.value,n.Toast.fire("Success!","Your hearts have been set.","success"))}))),new o.Hack(o.category.battle,"Fill Battle Energy","Fills up your battle energy.").setClick(s((function*(){var e=a.game.state.getCurrentState();if(!("teams"in e))return n.Toast.fire("Error","You are currently not in a battle.","error");e.teams[0].setEnergy(99),n.Toast.fire("Success!","Your battle energy has been filled.","success")}))),new o.Hack(o.category.battle,"Heal Team").setClick(s((function*(){var e=a.game.state.current;["Battle","SecureBattle"].includes(e)?(a._.player.heal(),n.Toast.fire("Success!","Your team has been healed successfully!","success")):n.Toast.fire("Invalid State.","Your are currently not in a battle.","error")})))}.apply(t,o))||(e.exports=a)},8130:(e,t,n)=>{var o,a;function r(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function s(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var s=e.apply(t,n);function i(e){r(s,o,a,i,c,"next",e)}function c(e){r(s,o,a,i,c,"throw",e)}i(void 0)}))}}o=[n,t,n(9820),n(4759),n(2852)],void 0===(a=function(e,t,n,o,a){"use strict";var r=["Boots","Buddies","Fossils","Hats","Items","Key Items","Tower Town Frames","Tower Town Interiors","Mounts","Outfits","Relics","Weapons","Currencies"],i=["boots","follow","fossil","hat","item","key","mathTownFrame","mathTownInterior","mount","outfit","spellRelic","weapon","currency"],c=(e,t)=>e.map((e=>({ID:e.ID,N:t}))).filter((e=>void 0!==e));new n.Hack(n.category.inventory,"Item stacker").setClick(s((function*(){var e=yield o.NumberInput.fire("Amount","How many of every item would you like?","question");if(e.value&&(yield o.Confirm.fire("Are you sure you want to get all items in the game?")).value){i.forEach((t=>{a._.player.backpack.data[t]=c(a._.gameData[t].filter((e=>"follow"===t?![125,126,127,128,129,134,135,136,137].includes(e.ID):e)),e.value)})),a._.gameData.dorm.forEach((t=>a._.player.house.data.items[t.ID]={A:[],N:e.value}));for(var t=()=>a._.player.backpack.data.item.findIndex((e=>84===e.ID||85===e.ID||86===e.ID));t()>-1;)a._.player.backpack.data.item.splice(t(),1);o.Toast.fire("Success!","All items added!","success")}}))),new n.Hack(n.category.inventory,"Clear inventory").setClick(s((function*(){(yield o.Confirm.fire("Are you sure you want to clear your inventory?")).value&&(Object.keys(a._.player.backpack.data).forEach((e=>a._.player.backpack.data[e]=[])),o.Toast.fire("Success!","Inventory cleared.","success"))}))),new n.Hack(n.category.inventory,"Selector (Basic)").setClick(s((function*(){yield o.Swal.fire({title:"What would you like to obtain?",input:"select",inputOptions:r,inputPlaceholder:"Select...",inputValidator:e=>e?"":"Please select which you'd like to obtain.",showCancelButton:!0}).then(function(){var e=s((function*(e){var t=parseInt(e.value),n=r[t],s=i[t];if(n){var l=yield o.NumberInput.fire("Amount","How many each object would you like?","question");l.value&&(yield o.Confirm.fire("Are you sure you want to get all ".concat(n.toLowerCase(),"?"))).value&&(a._.player.backpack.data[s]=c(a._.gameData[s].filter((e=>"follow"===s?![125,126,127,128,129,134,135,136,137].includes(e.ID):e)),l.value),o.Toast.fire("".concat(n," Added!"),"All ".concat(n.toLowerCase()," have been added to your inventory!"),"success"),a.saveCharacter())}}));return function(t){return e.apply(this,arguments)}}())}))),new n.Hack(n.category.inventory,"Selector (Advanced)","Choose a specific object and quantity to obtain.").setClick(s((function*(){yield o.Swal.fire({title:"What would you like to obtain?",input:"select",inputOptions:r,inputPlaceholder:"Select...",inputValidator:e=>e?"":"Please select which you'd like to obtain.",showCancelButton:!0}).then(function(){var e=s((function*(e){if(a._.gameData[i[e.value]]){var t=[];a._.gameData[i[e.value]].forEach((e=>{t.push(e.data.name)})),yield o.Swal.fire({title:"What specific object categorized as ".concat(r[e.value].toLowerCase()," would you like to get?"),input:"select",inputOptions:t,inputPlaceholder:"Select...",inputValidator:e=>e?"":"Please select which you'd like to get.",showCancelButton:!0}).then(function(){var t=s((function*(t){var n=parseInt(t.value);if(a._.gameData[i[e.value]][n]){var s=yield o.NumberInput.fire("Amount","How many of the object would you like?","question");s.value&&(-1===a._.player.backpack.data[i[e.value]].findIndex((t=>t.ID===a._.gameData[i[e.value]][n].ID))?a._.player.backpack.data[i[e.value]].push({ID:a._.gameData[i[e.value]][n].ID,N:s.value}):a._.player.backpack.data[i[e.value]].findIndex((t=>t.ID===a._.gameData[i[e.value]][n].ID)),o.Toast.fire("".concat(r[e.value]," Added!"),"Your selected ".concat(r[e.value].toLowerCase()," have been added."),"success"),a.saveCharacter())}}));return function(e){return t.apply(this,arguments)}}())}}));return function(t){return e.apply(this,arguments)}}())}))),new n.Hack(n.category.inventory,"Get all runes").setClick(s((function*(){if((yield o.Confirm.fire({title:"Hang on!",html:"This feature is in beta. Using this could break your account in a specific way. This should be used for experimentation only.

Proceed?",icon:"warning"})).value){var e,t=parseInt((yield o.NumberInput.fire({title:"Amount",text:"How many of each would you like?",icon:"question",inputValidator:e=>e?"":"Please select which you'd like to get."})).value);if(!isNaN(t))Array.from(a._.instance.prodigy.gameContainer._inversifyContainer._bindingDictionary._map).forEach((t=>{try{a._.instance.prodigy.gameContainer.get(t[0]).battleData&&(e=t[0])}catch(e){console.log("Error for ".concat(t[0]))}})),a._.instance.prodigy.gameContainer.get(e).battleData._secureCharacterState._data.inventory.orb=((e,t)=>e.map((e=>({ID:e.ID,quantity:t}))).filter((e=>void 0!==e)))(a._.gameData.orb,t),o.Toast.fire("Runes Added!","Your runes have been added!","success")}}))),new n.Hack(n.category.inventory,"Obtain All Furniture").setClick(s((function*(){var e=yield o.NumberInput.fire("Amount","How many of each piece of furniture would you like?","question");e.value&&(yield o.Confirm.fire("Are you sure you want to get all furniture?")).value&&(a._.gameData.dorm.forEach((t=>a._.player.house.data.items[t.ID]={A:[],N:e.value})),o.Toast.fire("Furniture Added!","All furniture has been added to your inventory!","success"))}))),new n.Hack(n.category.inventory,"Obtain All Mounts","This gives you the Fluffy Cloud and the Rainbow Cloud.").setClick(s((function*(){a._.player.backpack.data.mount=c(a._.gameData.mount,1),o.Toast.fire("Mounts Added!","All mounts have been added to your inventory!")}))),new n.Hack(n.category.inventory,"Remove item").setClick(s((function*(){var e=yield o.Swal.fire({title:"What category would you like to remove an item from?",input:"select",inputOptions:r,inputPlaceholder:"Select...",inputValidator:e=>e?"":"Please select which you'd like to obtain.",showCancelButton:!0});if(a._.gameData[i[e.value]]){var t=a._.gameData[i[e.value]].map((e=>e.data.name)),n=yield o.Swal.fire({title:"What specific object categorized as ".concat(r[e.value].toLowerCase()," would you like to remove?"),input:"select",inputOptions:t,inputPlaceholder:"Select...",inputValidator:e=>e?"":"Please select which you'd like to get.",showCancelButton:!0});if(n=parseInt(n.value),a._.gameData[i[e.value]][n]){var s=yield o.NumberInput.fire("Amount","How many of the object would you like to remove?","question");if(s.value)if(-1!==a._.player.backpack.data[i[e.value]].findIndex((t=>t.ID===a._.gameData[i[e.value]][n].ID))){var c=a._.player.backpack.data[i[e.value]].findIndex((t=>t.ID===a._.gameData[i[e.value]][n].ID));a._.player.backpack.data[i[e.value]][c].N-=parseInt(s.value),a._.player.backpack.data[i[e.value]][c].N<=0&&a._.player.backpack.data[i[e.value]].splice(c,1),o.Toast.fire("Removed!","Successfully removed ".concat(s.value," ").concat(a._.gameData[i[e.value]][n].name,"!"),"success"),a.saveCharacter()}else yield o.Swal.fire("Item Does Not Exist","You do not have any ".concat(a._.gameData[i[e.value]][n].name,"."),"error")}}})))}.apply(t,o))||(e.exports=a)},8346:(e,t,n)=>{var o,a;function r(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function s(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var s=e.apply(t,n);function i(e){r(s,o,a,i,c,"next",e)}function c(e){r(s,o,a,i,c,"throw",e)}i(void 0)}))}}o=[n,t,n(9820),n(4759),n(2852)],void 0===(a=function(e,t,n,o,a){"use strict";new n.Hack(n.category.location,"Teleport To Map (interactive)").setClick(s((function*(){var e=o.Swal.mixin({focusConfirm:!1,showCancelButton:!0,preConfirm:()=>{var e;return null===(e=document.querySelector(".radioDiv[checked]"))||void 0===e?void 0:e.getAttribute("zone")}}),t=document.createElement("div");t.classList.add("radioContainer");var n=function(e){var n=document.createElement("DIV");n.classList.add("radioDiv"),n.setAttribute("zone",e);var o=a.locations[e];o?n.style.backgroundImage="url(".concat(o,")"):n.innerText=e,n.onclick=()=>{document.querySelectorAll(".radioDiv[checked]").forEach((e=>e.removeAttribute("checked"))),n.setAttribute("checked","")},t.append(n)};for(var r of Object.keys(a.prodigy.world.zones))n(r);var s=yield e.fire({title:"Teleport Zone",html:t,customClass:{popup:"radioSwal"}});if(s.value){var i=Object.keys(a.prodigy.world.zones[s.value].maps),c=yield o.Swal.fire({input:"select",inputOptions:new Map(i.map((e=>[e,e]))),title:"Map",text:"Which map in the zone do you want to teleport to?"});if(c.value){var l=(yield o.NumberInput.fire("Please enter the x to teleport to. (Try 500?)")).value||500,u=(yield o.NumberInput.fire("Please enter the y to teleport to. (Try 500?)")).value||500;a.prodigy.world.zones[s.value].teleport(c.value,l,u,{},{}),o.Toast.fire("Teleported","You have been teleported!","success")}}}))),new n.Hack(n.category.location,"Teleport to house by userID").setClick(s((function*(){var e=(yield o.NumberInput.fire("Please enter the userID.")).value;e&&(function(e){if(a._.player.userID!==e){var t=a._.instance.prodigy.friendsListNetworkHandler.friendsList.length,n=a._.instance.prodigy.friendsListNetworkHandler.classList.length;a._.instance.prodigy.gameContainer.get("2e1-e659").create("house-visit","click","hub",t,n,null,null,e).broadcast()}var r=a._.instance.prodigy.world.getZone(a._.instance.prodigy.world.getCurrentZone());if(!r)return o.Swal.fire({title:"Error",text:"You are not in a zone!",icon:"error"});r.handleLeaving(2,(()=>function(e){a._.instance.prodigy.loading(!0);var t=t=>{var n=null!=t?t[e]:null;if(null!==n&&void 0!==n.house&&null!==n.house){a._.instance.prodigy.loading(!1);var r=a._.cloneDeep(a._.player.house);if(r.setItems(n.house),void 0===n.data.allowsHouseVisitors||null===n.data.allowsHouseVisitors||!n.data.allowsHouseVisitors)return o.Swal.fire("Teleporting to ".concat(e," is not allowed."),"Try another user.","error");a._.instance.prodigy.world._("house",null,null,{house:r,getAllowsHouseVisitors:()=>void 0!==n.data.allowsHouseVisitors&&null!==n.data.allowsHouseVisitors&&n.data.allowsHouseVisitors,setAllowsHouseVisitors:e=>{n.data.allowsHouseVisitors=e}})}};a._.network.getCharData(e.toString(),["house","data"],t,t)}(e)))}(e),o.Toast.fire("Teleported!","You have been teleported!","success"))}))),new n.Hack(n.category.location,"Get Map Location").setClick(s((function*(){o.Swal.fire({title:"Map Location",html:"You are at
".concat(a._.player.data.zone," .
You can save this to get to the same zone."),icon:"info"})})))}.apply(t,o))||(e.exports=a)},3344:(e,t,n)=>{var o,a;function r(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function s(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var s=e.apply(t,n);function i(e){r(s,o,a,i,c,"next",e)}function c(e){r(s,o,a,i,c,"throw",e)}i(void 0)}))}}o=[n,t,n(9820),n(2852)],void 0===(a=function(e,t,n,o){"use strict";new n.Toggler(n.category.minigames,"20x Walk Speed","Walk really fast!").setEnabled(s((function*(){o._.instance.game.state.states.get("DinoDig").walkSpeed=20}))).setDisabled(s((function*(){o._.instance.game.state.states.get("DinoDig").walkSpeed=1.5})))}.apply(t,o))||(e.exports=a)},465:(e,t,n)=>{var o,a;function r(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function s(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var s=e.apply(t,n);function i(e){r(s,o,a,i,c,"next",e)}function c(e){r(s,o,a,i,c,"throw",e)}i(void 0)}))}}o=[n,t,n(4759),n(9820),n(2852)],void 0===(a=function(e,t,n,o,a){"use strict";new o.Hack(o.category.misc,"Skip Tutorial").setClick(s((function*(){var e=(e,t,n,o)=>{a._.instance.prodigy.world.getZone(e).testQuest(t,n,o);try{Object.fromEntries(a._.instance.game.state.states).TileScreen.process()}catch(e){}};e("house",2),e("academy",2),a._.player.state.set("tutorial-0",4),a._.player.backpack.addKeyItem(13,0),a._.player.tutorial.data.menus[14]=[1],a._.instance.prodigy.open.map(!0,[]),a._.player.onTutorialComplete(),a._.player.data.level=Math.max(a._.player.data.level,5)}))),new o.Toggler(o.category.misc,"Disable Monster Encounters").setEnabled(s((function*(){a._.constants.constants["GameConstants.Debug.SCALE_ENCOUNTER_DISTANCE"]=0}))).setDisabled((()=>{a._.constants.constants["GameConstants.Debug.SCALE_ENCOUNTER_DISTANCE"]=1})),new o.Toggler(o.category.misc,"Skip enemy turn").setEnabled(s((function*(){a._.constants.constants["GameConstants.Battle.SKIP_ENEMY_TURN"]=!0}))).setDisabled((()=>{a._.constants.constants["GameConstants.Battle.SKIP_ENEMY_TURN"]=!1})),new o.Hack(o.category.misc,"Bobbify","Converts your account into Bobby Fancywoman.").setClick(s((function*(){(yield n.Confirm.fire("Are you sure you want your account to be turned into Bobby Fancywoman?","This action is not reversable.")).value&&(a._.player.name.data.nickname=null,a._.player.name.data.firstName=44,a._.player.name.data.middleName=754,a._.player.name.data.lastName=882,a._.player.data.stars=-1e22,a._.player.data.level=69,a._.player.appearance.setGender("male"),a._.player.appearance.setEyeColor(1),a._.player.appearance.setFace(4),a._.player.appearance.setHair(19,1),a._.player.appearance.setSkinColor(1),a._.player.equipment.setFollow(19),a._.player.equipment.setHat(19),a._.player.equipment.setBoots(19),a._.player.equipment.setOutfit(19),a._.player.equipment.setWeapon(19),n.Toast.fire("Bobbified!","You are now Bobby Fancywoman.","success"))}))),new o.Hack(o.category.misc,"Reset Account","Completely resets your account.").setClick(s((function*(){(yield n.Confirm.fire("Are you sure you want to reset your account?","This action is not reversable.")).value&&a._.player.resetAccount()})))}.apply(t,o))||(e.exports=a)},7736:(module,exports,__webpack_require__)=>{var __webpack_unused_export__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;function asyncGeneratorStep(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function _asyncToGenerator(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var r=e.apply(t,n);function s(e){asyncGeneratorStep(r,o,a,s,i,"next",e)}function i(e){asyncGeneratorStep(r,o,a,s,i,"throw",e)}s(void 0)}))}}__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__,exports,__webpack_require__(4759),__webpack_require__(9820),__webpack_require__(2852)],__WEBPACK_AMD_DEFINE_RESULT__=function(require,exports,swal_1,index_1,util_1){"use strict";__webpack_unused_export__={value:!0},new index_1.Hack(index_1.category.pets,"Get All Pets").setClick(_asyncToGenerator((function*(){util_1._.gameData.pet.forEach((e=>{util_1._.player.kennel.addPet(e.ID.toString(),util_1.VERY_LARGE_NUMBER,26376,100)})),util_1._.player.kennel._encounterInfo._data.pets=[],util_1._.gameData.pet.map((e=>{util_1._.player.kennel._encounterInfo._data.pets.push({firstSeenDate:Date.now(),ID:e.ID,timesBattled:1,timesRescued:1})})),util_1._.player.kennel.petTeam.forEach((e=>{e&&e.assignRandomSpells&&e.assignRandomSpells()})),swal_1.Toast.fire("Success!","All pets have been added!","success")}))),new index_1.Hack(index_1.category.pets,"Get All Legacy Epics").setClick(_asyncToGenerator((function*(){util_1._.gameData.pet.filter((e=>[125,126,127,128,129,130,131,132,133].includes(e.ID))).forEach((e=>{util_1._.player.kennel.addPet(e.ID.toString(),util_1.VERY_LARGE_NUMBER,26376,100)})),util_1._.player.kennel.petTeam.forEach((e=>{e&&e.assignRandomSpells&&e.assignRandomSpells()})),swal_1.Toast.fire("Success!","All legacy epics have been added!","success")}))),new index_1.Hack(index_1.category.pets,"Get All Mythical Epics").setClick(_asyncToGenerator((function*(){util_1._.gameData.pet.filter((e=>[158,166,168].includes(e.ID))).forEach((e=>{util_1._.player.kennel.addPet(e.ID.toString(),util_1.VERY_LARGE_NUMBER,26376,100)})),util_1._.player.kennel.petTeam.forEach((e=>{e&&e.assignRandomSpells&&e.assignRandomSpells()})),swal_1.Toast.fire("Success!","All mythical epics have been added!","success")}))),new index_1.Hack(index_1.category.pets,"Fix Battle Crash").setClick(_asyncToGenerator((function*(){util_1._.player.kennel.petTeam.forEach((e=>{e&&e.assignRandomSpells&&e.assignRandomSpells()})),swal_1.Toast.fire("Success!","Fixed kennel attack bug!","success")}))),new index_1.Hack(index_1.category.pets,"Clear Pets").setClick(_asyncToGenerator((function*(){util_1._.player.kennel.data.length=0,swal_1.Toast.fire("Success!","Your pets have been cleared!","success")}))),new index_1.Hack(index_1.category.pets,"Add Pet","Adds a pet from a list.").setClick(_asyncToGenerator((function*(){var e=yield swal_1.Swal.fire({input:"select",inputOptions:new Map(util_1._.gameData.pet.map((e=>[e.ID.toString(),"".concat(e.ID,": ").concat(e.data.name)]))),title:"Choose Pet",text:"Which pet do you want to obtain?"});void 0!==e.value&&(util_1._.player.kennel.addPet(e.value),util_1._.player.kennel._encounterInfo._data.pets.push({firstSeenDate:Date.now(),ID:e.value,timesBattled:1,timesRescued:1}),swal_1.Toast.fire("Success!","Your chosen pet has been added to your pets!","success"))}))),new index_1.Hack(index_1.category.pets,"Uncap pet level (client side only, doesn't save on reload)","Change your pet's level to anything, even over 100.").setClick(_asyncToGenerator((function*(){var petTeam=util_1._.player.kennel.petTeam.slice(0);petTeam.shift();var names=petTeam.map((e=>e.getName())),pet=yield swal_1.Swal.fire({title:"Which pet would you like to edit?",input:"select",inputOptions:names,inputPlaceholder:"Select...",inputValidator:e=>e?"":"Please select which you'd like to obtain.",showCancelButton:!0}),amt=yield swal_1.NumberInput.fire("Level","What would you like to set your pet's level to? (Can be set over 100)","question");if(amt.value){var num=amt.value;eval("_.player.kennel.petTeam[parseInt(".concat(pet.value,")+1].getLevel = () => {return ").concat(num,"}")),swal_1.Toast.fire("Updated!","The level of your pet was successfully updated.","success")}})));var getPet=function(){var e=_asyncToGenerator((function*(e){return(yield swal_1.Swal.fire({input:"select",inputOptions:new Map(util_1._.player.kennel.data.map(((e,t)=>{var n,o,a;return[t.toString(),"Level ".concat(e.level," - ").concat(null!==(n=null!==(o=e.nickname)&&void 0!==o?o:null===(a=util_1._.gameData.pet.find((t=>+t.ID==+e.ID)))||void 0===a?void 0:a.data.name)&&void 0!==n?n:"Unknown")]}))),title:"Choose Pet",text:e})).value}));return function(t){return e.apply(this,arguments)}}();new index_1.Hack(index_1.category.pets,"Edit Pet (BETA)","Edit a pet.").setClick(_asyncToGenerator((function*(){if((yield swal_1.Confirm.fire({title:"Hang on!",html:"This feature is in beta. Using this could break your account in a specific way. This should be used for experimentation only.

Proceed?",icon:"warning"})).value){var e=yield getPet("Choose the pet to edit.");if(void 0!==e){var t=util_1._.player.kennel.data[e],n=yield swal_1.Swal.fire({input:"select",inputOptions:{level:"Level",attacks:"Attacks",name:"Name"},title:"Edit Property",text:"What do you want to edit?"});if(void 0!==n.value)if("level"===n.value){var o=yield swal_1.NumberInput.fire("Level Number","What level do you want to set your pet to?","question");if(void 0===o.value)return;t.level=+o.value,swal_1.Toast.fire("Success!","The pet's level has been set.","success")}else if("attacks"===n.value){var a=util_1._.gameData.spell,r=document.createElement("div"),s=document.createElement("select");for(var i of(s.classList.add("selectSpell"),a)){var c=document.createElement("option");c.value=i.ID.toString(),c.innerText="".concat(i.ID,": ").concat(i.name," (").concat(i.data.element,") - Damage: ").concat(i.data.damage),s.options.add(c)}r.append(s),r.append(s.cloneNode(!0));var l=yield swal_1.Swal.fire({title:"Attack List",focusConfirm:!1,showCancelButton:!0,html:r,preConfirm:()=>Array.prototype.slice.call(document.querySelectorAll(".selectSpell")).map((e=>e.options[e.selectedIndex].value))});if(void 0===l.value)return;t.foreignSpells.splice(0,2,...l.value.map((e=>+e))),swal_1.Toast.fire("Attacks updated!","The attack list of the pet you selected has been edited.","success")}else if("name"===n.value){var u=yield swal_1.Input.fire("Input Name","What do you want to name the pet?","question");if(void 0===u.value)return;t.nickname=u.value,yield swal_1.Swal.fire("Successfully renamed!","The name of the pet has been changed.","success")}}}}))),new index_1.Hack(index_1.category.pets,"Delete Pet","Delete a pet.").setClick(_asyncToGenerator((function*(){var e=yield getPet("Which pet do you wish to delete?");void 0!==e&&(util_1._.player.kennel.data.splice(e,1),yield swal_1.Swal.fire("Successfully deleted!","The selected pet was deleted successfully.","success"))})))}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),void 0===__WEBPACK_AMD_DEFINE_RESULT__||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)},7939:(module,exports,__webpack_require__)=>{var __webpack_unused_export__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;function asyncGeneratorStep(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function _asyncToGenerator(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var r=e.apply(t,n);function s(e){asyncGeneratorStep(r,o,a,s,i,"next",e)}function i(e){asyncGeneratorStep(r,o,a,s,i,"throw",e)}s(void 0)}))}}__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__,exports,__webpack_require__(4759),__webpack_require__(9820),__webpack_require__(2852)],__WEBPACK_AMD_DEFINE_RESULT__=function(require,exports,swal_1,index_1,util_1){"use strict";__webpack_unused_export__={value:!0},new index_1.Hack(index_1.category.player,"Set Gold").setClick(_asyncToGenerator((function*(){var e=yield swal_1.NumberInput.fire("Gold Amount","What number do you want to set your gold to?","question");if(void 0!==e.value){if(e.value>1e7)return swal_1.Toast.fire("Error","Cannot have more than 10,000,000 gold.","error");util_1._.player.data.gold=+e.value,swal_1.Toast.fire("Success!","You now have ".concat(e.value," gold."),"success")}}))),new index_1.Hack(index_1.category.player,"Set Level").setClick(_asyncToGenerator((function*(){var e=yield swal_1.NumberInput.fire("Level","What number do you want to set your level to?","question");if(void 0!==e.value){if(1===e.value)return 0;var t=e.value-2;util_1._.player.data.stars=Math.round((1-Math.pow(1.042,t))/(1-1.042)*20+10),util_1._.player.data.level=+e.value,util_1._.player.getLevel=()=>util_1._.player.data.level,swal_1.Toast.fire("Success!","You are now level ".concat(e.value,"."),"success")}}))),new index_1.Hack(index_1.category.player,"Get member stars").setClick(_asyncToGenerator((function*(){var e=yield swal_1.NumberInput.fire("Stars","How many member stars do you want?","question");void 0!==e.value&&(util_1._.player.data.storedMemberStars=e.value,swal_1.Toast.fire("Success!","You have set your member stars to ".concat(e.value,"."),"success"))}))),new index_1.Hack(index_1.category.player,"Set Bounty Points").setClick(_asyncToGenerator((function*(){var e=yield swal_1.NumberInput.fire("Bounty Points","What number do you want to set your bounty points to? (Max is 100)","question");void 0!==e.value&&(util_1._.player.data.bountyScore=Math.min(+e.value,100),swal_1.Toast.fire("Success!","You now have ".concat(util_1._.player.data.bountyScore," bounty point").concat(1!=util_1._.player.data.bountyScore?"s":"","."),"success"))}))),new index_1.Hack(index_1.category.player,"Obtain Conjure Cubes").setClick(_asyncToGenerator((function*(){var e=yield swal_1.NumberInput.fire("Conjure Cubes","How many conjure cubes do you want to get? (Max 99)","question");if(void 0!==e.value){for(var t=0;t{util_1._.player.modifiers.damage=1})),new index_1.Hack(index_1.category.player,"PVP Health").setClick(_asyncToGenerator((function*(){util_1._.player.pvpHP=util_1.VERY_LARGE_NUMBER,util_1._.player.getMaxHearts=()=>util_1.VERY_LARGE_NUMBER,swal_1.Toast.fire("Success!","You now have lots of health!","success")}))),new index_1.Toggler(index_1.category.player,"Toggle membership").setEnabled(_asyncToGenerator((function*(){util_1._.instance.prodigy.gameContainer.get(util_1._.player.hasMembership.toString().split('"')[1]).data.membership.active=!0,util_1._.player.appearanceChanged=!0}))).setDisabled((()=>{util_1._.instance.prodigy.gameContainer.get(util_1._.player.hasMembership.toString().split('"')[1]).data.membership.active=!1,util_1._.player.appearanceChanged=!0})),new index_1.Hack(index_1.category.player,"Set name (Client side only)").setClick(_asyncToGenerator((function*(){var e=yield swal_1.Input.fire("What would you like to set your name to?");e.value&&(util_1._.player.getName=()=>e.value,swal_1.Toast.fire("Changed!","Your name was changed."))}))),new index_1.Hack(index_1.category.player,"Change Name","Change the name of your wizard.").setClick(_asyncToGenerator((function*(){var e=util_1._.gameData.name,t=document.createElement("div"),n=(e,t)=>{var n=document.createElement("select");for(var o of(n.classList.add("selectName"),e.entries())){var a=document.createElement("option");[a.value,a.innerText]=o,t(a.value)&&(a.selected=!0),n.options.add(a)}return n},o=(t,o)=>n(new Map(e.filter((e=>e.data.type===t)).map((e=>[e.ID.toString(),e.name]))),(e=>o(+e)));t.append(o(0,(e=>e===util_1._.player.name.data.firstName))),t.append(o(1,(e=>e===util_1._.player.name.data.middleName))),t.append(o(2,(e=>e===util_1._.player.name.data.lastName))),t.append(n(new Map([["null","[none]"]].concat(util_1._.gameData.nickname.map((e=>[e.ID.toString(),e.name])))),(e=>+e===util_1._.player.name.data.nickname||String(util_1._.player.name.data.nickname)===e)));var a=yield swal_1.Swal.fire({title:"Set Player Name",focusConfirm:!1,showCancelButton:!0,html:t,preConfirm:()=>Array.prototype.slice.call(document.querySelectorAll(".selectName")).map((e=>e.options[e.selectedIndex].value))});void 0!==a.value&&("null"===a.value[3]&&(a.value[3]=null),[util_1._.player.name.data.firstName,util_1._.player.name.data.middleName,util_1._.player.name.data.lastName,util_1._.player.name.data.nickname]=a.value.map((e=>e&&+e)),swal_1.Toast.fire("Name Changed!","Your name was successfully changed.","success"))}))),new index_1.Hack(index_1.category.player,"Uncap player level (client side only)").setClick(_asyncToGenerator((function*(){var level=yield swal_1.NumberInput.fire("Level","What would you like to set your level to? (Can be 100+)","question");level.value&&(localStorage.setItem("level",level.value),eval("_.player.getLevel = () => {return ".concat(level.value,"}")),swal_1.Toast.fire("Updated!","Your level has been successfully updated","success"))}))),new index_1.Hack(index_1.category.player,"Get all achievements").setClick(_asyncToGenerator((function*(){for(var e=0;e<100;e++)util_1._.player.achievements.data.progress[e]=10;swal_1.Toast.fire("Success!","Obtained all achievements!","success")}))),new index_1.Hack(index_1.category.player,"Morph Player (DEV)","Morph into a pet, furnishing, or follow.").setClick(_asyncToGenerator((function*(){var e=yield swal_1.Swal.fire({title:"Which morph type?",input:"select",inputOptions:{pet:"Pet",dorm:"Furniture",follow:"Follow"},inputPlaceholder:"Morph Type",inputValidator:e=>e?"":"Please select a morph type.",showCancelButton:!0});if(null!=e&&e.value){var t={};util_1._.gameData[e.value].forEach((e=>t[e.ID]="".concat(e.name," (").concat(e.ID,")")));var n=yield swal_1.Swal.fire({title:"Which morph?",input:"select",inputOptions:t,inputPlaceholder:"Morph ID",inputValidator:e=>e?"":"Please select a morph ID.",showCancelButton:!0});null!=n&&n.value&&(util_1._.player.getPlayerData().playerTransformation={transformType:e.value,transformID:n.value,maxTime:36e5,timeRemaining:36e5},util_1._.player.appearanceChanged=!0,swal_1.Toast.fire("Morphed!","You've been morphed.","success"))}}))),new index_1.Hack(index_1.category.player,"Fix Morph Crash").setClick(_asyncToGenerator((function*(){util_1._.player.getPlayerData().playerTransformation=void 0,util_1._.player.appearanceChanged=!0,swal_1.Toast.fire("Success!","Fixed morph crash bug.","success")}))),new index_1.Hack(index_1.category.player,"Permanent Morph","Makes Your Current Morph Last Forever.").setClick(_asyncToGenerator((function*(){util_1._.player.data.playerTransformation?(util_1._.player.data.playerTransformation.maxTime=1/0,util_1._.player.data.playerTransformation.timeRemaining=1/0,swal_1.Toast.fire("Success!","You're morph will last forever!","success")):yield swal_1.Swal.fire("No Morph Active","Please use a Morph Marble and try again.","error")}))),new index_1.Hack(index_1.category.player,"Complete Current Task In Quest","Completes current task in quest. (Use this button a lot to complete a quest.)").setClick(_asyncToGenerator((function*(){var e={};Object.keys(util_1._.instance.prodigy.world.zones).forEach((t=>{e[t]=util_1._.instance.prodigy.world.zones[t].name}));var t=(yield swal_1.Input.fire({title:"What Quest Do You Want To Complete?",input:"select",inputOptions:e})).value;if(t){var n=util_1._.instance.prodigy.world.zones[t].getCurrentQuestID();util_1._.instance.prodigy.world.zones[t].completeQuest(n)?(util_1._.instance.prodigy.world.goToZoneHub(t),swal_1.Toast.fire("Success!","Completed current task in the ".concat(util_1._.instance.prodigy.world.zones[t].name," quest successfully!"),"success")):swal_1.Toast.fire("Could Not Complete Current Task In Quest.","There was an error completing the quest. Did you already complete it?","error")}}))),new index_1.Hack(index_1.category.player,"Set Dark Tower Floor").setClick(_asyncToGenerator((function*(){var e=yield swal_1.NumberInput.fire({title:"What floor do you want to be on, in the dark tower.",icon:"question",inputValidator:e=>(e>100||e<1)&&"You can only be on floors from 1-100 not ".concat(e)});e.value&&(util_1._.player.data.tower=parseInt(e.value),swal_1.Toast.fire("Success!","Successfully set dark tower floor to ".concat(e,"!"),"success"))}))),new index_1.Hack(index_1.category.player,"Get UserID").setClick(_asyncToGenerator((function*(){swal_1.Swal.fire({title:"User ID",html:"Here is your User ID:
".concat(util_1._.player.userID,"
You can use this for copying your account."),icon:"info"})}))),new index_1.Hack(index_1.category.player,"Copy Account","Copy Account From userID").setClick(_asyncToGenerator((function*(){var e=(yield swal_1.NumberInput.fire("What is the userID of the account you want to copy?",void 0,"question")).value;if(e&&(yield swal_1.Confirm.fire("Are you sure you want to copy the account?","This will replace all data on your account with the account your copying."))){var t=yield(yield fetch("https://api.prodigygame.com/game-api/v2/characters/".concat(e,"?fields=inventory%2Cdata%2CisMember%2Ctutorial%2Cpets%2Cencounters%2Cquests%2Cappearance%2Cequipment%2Chouse%2Cachievements%2Cstate&userID=").concat(util_1._.player.userID),{headers:{Authorization:localStorage.JWT_TOKEN}})).json();yield fetch("https://api.prodigygame.com/game-api/v3/characters/".concat(util_1._.player.userID),{headers:{"Content-Type":"application/json",Authorization:localStorage.JWT_TOKEN},body:JSON.stringify({data:JSON.stringify(t[e]),userID:util_1._.player.userID}),method:"POST"}),swal_1.Toast.fire("Success!","Copied Account Successfully! Please reload.","success")}}))),new index_1.Hack(index_1.category.player,"Set Grade").setClick(_asyncToGenerator((function*(){var e=yield swal_1.NumberInput.fire("What number do you want to set your grade to?");e.value&&(util_1._.player.grade=parseInt(e.value),swal_1.Toast.fire("Success","Successfully changed grade to ".concat(e,"!"),"success"))})))}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),void 0===__WEBPACK_AMD_DEFINE_RESULT__||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)},4474:(module,exports,__webpack_require__)=>{var __webpack_unused_export__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;function asyncGeneratorStep(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function _asyncToGenerator(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var r=e.apply(t,n);function s(e){asyncGeneratorStep(r,o,a,s,i,"next",e)}function i(e){asyncGeneratorStep(r,o,a,s,i,"throw",e)}s(void 0)}))}}__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__,exports,__webpack_require__(4759),__webpack_require__(9820),__webpack_require__(2852)],__WEBPACK_AMD_DEFINE_RESULT__=function(require,exports,swal_1,index_1,util_1){"use strict";__webpack_unused_export__={value:!0},new index_1.Hack(index_1.category.utility,"Save Character Locally","Saves your character locally.").setClick(_asyncToGenerator((function*(){localStorage.setItem("playerData",JSON.stringify(util_1._.player.getUpdatedData(!0))),swal_1.Toast.fire("Success!","Note: Load Character will only work on this device.","success")}))),new index_1.Hack(index_1.category.utility,"Stuck in Unfinished Tower Fix","Takes you out of an unfinished tower if you're stuck in one.").setClick(_asyncToGenerator((function*(){util_1._.instance.prodigy.world.zones.house.teleport("exit"),swal_1.Toast.fire("Success!","You've been teleported outside of your house.","success")}))),new index_1.Hack(index_1.category.utility,"Load local character","Loads your character locally.").setClick(_asyncToGenerator((function*(){if(localStorage.getItem("playerData")){var e=localStorage.getItem("playerData"),t=yield fetch("https://api.prodigygame.com/game-api/v3/characters/".concat(util_1._.player.userID),{headers:{accept:"*/*","accept-language":"en-US,en;q=0.9",authorization:localStorage.JWT_TOKEN,"content-type":"application/json","sec-ch-ua":'" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',"sec-ch-ua-mobile":"?0","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-site"},referrer:"https://play.prodigygame.com/",referrerPolicy:"strict-origin-when-cross-origin",body:JSON.stringify({data:e,userID:util_1._.player.userID}),method:"POST",mode:"cors"});if(!t.ok)return swal_1.Toast.fire("Request failed.","An error occurred while loading the character. Error code: ".concat(t.status),"error");swal_1.Toast.fire("Success!","Character has been successfully loaded. Reload for the changes to take effect.","success")}else swal_1.Toast.fire("Error","No saved character.","error")}))),new index_1.Hack(index_1.category.utility,"Save Character","Helps fix bugs where not all hacks save.").setClick(_asyncToGenerator((function*(){util_1.saveCharacter(),swal_1.Toast.fire("Success!","Your character has been saved!","success")}))),new index_1.Hack(index_1.category.utility,"Close all popups","Closes all popups in Prodigy.").setClick(_asyncToGenerator((function*(){util_1._.instance.prodigy.open.menuCloseAll(),swal_1.Toast.fire("Closed!","All open popups were closed.","success")}))),new index_1.Hack(index_1.category.utility,"Update menu","Updates menu to the latest version without needing to reload.").setClick(_asyncToGenerator((function*(){var _document$getElementB,_document$getElementB2;null===(_document$getElementB=document.getElementById("cheat-menu"))||void 0===_document$getElementB||_document$getElementB.remove(),null===(_document$getElementB2=document.getElementById("menu-toggler"))||void 0===_document$getElementB2||_document$getElementB2.remove(),_asyncToGenerator((function*(){eval(yield(yield fetch("https://raw.githubusercontent.com/Prodigy-Hacking/ProdigyMathGameHacking/HEAD/willsCheatMenu/dist/bundle.js?updated=".concat(Date.now()))).text())}))(),swal_1.Toast.fire("Updated!","Cheat menu was updated.","success")}))),new index_1.Hack(index_1.category.utility,"Disable inactivity kick","Keeps you from being logged out for inactivity.").setClick(_asyncToGenerator((function*(){util_1._.constants.constants["GameConstants.Inactivity.LOG_OUT_TIMER_SECONDS"]=0,swal_1.Toast.fire("Success!","You now will never be logged out!","success")}))),new index_1.Toggler(index_1.category.utility,"Enable menu resize drag (bottom right corner)","Allows you to resize the menu via dragging.").setEnabled(_asyncToGenerator((function*(){document.getElementById("cheat-menu").style.resize="both"}))).setDisabled((()=>{document.getElementById("cheat-menu").style.resize="none",document.getElementById("cheat-menu").style.height=index_1.dimensions.height,document.getElementById("cheat-menu").style.width=index_1.dimensions.width})),new index_1.Hack(index_1.category.utility,"Edit walkspeed").setClick(_asyncToGenerator((function*(){var e=yield swal_1.Input.fire("What do you want to set your walk speed to?");if(e.value){if(util_1._.player._playerContainer)util_1._.player._playerContainer.walkSpeed=parseFloat(e.value)||1.5;else var t=setInterval((()=>{util_1._.player._playerContainer&&(clearInterval(t),util_1._.player._playerContainer.walkSpeed=parseFloat(e.value))}),100);swal_1.Toast.fire("Success!","Successfully made walk speed ".concat(parseFloat(e.value)||1.5,"!"),"success")}})));var teleportingInterval=-1;new index_1.Toggler(index_1.category.utility,"Toggle Click Teleporting").setEnabled(_asyncToGenerator((function*(){teleportingInterval=setInterval((()=>{try{util_1._.player._playerContainer.walkSpeed=500}catch(e){}})),swal_1.Toast.fire("Success!","Successfully enabled teleport click.","success")}))).setDisabled(_asyncToGenerator((function*(){clearInterval(teleportingInterval),util_1._.player._playerContainer.walkSpeed=1.5,swal_1.Toast.fire("Success!","Successfully disabled teleport click.","success")}))),new index_1.Toggler(index_1.category.utility,"Pause Game").setEnabled(_asyncToGenerator((function*(){util_1._.network.game._paused=!0,swal_1.Toast.fire("Success!","Successfully paused Prodigy.","success")}))).setDisabled(_asyncToGenerator((function*(){util_1._.network.game._paused=!1,swal_1.Toast.fire("Success!","Successfully resumed Prodigy.","success")})))}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),void 0===__WEBPACK_AMD_DEFINE_RESULT__||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)},9820:function(e,t,n){var o,a;function r(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function s(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var s=e.apply(t,n);function i(e){r(s,o,a,i,c,"next",e)}function c(e){r(s,o,a,i,c,"throw",e)}i(void 0)}))}}var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};o=[n,t,n(4428),n(2852),n(6455),n(158)],a=function(e,t,n,o,a){"use strict";var r,c,l,u;Object.defineProperty(t,"__esModule",{value:!0}),t.category=t.Toggler=t.Hack=t.addArea=t.toggler=t.wrapper=t.menu=void 0,a=i(a),t.menu=document.createElement("div"),t.wrapper=document.getElementById("game-wrapper"),null===(r=document.getElementById("cheat-menu"))||void 0===r||r.remove(),null===(c=document.getElementById("menu-toggler"))||void 0===c||c.remove(),t.menu.id="cheat-menu",null===(l=t.wrapper)||void 0===l||l.prepend(t.menu),t.toggler=document.createElement("button"),t.toggler.id="menu-toggler",t.toggler.style.fontSize="35px",t.toggler.style.height="35px",t.toggler.style.width="70px";var d=!1;null===(u=t.wrapper)||void 0===u||u.prepend(t.toggler),t.toggler.onclick=()=>{(d=!d)?(t.toggler.innerText="â–¼",t.menu.style.top="-100vh"):(t.toggler.innerText="â–²",t.menu.style.top="")},t.toggler.onclick({});var p=document.createElement("DIV");p.classList.add("menu-left"),t.menu.append(p),t.addArea=e=>{var t=document.createElement("div");t.classList.add("menu-area"),p.append(t);var n=document.createElement("h1");return n.innerText=e,t.append(n),t};var h=document.createElement("h1");h.classList.add("menu-title"),h.innerText="Will's Prodigy Cheat Menu",p.append(h);var f=document.createElement("h2");f.style.fontSize="30px",f.innerHTML="Join our Discord for giveaways, access to new hacks, and notices of hack outages! https://discord.gg/XQDfbfq
Press SHIFT to show/hide the menu.",p.append(f);var m=document.createElement("h3");m.style.fontSize="20px",m.innerHTML='On behalf of ProdigyMathGameHacking. Learn about our mission.\n
\nThis is free and open-source software. If you paid for this or accessed this behind a paywall/AdFly link, demand a refund. If you sell this software, or otherwise make a commercial advantage from it, you are violating Github conduct by not cooperating with our license.',p.append(m);class w{constructor(e,t,n){this.parent=e,this.name="",this.description="",this.element=document.createElement("button"),this.element.classList.add("menu-hack"),this.parent.append(this.element),t&&this.setName(t),n&&this.setDesc(n)}setName(e){return this.element.innerText=e,this.name=e,this}setClick(e){var t=this;return this.element.onclick=s((function*(){yield e(),o.saveCharacter(),console.log("Triggered ".concat(t.name,"."))})),this}setDesc(e){return this.element.title=e,this.description=e,this}}t.Hack=w,t.Toggler=class extends w{constructor(e,t,n){var o;super(e,t,n),o=this,this.parent=e,this.element.setAttribute("status","false"),this.setClick(s((function*(){var e,t;o.status=!o.status,o.status?(localStorage.setItem(o.name,"true"),yield null===(e=o.enabled)||void 0===e?void 0:e.call(o)):(localStorage.setItem(o.name,"false"),yield null===(t=o.disabled)||void 0===t?void 0:t.call(o))})))}get status(){return JSON.parse(this.element.getAttribute("status"))}set status(e){this.element.setAttribute("status",e.toString())}setEnabled(e){return this.enabled=e,"true"===localStorage.getItem(this.name)&&this.element.click(),this}setDisabled(e){return this.disabled=e,this}},t.category={player:t.addArea("Player Hacks"),inventory:t.addArea("Inventory Hacks"),location:t.addArea("Location Hacks"),pets:t.addArea("Pet Hacks"),battle:t.addArea("Battle Hacks"),minigames:t.addArea("Minigames"),misc:t.addArea("Miscellaneous Hacks"),utility:t.addArea("Utility Hacks")},localStorage.hasTip||(s((function*(){a.default.fire({title:"Hey!",html:"To get started with the hacks, click this dropdown!",icon:"info",backdrop:'\n\t\t url("https://i.imgur.com/CdV9piu.png")\n\t\t left top\n\t\t no-repeat\n\t\t'})}))(),localStorage.hasTip=!0),localStorage.getItem("level")&&(o._.player.getLevel=()=>localStorage.getItem("level")),document.addEventListener("keydown",(function(e){"Shift"==e.key&&("block"==document.getElementById("cheat-menu").style.display&&"block"==document.getElementById("menu-toggler").style.display?(document.getElementById("cheat-menu").style.display="none",document.getElementById("menu-toggler").style.display="none"):(document.getElementById("cheat-menu").style.display="block",document.getElementById("menu-toggler").style.display="block"))}))}.apply(t,o),void 0===a||(e.exports=a)},2868:()=>{"use strict";window.addEventListener("keydown",(e=>{}))},4759:function(e,t,n){var o,a,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};o=[n,t,n(6455)],a=function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Confirm=t.Toast=t.NumberInput=t.Input=t.Swal=void 0,n=r(n),t.Swal=n.default,t.Input=t.Swal.mixin({input:"text",showCancelButton:!0,showConfirmButton:!0}),t.NumberInput=t.Input.mixin({input:"number"}),t.Toast=t.Swal.mixin({toast:!0,position:"bottom"}),t.Confirm=t.Swal.mixin({icon:"warning",showCancelButton:!0,confirmButtonText:"Confirm",cancelButtonText:"Cancel"})}.apply(t,o),void 0===a||(e.exports=a)},2852:(e,t,n)=>{var o;o=function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.pickRandom=t.locations=t.joinAsset=t.assetURL=t.saveCharacter=t.states=t.VERY_LARGE_NUMBER=t.getItem=t.gameData=t.prodigy=t.game=t._=void 0,t._=window._;var n=t._.instance;t.game=n.game,t.prodigy=n.prodigy,t.gameData=t._.instance.game.state.states.get("Boot").gameData,t.getItem=(e,n)=>{var o;return null!==(o=t._.gameData[e].find((e=>e.ID===n)))&&void 0!==o?o:null},t.VERY_LARGE_NUMBER=9e9,t.states=Object.fromEntries(t._.instance.game.state.states),t.saveCharacter=()=>{t._.network.processPlayer=!0,t._.player.forceSaveCharacter()},t.assetURL="https://raw.githubusercontent.com/Prodigy-Hacking/ProdigyMathGameHacking/HEAD/willsCheatMenu/src/assets/",t.joinAsset=e=>"".concat(t.assetURL).concat(e),t.locations={academy:t.joinAsset("academy.png"),bonfire_spire:t.joinAsset("bonfire_spire.png"),forest:t.joinAsset("forest.png"),shipwreck_shore:t.joinAsset("shipwreck_shore.png"),shiverchill:t.joinAsset("shiverchill.png"),skywatch:t.joinAsset("skywatch.png"),dyno:t.joinAsset("dyno.png"),elemental_guardian:t.joinAsset("elemental_guardian.png"),darktower:t.joinAsset("darktower.png"),earthtower:t.joinAsset("earthtower.png"),crystal_caverns:t.joinAsset("crystal_caverns.png"),archives:t.joinAsset("archives.png"),house:t.joinAsset("house.png"),toyzone:t.joinAsset("toyzone.png"),tower_town:t.joinAsset("tower_town.png"),lamplight:t.joinAsset("lamplight.png")},t.pickRandom=e=>e[Math.floor(Math.random()*e.length)]}.apply(t,[n,t]),void 0===o||(e.exports=o)},3010:e=>{function t(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}e.exports=t,t.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-n:e+n}return 0|Math.min(e,this.max)},t.prototype.reset=function(){this.attempts=0},t.prototype.setMin=function(e){this.ms=e},t.prototype.setMax=function(e){this.max=e},t.prototype.setJitter=function(e){this.jitter=e}},3704:(e,t)=>{!function(e){"use strict";t.encode=function(t){var n,o=new Uint8Array(t),a=o.length,r="";for(n=0;n>2],r+=e[(3&o[n])<<4|o[n+1]>>4],r+=e[(15&o[n+1])<<2|o[n+2]>>6],r+=e[63&o[n+2]];return a%3==2?r=r.substring(0,r.length-1)+"=":a%3==1&&(r=r.substring(0,r.length-2)+"=="),r},t.decode=function(t){var n,o,a,r,s,i=.75*t.length,c=t.length,l=0;"="===t[t.length-1]&&(i--,"="===t[t.length-2]&&i--);var u=new ArrayBuffer(i),d=new Uint8Array(u);for(n=0;n>4,d[l++]=(15&a)<<4|r>>2,d[l++]=(3&r)<<6|63&s;return u}}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")},8767:e=>{function t(e){if(e)return function(e){for(var n in t.prototype)e[n]=t.prototype[n];return e}(e)}e.exports=t,t.prototype.on=t.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},t.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this},t.prototype.off=t.prototype.removeListener=t.prototype.removeAllListeners=t.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,o=this._callbacks["$"+e];if(!o)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var a=0;a{"use strict";n.d(t,{Z:()=>r});var o=n(3645),a=n.n(o)()((function(e){return e[1]}));a.push([e.id,"@import url(https://fonts.googleapis.com/css?family=Arvo:400,700|Sen:400,700,800&display=swap&subset=latin-ext);"]),a.push([e.id,'#game-wrapper{font-family:"Sen",sans-serif}#game-wrapper #cheat-menu{height:465px;background-color:#eeeb;padding:2px;position:absolute;top:0px;left:0px;transition:top .35s;padding:10px;border:#fffa 2px solid;overflow-y:scroll;resize:vertical;overflow:auto}#game-wrapper .menu-left{width:70%;height:100%;float:left}#game-wrapper #menu-toggler{z-index:1;position:absolute;background-color:#fffb;transition:background-color .15s}#game-wrapper #menu-toggler:hover{background-color:#dddb}#game-wrapper #menu-toggler:active{background-color:#bbbb}#game-wrapper .menu-area h1{font-family:"Sen",sans-serif;font-size:30px;font-weight:700;color:#111;margin:10px}#game-wrapper .menu-area button{background-color:#000;color:#fff;border-radius:5px;border:1px solid #eee;padding:1%;transition:all .15s;margin:5px 5px;transition-property:border-color,background-color}#game-wrapper .menu-area button:hover{border-color:#777d;background-color:#ddd}#game-wrapper .menu-area button:active{border-color:#555;background-color:#bbb}#game-wrapper .menu-area button[status=true]{border-color:#5a5d;background-color:#9bee9b}#game-wrapper .menu-area button[status=true]:hover{border-color:#b3bbb0dd;background-color:#bffebf}#game-wrapper .menu-area button[status=true]:active{border-color:#4e5c50;background-color:#24be6a}#game-wrapper .menu-area button[status=false]{border-color:#766d;background-color:#9b9b9b}#game-wrapper .menu-area button[status=false]:hover{border-color:#858585dd;background-color:#bfbfbf}#game-wrapper .menu-area button[status=false]:active{border-color:#4c3e40;background-color:#be246a}#game-wrapper .menu-title{font-family:"Arvo",sans-serif;font-size:35px;font-weight:900}.radioDiv{width:125px;height:125px;display:inline-block;margin:7px;background-color:#5a7e3f;color:#000;background-size:cover;outline:#000 5px solid;vertical-align:top;font-weight:700;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none;cursor:pointer}.radioDiv:hover{background-blend-mode:overlay;color:#d3d3d3}.radioDiv:active{background-blend-mode:multiply;color:#fff}.radioDiv[checked]{background-blend-mode:color-dodge;color:#ffebcd}.radioDiv[checked]:active{background-blend-mode:color-burn;color:aqua}.radioSwal{width:-webkit-fit-content !important;width:-moz-fit-content !important;width:fit-content !important;min-width:32em !important;max-width:46em !important}',""]);const r=a},3645:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=e(t);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")},t.i=function(e,n,o){"string"==typeof e&&(e=[[null,e,""]]);var a={};if(o)for(var r=0;r{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let o=0,a=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(o++,"%c"===e&&(a=o))})),t.splice(a,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=n(2447)(t);const{formatters:o}=e.exports;o.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},2447:(e,t,n)=>{e.exports=function(e){function t(e){let n,a,r,s=null;function i(...e){if(!i.enabled)return;const o=i,a=Number(new Date),r=a-(n||a);o.diff=r,o.prev=n,o.curr=a,n=a,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let s=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((n,a)=>{if("%%"===n)return"%";s++;const r=t.formatters[a];if("function"==typeof r){const t=e[s];n=r.call(o,t),e.splice(s,1),s--}return n})),t.formatArgs.call(o,e),(o.log||t.log).apply(o,e)}return i.namespace=e,i.useColors=t.useColors(),i.color=t.selectColor(e),i.extend=o,i.destroy=t.destroy,Object.defineProperty(i,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==s?s:(a!==t.namespaces&&(a=t.namespaces,r=t.enabled(e)),r),set:e=>{s=e}}),"function"==typeof t.init&&t.init(i),i}function o(e,n){const o=t(this.namespace+(void 0===n?":":n)+e);return o.log=this.log,o}function a(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(a),...t.skips.map(a).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const o=("string"==typeof e?e:"").split(/[\s,]+/),a=o.length;for(n=0;n{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t{e.exports="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")()},5983:(e,t,n)=>{const o=n(2192);e.exports=(e,t)=>new o(e,t),e.exports.Socket=o,e.exports.protocol=o.protocol,e.exports.Transport=n(6496),e.exports.transports=n(3352),e.exports.parser=n(9743)},2192:(e,t,n)=>{const o=n(3352),a=n(8767),r=n(1227)("engine.io-client:socket"),s=n(9743),i=n(4187),c=n(1830);class l extends a{constructor(e,t={}){super(),e&&"object"==typeof e&&(t=e,e=null),e?(e=i(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=i(t.host).host),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?443:80),this.transports=t.transports||["polling","websocket"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,jsonp:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=c.decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&addEventListener("beforeunload",(()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())}),!1),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close")},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){r('creating transport "%s"',e);const t=function(e){const t={};for(let n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}(this.opts.query);t.EIO=s.protocol,t.transport=e,this.id&&(t.sid=this.id);const n=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return r("options: %j",n),new o[e](n)}open(){let e;if(this.opts.rememberUpgrade&&l.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void setTimeout((()=>{this.emit("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return r("error while creating transport: %s",e),this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){r("setting transport %s",e.name),this.transport&&(r("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(()=>{this.onClose("transport close")}))}probe(e){r('probing transport "%s"',e);let t=this.createTransport(e,{probe:1}),n=!1;l.priorWebsocketSuccess=!1;const o=()=>{n||(r('probe transport "%s" opened',e),t.send([{type:"ping",data:"probe"}]),t.once("packet",(o=>{if(!n)if("pong"===o.type&&"probe"===o.data){if(r('probe transport "%s" pong',e),this.upgrading=!0,this.emit("upgrading",t),!t)return;l.priorWebsocketSuccess="websocket"===t.name,r('pausing current transport "%s"',this.transport.name),this.transport.pause((()=>{n||"closed"!==this.readyState&&(r("changing transport and sending upgrade packet"),d(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emit("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{r('probe transport "%s" failed',e);const n=new Error("probe error");n.transport=t.name,this.emit("upgradeError",n)}})))};function a(){n||(n=!0,d(),t.close(),t=null)}const s=n=>{const o=new Error("probe error: "+n);o.transport=t.name,a(),r('probe transport "%s" failed because of error: %s',e,n),this.emit("upgradeError",o)};function i(){s("transport closed")}function c(){s("socket closed")}function u(e){t&&e.name!==t.name&&(r('"%s" works - aborting "%s"',e.name,t.name),a())}const d=()=>{t.removeListener("open",o),t.removeListener("error",s),t.removeListener("close",i),this.removeListener("close",c),this.removeListener("upgrading",u)};t.once("open",o),t.once("error",s),t.once("close",i),this.once("close",c),this.once("upgrading",u),t.open()}onOpen(){if(r("socket open"),this.readyState="open",l.priorWebsocketSuccess="websocket"===this.transport.name,this.emit("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){r("starting upgrade probes");let e=0;const t=this.upgrades.length;for(;e{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emit("drain"):this.flush()}flush(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(r("flushing %d packets in socket",this.writeBuffer.length),this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emit("flush"))}write(e,t,n){return this.sendPacket("message",e,t,n),this}send(e,t,n){return this.sendPacket("message",e,t,n),this}sendPacket(e,t,n,o){if("function"==typeof t&&(o=t,t=void 0),"function"==typeof n&&(o=n,n=null),"closing"===this.readyState||"closed"===this.readyState)return;(n=n||{}).compress=!1!==n.compress;const a={type:e,data:t,options:n};this.emit("packetCreate",a),this.writeBuffer.push(a),o&&this.once("flush",o),this.flush()}close(){const e=()=>{this.onClose("forced close"),r("socket closing - telling transport to close"),this.transport.close()},t=()=>{this.removeListener("upgrade",t),this.removeListener("upgradeError",t),e()},n=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?n():e()})):this.upgrading?n():e()),this}onError(e){r("socket error %j",e),l.priorWebsocketSuccess=!1,this.emit("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(r('socket close with reason: "%s"',e),clearTimeout(this.pingIntervalTimer),clearTimeout(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&removeEventListener("offline",this.offlineEventListener,!1),this.readyState="closed",this.id=null,this.emit("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let n=0;const o=e.length;for(;n{const o=n(9743),a=n(8767),r=n(1227)("engine.io-client:transport");e.exports=class extends a{constructor(e){super(),this.opts=e,this.query=e.query,this.readyState="",this.socket=e.socket}onError(e,t){const n=new Error(e);return n.type="TransportError",n.description=t,this.emit("error",n),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState?this.write(e):r("transport is not open, discarding packets")}onOpen(){this.readyState="open",this.writable=!0,this.emit("open")}onData(e){const t=o.decodePacket(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){this.emit("packet",e)}onClose(){this.readyState="closed",this.emit("close")}}},3352:(e,t,n)=>{const o=n(2777),a=n(3416),r=n(9785),s=n(4442);t.polling=function(e){let t,n=!1,s=!1;const i=!1!==e.jsonp;if("undefined"!=typeof location){const t="https:"===location.protocol;let o=location.port;o||(o=t?443:80),n=e.hostname!==location.hostname||o!==e.port,s=e.secure!==t}if(e.xdomain=n,e.xscheme=s,t=new o(e),"open"in t&&!e.forceJSONP)return new a(e);if(!i)throw new Error("JSONP disabled");return new r(e)},t.websocket=s},9785:(e,t,n)=>{const o=n(9015),a=n(3549),r=/\n/g,s=/\\n/g;let i;e.exports=class extends o{constructor(e){super(e),this.query=this.query||{},i||(i=a.___eio=a.___eio||[]),this.index=i.length,i.push(this.onData.bind(this)),this.query.j=this.index}get supportsBinary(){return!1}doClose(){this.script&&(this.script.onerror=()=>{},this.script.parentNode.removeChild(this.script),this.script=null),this.form&&(this.form.parentNode.removeChild(this.form),this.form=null,this.iframe=null),super.doClose()}doPoll(){const e=document.createElement("script");this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),e.async=!0,e.src=this.uri(),e.onerror=e=>{this.onError("jsonp poll error",e)};const t=document.getElementsByTagName("script")[0];t?t.parentNode.insertBefore(e,t):(document.head||document.body).appendChild(e),this.script=e,"undefined"!=typeof navigator&&/gecko/i.test(navigator.userAgent)&&setTimeout((function(){const e=document.createElement("iframe");document.body.appendChild(e),document.body.removeChild(e)}),100)}doWrite(e,t){let n;if(!this.form){const e=document.createElement("form"),t=document.createElement("textarea"),n=this.iframeId="eio_iframe_"+this.index;e.className="socketio",e.style.position="absolute",e.style.top="-1000px",e.style.left="-1000px",e.target=n,e.method="POST",e.setAttribute("accept-charset","utf-8"),t.name="d",e.appendChild(t),document.body.appendChild(e),this.form=e,this.area=t}function o(){a(),t()}this.form.action=this.uri();const a=()=>{if(this.iframe)try{this.form.removeChild(this.iframe)}catch(e){this.onError("jsonp polling iframe removal error",e)}try{const e='